• Jueves 14 de Noviembre de 2024, 04:19

Autor Tema:  AJAX y PHP en campos de formulario  (Leído 4735 veces)

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
AJAX y PHP en campos de formulario
« en: Miércoles 14 de Octubre de 2009, 18:08 »
0
Hola chicos de SoloCodigo, tengo una consulta como siempre, la vaina es que tengo un código que genera unos campos en forma dinámica por medio de AJAX, pero estos son datos que se guardarán por medio de un <form>, ósea, estoy generando con AJAX datos que contienen un campo de texto para introducir cantidades; la vaina es que como esto es en si dinámico al introducir la cantidad y darle al boton guardar no lo toma, y es que de por si ese código generado no existe dentro del código de la página.

Alguna idea???
El pasado son solo recuerdos, el futuro son solo sueños

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: AJAX y PHP en campos de formulario
« Respuesta #1 en: Miércoles 14 de Octubre de 2009, 20:42 »
0
Cómo que no existe... Si el navegador te lo muestra entonces sí existe. Otra cosa es que la sintaxis sea errónea. De todas formas no entendí bien qué estás haciendo y cuál es tu problema. ¿Algún ejemplo para mostrar?.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: AJAX y PHP en campos de formulario
« Respuesta #2 en: Miércoles 14 de Octubre de 2009, 20:59 »
0
Genera un dato con AJAX y dale Ver Código Fuente a la página y veras que esos datos no existen.
El pasado son solo recuerdos, el futuro son solo sueños

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: AJAX y PHP en campos de formulario
« Respuesta #3 en: Miércoles 14 de Octubre de 2009, 21:44 »
0
El todopoderoso firebug te ayuda muchisimo para depurar cuando introduces formularios con AJAX... Hace mucho tiempo, tuve un problema similar, nos podrías ilustrar cómo estas introduciendo los nuevos campos en el formulario ?? Probablemente estés cometiendo el mismo error
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: AJAX y PHP en campos de formulario
« Respuesta #4 en: Miércoles 14 de Octubre de 2009, 21:51 »
0
Este es mi form
Código: Text
  1. <form name='frmsearch'>
  2.   <table border='1' cellpading='1' cellspacing='1' class='reference'>
  3.     <tr>
  4.       <th class='letratd' align='center'><b>SEARCH ITEM</b></th>
  5.     </tr>
  6.     <tr>
  7.        <td class='letratd' align='center'>
  8.          <input type='text' id='search' size='14' onkeyup='buscar(this.value, ".$_SESSION['cliente'].")'>
  9.        </td>
  10.     </tr>
  11.     </table>
  12. </form>
  13.  
Mi código JavaScript
Código: Text
  1. var xmlhttp;
  2.  
  3. //Esta función crea el objeto ajax
  4. function GetXmlHttpObject()
  5. {
  6.   if (window.XMLHttpRequest)
  7.   {
  8.     // code for IE7+, Firefox, Chrome, Opera, Safari
  9.     return new XMLHttpRequest();
  10.   }
  11.   if (window.ActiveXObject)
  12.   {
  13.     // code for IE6, IE5
  14.     return new ActiveXObject("Microsoft.XMLHTTP");
  15.   }
  16.   return null;
  17. }
  18.  
  19. /*********AJAX PARA BÚSQUEDA*********************/
  20. function buscar(referencia, cliente)
  21. {
  22.   if (referencia.length==0)
  23.   {
  24.     document.getElementById("buscar").innerHTML="";
  25.     document.getElementById("buscar").style.border="0px";
  26.     return;
  27.   }
  28.   xmlhttp=GetXmlHttpObject()
  29.   if (xmlhttp==null)
  30.   {
  31.     alert ("Your browser does not support XML HTTP Request");
  32.     return;
  33.   }
  34.   var url="js/ajax.php";
  35.   url=url+"?funcion=3&referencia="+referencia+"&cliente="+cliente;
  36.   xmlhttp.onreadystatechange=function cambiar()
  37.     {
  38.       if (xmlhttp.readyState==4)
  39.       {
  40.         document.getElementById("buscar").innerHTML=xmlhttp.responseText;
  41.         document.getElementById("buscar").style.border="0px solid #A5ACB2";
  42.       }
  43.     }
  44.  
  45.   xmlhttp.open("GET",url,true);
  46.   xmlhttp.send(null);
  47. }
  48. /*********************HASTA ACA***********************/
  49.  
