Foros del Web » Programando para Internet » PHP »

ejecutar php desde javascript/html??

Estas en el tema de ejecutar php desde javascript/html?? en el foro de PHP en Foros del Web. Hola a todos, mi duda es la siguiente: tengo una pagina html en la que quiero mostrar una serie de datos que recojo de la ...

  #1 (permalink)  
Antiguo 01/03/2010, 12:30
 
Fecha de Ingreso: noviembre-2009
Mensajes: 59
Antigüedad: 14 años, 5 meses
Puntos: 0
ejecutar php desde javascript/html??

Hola a todos, mi duda es la siguiente:
tengo una pagina html en la que quiero mostrar una serie de datos que recojo de la base de datos(a traves de consultas en php) como muestro estos datos en html??es decir,como mezclo php para mostrarlo en html,o llamar desde javascript a esas funciones php...
Soy nueva en esto,gracias de antemano...
  #2 (permalink)  
Antiguo 01/03/2010, 12:32
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: ejecutar php desde javascript/html??

Si quieres hacerlo usando javascript, tienes que aprender a usar AJAX. Te sugiero que leas sobre el tema para que puedas lograrlo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 01/03/2010, 12:39
 
Fecha de Ingreso: noviembre-2009
Mensajes: 59
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: ejecutar php desde javascript/html??

y con ajax puedo llamar a php desde javascript entonces?
gracias por la rapidez
  #4 (permalink)  
Antiguo 01/03/2010, 12:41
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: ejecutar php desde javascript/html??

cuando tu solicitas una página en html al servidor, este devuelve el código tal cual al navegador y este lo interpreta, cuando usas php lo que hace el servidor al solicitarcele una página, ejecuta todo el código php para convertirlo en texto y luego enviarlo al navegador para que lo interprete, es decir, a tu equipo nunca llega código php solo html y javascript que ese es ejecutado en tu navegador no en el servidor.

en resumen, tienes que hacer tu consulta y con los datos obtenidos creas tu <table></table> o como desees mostrarlo y luego haces un echo o print para indicarle al servidor que ya puede enviarlo al navegador.

espero y te sirva, saludos.

Editado:
si eres nueva como dices, creo que el ajax sería para despues ya que tengas un poco de control sobre el php y javascript.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #5 (permalink)  
Antiguo 01/03/2010, 12:42
 
Fecha de Ingreso: noviembre-2009
Mensajes: 59
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: ejecutar php desde javascript/html??

y q es mejor?ajax o hacerlo a traves de echo escribiendo la tabla,,??
  #6 (permalink)  
Antiguo 01/03/2010, 12:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: ejecutar php desde javascript/html??

Te sugiero que leas sobre AJAX, es una tecnica de javascript, mira por ejemplo este lugar para que tengas una idea http://w3schools.com/ajax/default.asp
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 01/03/2010, 12:58
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: ejecutar php desde javascript/html??

voy de nuevo, el html ayuda al php a mostrar los resultados en el navegador, suponiendo que tienes un archivo llamado
hola.php
Código PHP:
Ver original
  1. <html>
  2. <head>
  3. <title>hola</title>
  4. </head>
  5. <body>
  6. <?php
  7. //parte de php
  8. for($i=0; $i<=2; $++){
  9. echo 'Hola laura, ¿como estas?<br />';
  10. }
  11. ?>
  12. </body>
  13. </html>
en raelidad lo que obtiene tu navegador es esto:
Código HTML:
Ver original
  1. <title>hola</title>
  2. </head>
  3. Hola laura, ¿como estas?<br />Hola laura, ¿como estas?<br />Hola laura, ¿como estas?<br>
  4. </body>
  5. </html>
como te darás cuenta, recibes html puro, ni un rastro de php.

insisto para lo que necesitas no requiere de ajax, no digo que el ajax no sea la solución, pero para los que recién inician, al menos yo, no recomiendo comenzar con ello.

suerte y saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #8 (permalink)  
Antiguo 01/03/2010, 13:00
 
Fecha de Ingreso: marzo-2010
Mensajes: 7
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: ejecutar php desde javascript/html??

Con el InnerHTML de javascript tambien puedes hacer algo pero es muy chapucero, te aconsejo mirarte bien AJAX :)
  #9 (permalink)  
Antiguo 01/03/2010, 13:09
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: ejecutar php desde javascript/html??

@eits, tienes razón que se puede hacer así, pero el título dice ejecutar PHP desde javascript, por lo tanto la forma de lograrlo con javascript es usando AJAX
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 01/03/2010, 13:21
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: ejecutar php desde javascript/html??

tienes toda la razón abimaelrc, pero te marco en la pregunta que hace nuestra amiga, por lo cual yo propongo que lo haga de esta manera.

Cita:
Iniciado por laurita23 Ver Mensaje
Hola a todos, mi duda es la siguiente:
tengo una pagina html en la que quiero mostrar una serie de datos que recojo de la base de datos(a traves de consultas en php) como muestro estos datos en html??es decir,como mezclo php para mostrarlo en html,o llamar desde javascript a esas funciones php...
Soy nueva en esto,gracias de antemano...
al principio quise decirle que lo haga por ajax con solo leer el título, pero leyendo la pregunta mas a fondo, me atreví a pensar que lo que necesita es algo mas básico, como, tener su conexion, hacer su consulta y el while para mostrar sus datos, no mas, pero hay nuestra amiga que decida.

suerte a laurita23, saludos y un abrazo amigo abimaelrc.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #11 (permalink)  
Antiguo 01/03/2010, 13:42
 
Fecha de Ingreso: noviembre-2009
Mensajes: 59
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: ejecutar php desde javascript/html??

gracias a todos por contestar
probare con los dos..os welvo a contar por si no me e explicado bien, lo que quiero es que segun se habra una pagina este recargada con datos que se cogen de la base de datos.decia desde js porque si llamara a una funcion js al cargarse la pagina y esta ejecutara php staria resuelto
lo q tng entendido de ajax es que no hace falta recargar o como?si cambiara mi bd no tendria q recargar para mostrar los datos correctos??
  #12 (permalink)  
Antiguo 01/03/2010, 16:53
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: ejecutar php desde javascript/html??

pon el código que tienes para ir apoyandote.

el ajax trabaja de una forma asincronica es decir en un segundo plano, cuando se menciona que no necesitas recargar se refiere a toda la página, pero si a parte de ella, a demás, trabaja a base de eventos, cuando hagas un onclick, un onchange o algun otro evento se hace la conexión asincrónica con el servidor para hacer la solicitud, si tu cambias algo en tu bd tendría que ocurrir un evento al cual tengas relacionado que cuando esto pase se muestre la informarción que hay en tu bd, tambien puedes decir que lo verifique cada cierto tiempo, pero el inconveniente es, que estarías haciendo trabajar mas a tu servidor cada cierto tiempo tratando de saber si la bd a cambiado aunque este no tenga modificaión.

espero no confundirte, no soy bueno para esto de las explicaciones

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #13 (permalink)  
Antiguo 02/03/2010, 01:44
Avatar de JoseAlejandro_Realza  
Fecha de Ingreso: agosto-2008
Ubicación: Maracay - Venezuela
Mensajes: 192
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: ejecutar php desde javascript/html??

Si quieres utilizar Ajax para llamadas asincronicas es algo muy sencillo, acá te dejo un código de ejemplo para que lo pruebas y lo modifiques según sea conveniente:

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="es">   

 <head>  

  <title>Aprendiendo Ajax</title>  

</head>  

<script language="javascript"  type="text/javascript">  

  var RequestObject = false;   

  var Archivo = 'datos.php'; //archivo php de donde extraeremos los datos   

  window.setInterval("actualizar_datos()", 2000); // cada cuando tiempo se actualizara la información  

  if (window.XMLHttpRequest)  
   RequestObject = new XMLHttpRequest();  
      if (window.ActiveXObject)     
       RequestObject = new ActiveXObject("Microsoft.XMLHTTP");  
        function ReqChange() {   
              if (RequestObject.readyState==4) {  
                     if (RequestObject.responseText.indexOf('invalid') == -1)   
                     {     
                  var msgs = RequestObject.responseText.split('|');  
             // Aca sera el Div donde agregaras la información Nueva 
             document.getElementById("Datos").innerHTML = msgs[0];  
             }  
               else {   
              document.getElementById("Datos").innerHTML = "No se pude extraer la información";  
              }  
            }  
          }  


     function actualizar_datos() {  

         document.getElementById("Datos").innerHTML = "";  
           RequestObject.open("GET", Archivo , true);  
            RequestObject.onreadystatechange = ReqChange;     
           RequestObject.send(null);   
      }  


    function actualizar_datos() {  
    cargar_datos();  
    }  
</script>  

<body onload="cargar_datos();">  

<div class="ver_datos">Datos Almacenados</div>

  <div id="Datos"></div>  

</body>  

</html> 
Saludos
__________________
Tu Guía Empresarial http://www.empresarial.org.ve Soluciones Empresariales

Atte: José Alejandro Realza
  #14 (permalink)  
Antiguo 02/03/2010, 13:16
 
Fecha de Ingreso: noviembre-2009
Mensajes: 59
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: ejecutar php desde javascript/html??

como seria el php?develve los valores con echo???
  #15 (permalink)  
Antiguo 02/03/2010, 14:00
 
Fecha de Ingreso: noviembre-2009
Mensajes: 59
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: ejecutar php desde javascript/html??

ayuda porfavor nose si tengo bien el php
  #16 (permalink)  
Antiguo 02/03/2010, 14:03
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: ejecutar php desde javascript/html??

Cita:
Iniciado por laurita23 Ver Mensaje
como seria el php?develve los valores con echo???
, lo que recibe el xmlhttprequest (el AJAX) es la salida del script php, eso mismo te devolverá responseText
  #17 (permalink)  
Antiguo 02/03/2010, 14:08
 
Fecha de Ingreso: noviembre-2009
Mensajes: 59
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: ejecutar php desde javascript/html??

os pego el codigo, en relaidad es en xml,pero no hay problema no?:
<Content type="html">
<![CDATA[


<script type="text/javascript" src="carga13.js"></script>

<script type="text/javascript">
cargar_datos();
</script>

<div id="contenido"></div>


en js tengo:
function cargar_datos() {

fAjax('carga_foros3.php','','contenido ');

}

function creaAjax(){
var objetoAjax=false;
try {
/*Para navegadores distintos a internet explorer*/
objetoAjax = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
/*Para explorer*/
objetoAjax = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E) {
objetoAjax = false;
}
}

if (!objetoAjax && typeof XMLHttpRequest!='undefined') {
objetoAjax = new XMLHttpRequest();
}
return objetoAjax;
}

function fAjax(archivo,vars,divid){
ajax = creaAjax();/*tu objeto ajax*/
myRand = parseInt(Math.random()*999999999999999);
var modurl = archivo +"?rand=" + myRand + vars;
ajax.open("GET", modurl, true);
ajax.onreadystatechange = function() {
if (ajax.readyState==1) {
document.getElementById(divid).innerHTML='...carga ndo';
}
else if (ajax.readyState==4){
document.getElementById(divid).innerHTML=ajax.resp onseText;
}
}
ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
ajax.send(null);
return
}

y el php:
//conexión a la BD
$link=conectar_bd();


$sql="SELECT * FROM foros";
$result =enviar_consulta($sql);
while($registro = obtener_resultado($result)){
echo '<p>'.$registro['nombre']."-".$registro['fecha']."</p>";
}



//desconexion BD
desconectar_bd($link);


ALGO ME FALLA PORQUE NO ME MUESTRA NADA!!!!!Y ESTOY PERDIDA.....
  #18 (permalink)  
Antiguo 02/03/2010, 14:15
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: ejecutar php desde javascript/html??

veo que NO estas usando XML porque la parte de php no devuelve sino html, para devolver XML necesitas forzar el header XML.
pero en fin, con lo que tienes debería funcionar, pero revisa esta linea:

document.getElementById(divid).innerHTML=ajax.resp onseText;

debería ser con comillas, por ello el javascript no se ejecuta:

document.getElementById('divid').innerHTML=ajax.resp onseText;

y revisa, porque tienes varios de esos errores
  #19 (permalink)  
Antiguo 02/03/2010, 14:17
 
Fecha de Ingreso: noviembre-2009
Mensajes: 59
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: ejecutar php desde javascript/html??

es que divid es una variable que paso,que ya esta definida con comillas cuando llamo a la funcion fAjax
  #20 (permalink)  
Antiguo 02/03/2010, 14:21
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: ejecutar php desde javascript/html??

yo y mi cabeza..... falta revisar el status!!!!!!!:

else if(ajax.readyState==4){
if (ajax.status==200){ //(200 en protocolo HTTP es igual a OK)
document.getElementById(divid).innerHTML=ajax.resp onseText;
}
}

Última edición por maycolalvarez; 02/03/2010 a las 14:28
  #21 (permalink)  
Antiguo 02/03/2010, 14:32
 
Fecha de Ingreso: noviembre-2009
Mensajes: 59
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: ejecutar php desde javascript/html??

pf----no entiendo nada.me devuelve esto: <HTML>
<HEAD>
<TITLE>Not Found</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Not Found</H1>
<H2>Error 404</H2>
</BODY>
</HTML>,el caso es q se mete varias veces en la funcion ajax.onreadystatechange y sempre me saca eso raro..que es???
  #22 (permalink)  
Antiguo 02/03/2010, 14:33
 
Fecha de Ingreso: noviembre-2009
Mensajes: 59
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: ejecutar php desde javascript/html??

el php si me devuelve lo que quiero,lo he ejecutado por separado
  #23 (permalink)  
Antiguo 02/03/2010, 14:35
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: ejecutar php desde javascript/html??

veo que por lo menos ya te devuelve algo, bueno, lo que pasa es que responseText devuelve como tal toda la salida del servidor, en este caso un HTML completo.

el error 404 es que el archivo del servidor no lo consigue, revisa bien la linea a ver que esta solicitando:

var modurl = archivo +"?rand=" + myRand + vars; //¿que tiene archivo?
  #24 (permalink)  
Antiguo 02/03/2010, 14:39
 
Fecha de Ingreso: noviembre-2009
Mensajes: 59
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: ejecutar php desde javascript/html??

si yo en el php no devuelvo tags de html,mira exalo un vistazo arriba donde pegue el codigo,q esta tb pegado el de php
es muy raro...xq lo q m devuelve no se parece en nada alo q quiero
puede q se este liando por html.xml?
  #25 (permalink)  
Antiguo 02/03/2010, 14:42
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: ejecutar php desde javascript/html??

te explico de nuevo:
var modurl = archivo +"?rand=" + myRand + vars;
¿que tiene la variable archivo?: nombre_archivo.php o nombre_archivo.xml

la extensión XML no la interpreta PHP, debe de configurarse en apache para hacerlo.

postea mejor el archivo de php para ver que tienes¿?¿?¿?
  #26 (permalink)  
Antiguo 02/03/2010, 14:43
 
Fecha de Ingreso: noviembre-2009
Mensajes: 59
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: ejecutar php desde javascript/html??

asrchivo es mi archivo php
  #27 (permalink)  
Antiguo 02/03/2010, 14:46
 
Fecha de Ingreso: noviembre-2009
Mensajes: 59
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: ejecutar php desde javascript/html??

function fAjax(archivo,vars,divid){
alert('alla');
ajax = creaAjax();/*tu objeto ajax*/
myRand = parseInt(Math.random()*999999999999999);
var modurl = archivo +"?rand=" + myRand + vars;
ajax.open("GET", modurl, true);
ajax.onreadystatechange = function() {
alert('aqui');
if (ajax.readyState==1) {
document.getElementById(divid).innerHTML='...carga ndo';
}
else if (ajax.readyState==4){
if (ajax.status==200){ //(200 en protocolo HTTP es igual a OK)
alert(ajax.responseText);
document.getElementById(divid).innerHTML=ajax.resp onseText;
//document.getElementById(divid).innerHTML="hola";
}
else{
alert('mal');
}
}
}
ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
ajax.send(null);
return
}

he incluido los siguientes alert,y me salta el alert mal,osea que no me coge status=200 pero si state=4,y aunq la llamo una vez,se mete varias veces en esto,pfffffff
gracias por ayudarme de verdad
  #28 (permalink)  
Antiguo 02/03/2010, 14:47
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: ejecutar php desde javascript/html??

no toma el estatus 200, porque te devuelve el 404

el error es claro, el archivo no se encuentra (HTTP 404), y es por 2 razones:

el archivo no existe

la url (modurl) en el ajax esta mal ¿estas escapando bien los valores, creo que hace falta usar escape ahí?

Última edición por maycolalvarez; 02/03/2010 a las 15:01
  #29 (permalink)  
Antiguo 02/03/2010, 14:57
 
Fecha de Ingreso: noviembre-2009
Mensajes: 59
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: ejecutar php desde javascript/html??

pues si q existe....y coge bien la url en la funcion,porq mas puede ser???y porq se mete varias veces en la funcion onreadystatechange????
  #30 (permalink)  
Antiguo 02/03/2010, 15:00
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: ejecutar php desde javascript/html??

entonces el problema es que la url tenga caracteres NO escapados, debes revisar eso, has un alert(modurl); para ver que tiene, lo mas probable es que tengas que usar escape en la variable vars o en ciertas partes

http://www.w3schools.com/jsref/jsref_escape.asp

onreadystatechange siempre va a ser llamada dependiendo de el resultado del objeto xmlhttprequest, es por ello que se filtra readystate y status siempre

Etiquetas: ejecutar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:25.