Y mi código PHP que retornará la consulta más los campos de texto.
Código: PHP
  1. switch($_GET['funcion'])
  2. {
  3.   case 1:
  4.          orden($_GET['cliente'], $_GET['q'], $sql);
  5.          break;
  6.   case 2:
  7.          principal($_GET['estado'], $_GET['sucursal'], $_GET['cliente'], $sql);
  8.          break;
  9.   case 3:
  10.          buscar($_GET['cliente'], $_GET['referencia'], $sql);
  11.          break;
  12. }
  13.  
  14. /*
  15.  * Mostrará el item que se le pase por referencia para ser escogido
  16.  * @param string $cliente     El cliente conectado
  17.  * @param string $referencia  Referencia del sistema UNO del item
  18.  * @param string $sql       sql query
  19.  */
  20. function buscar($cliente, $referencia, $sql)
  21. {
  22.   $arrayTabla = array('IMAGE', 'REFERENCE', 'ITEM', 'CODE');
  23.  
  24.   $queryt = 'SELECT itm.imagen AS '.$arrayTabla[0].', itm.referencia AS '.$arrayTabla[1].',
  25.                     itm.descripcion AS '.$arrayTabla[2].', itm.codigo AS '.$arrayTabla[3].'
  26.             FROM tbdym_items AS itm, tbdym_lista_precios_items AS lstitm
  27.             WHERE itm.imagen!="" AND itm.categoria_id="1" AND lstitm.item_id=itm.id AND lstitm.precio!=""
  28.                   AND lstitm.lista_id="1" AND itm.referencia LIKE "'.$referencia.'%" AND itm.codigo LIKE "%-%"
  29.             GROUP BY itm.codigo LIMIT 0, 12';
  30.  
  31.   $tabla = $sql->tablaImagenTexto($queryt, $arrayTabla);
  32.   echo $tabla[1];
  33. }
  34.  
Y sobre esta capa imprimo la información
Código: Text
  1. <div id='buscar'></div>
  2.  
El pasado son solo recuerdos, el futuro son solo sueños

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: AJAX y PHP en campos de formulario
« Respuesta #5 en: Jueves 15 de Octubre de 2009, 18:44 »
0
Cita de: "Edo"
Genera un dato con AJAX y dale Ver Código Fuente a la página y veras que esos datos no existen.
Claro, pero el navegador los saca de la nada, solo para confundir al desarrollador xD. Que no esté en el código fuente no significa que no exista.

A propósito del código que has posteado:
Código: Text
  1.  
  2. <input type='text' id='search' size='14' onkeyup='buscar(this.value, ".$_SESSION['cliente'].")'>
  3.  
  4.  
$_SESSION['cliente'] es una variable de PHP pero la estás incrustando en el código HTML sin más. ¿No habrás querido poner algo así?:
Código: Text
  1.  
  2. <input type='text' id='search' size='14' onkeyup='buscar(this.value, "<?=$_SESSION['cliente']?>")'>
  3.  
  4.  

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: AJAX y PHP en campos de formulario
« Respuesta #6 en: Jueves 15 de Octubre de 2009, 19:03 »
0
Es que esa parte de código está dentro de un echo, ósea, es código PHP, pero no tiene nada que ver con el error.
El pasado son solo recuerdos, el futuro son solo sueños

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: AJAX y PHP en campos de formulario
« Respuesta #7 en: Jueves 15 de Octubre de 2009, 20:59 »
0
Cita de: "Edo"
Y sobre esta capa imprimo la información
Código: Text
  1. <div id='buscar'></div>
  2.  

De casualidad el botón que dices que usas para buscar está por fuera de ese div ?? Mejor dicho, tienes metido ese div dentro de otro formulario ??  

Y desviándome un poquito del tema para satisfacer mi curiosidad; si no me equivoco, el campo de texto que generas dinámicamente tiene el evento onkeyup para autocompletar el texto que el usuario está introduciendo, no es así ?? :whistling:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: AJAX y PHP en campos de formulario
« Respuesta #8 en: Jueves 15 de Octubre de 2009, 21:03 »
0
No existe botón buscar, ya que todo funciona con keyup.
Sí, el div está dentro de un formulario que es el que al final guarda el dato.
El campo de texto que se genera dinámicamente no tiene el evento ya que es un dato que primero se consulta para después introducirle los datos y guardarlos en una tabla.
El pasado son solo recuerdos, el futuro son solo sueños

JrcsDev

  • Miembro MUY activo
  • ***
  • Mensajes: 245
  • Nacionalidad: ve
    • Ver Perfil
    • http://codigo7.wordpress.com/
Re: AJAX y PHP en campos de formulario
« Respuesta #9 en: Sábado 24 de Octubre de 2009, 23:18 »
0
Edo, el código <div id='buscar'></div> debe ir dentro de tu <form></form>, y alli dentro con ajax generas el input, select o cualquier objeto que quieras... Así deberia funcionar... la función de ajax que uso es similar a la tuya, pero se ve más sencilla. Si todavia tienes el mismo problema, avísame o pásame el código tal como lo tienes en el archivo, para darte una ayuda
Sígueme en Twitter]
Donar comida a los chicos necesitados!
Todo lo puedo en Cristo que me fortalece...

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: AJAX y PHP en campos de formulario
« Respuesta #10 en: Lunes 26 de Octubre de 2009, 14:28 »
0
No funciona ,claro que tengo la capa dentro del formulario, pero no me toma los datos.

Gracias
El pasado son solo recuerdos, el futuro son solo sueños

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: AJAX y PHP en campos de formulario
« Respuesta #11 en: Jueves 29 de Octubre de 2009, 03:53 »
0
Sinceramente, estoy bastante perdido con tu problema Ed...

En el div "buscar", pones el form "frmsearch" ?? En ese caso, sobra poner el div dentro de un formulario, ya que estarías creando formularios anidados. Si no es así, al menos habrás captado lo que intento decirte (no pongas un form dentro de otro form).

Y te recuerdo que el poderoso firebug es especial para depurar este tipo de problemas.... o si tienes el chome (como yo), están las opciones para desarrolladores, la consola Javascript es tan útil como el firebug :good:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: AJAX y PHP en campos de formulario
« Respuesta #12 en: Jueves 29 de Octubre de 2009, 13:44 »
0
Te voy a envíar el código por mail, por que no pudé por acá.
El pasado son solo recuerdos, el futuro son solo sueños

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: AJAX y PHP en campos de formulario
« Respuesta #13 en: Jueves 29 de Octubre de 2009, 14:35 »
0
Apenas pueda, lo reviso. Por ahora voy a instalar mysql; acabo de darme cuenta de que solo tengo el postgres instalado :nosweat:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: AJAX y PHP en campos de formulario
« Respuesta #14 en: Lunes 2 de Noviembre de 2009, 03:26 »
0
Bueno, ya revisé el código (generar.php) y me he dado cuenta de algo:

El HTML que genera para el formulario en cuestión (entre las líneas 166 y 200) queda mal formado; abres la etiqueta <form> antes de abrir una tabla (es la que tiene el submit "Add to bag", llamemosla B ), que está dentro de otra (llamemosla A), luego cierras ambas tablas, pones el div donde va el contenido dinámico y cierras el <form>; el navegador lo traduce cerrando el <form> antes de cerrar A, por lo que el div dinámico queda por fuera del formulario.

Creo que ese es el problema, no he sacado mucho tiempo de hacer buenas pruebas, pero por lo menos espero que te oriente un poco (si es que todavía tenes con el problema).

:suerte:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas