| |||
consulta y onchage buenas tarde primero que todo .....soy nuevo en el foro y tengo una pequeña duda acerca de una consulta con onchage he buscado en el foro y he visto que dicen que es tema de ajax ,cosa que desconozco totalmente , tengo un textbox con dos botones a los lados los cuales me aumentan y disminuyen el valor de uno en uno,sin embargo quiero que al aumentar o disminuir el valor del text me traiga el valor de la bd en mysql gracias de antemano |
| |||
Respuesta: consulta y onchage No entiendo tu pregunta. ¿Quieres que al aumentar el valor o disminuir el valor de un campo de texto te traiga el qué? Especifica un poco más y pon el código que tengas para hacernos una mejor idea. |
| |||
Respuesta: consulta y onchage Cita: gracias por responder bueno lo que quiero q me traiga es un valor de la consulta // este es el boton menos codigo<input type="button" name="mas" value="-" style="color:red;height:20px; width:20px" onclick="document.getElementById('cantidad').value = parseInt(document.getElementById('cantidad').value ) - 1" title="" /> <input name="cod" type="text" id="cantidad" size="1" value="1"/> producto<input name="producto" type="text" value=" " /> // y este el boton mas <input type="button" name="menos" value="+" style="color:red;height:20px; width:20px" onclick="document.getElementById('cantidad').value = parseInt(document.getElementById('cantidad').value ) + 1" title="" /> digamos que tengo 10 registros de productos y quiero saber el nombre de los mismo ej:el codigo 1 le corresponde a mango asi que si yo en el textbox llamado cod con los botones voy aumentando el numero de codigo asi mismo quiero que en el text producto me valla mostrando el nombre del producto |
| |||
Respuesta: consulta y onchage Ahora si me he enterado. Para usar ajax te recomiendo un framework javascript como JQuery. En esta página está la función que te permitirá realizar lo que quieres: http://api.jquery.com/jQuery.ajax/ Te pongo un ejemplo:
Código Javascript:
Ver original Eso en la parte html. Luego tienes que tener una página php o en otro lenguaje (no se cual utilizas) en la que buscas en la base de datos. |
| |||
Respuesta: consulta y onchage Cita:
Iniciado por alexg88 Ahora si me he enterado. Para usar ajax te recomiendo un framework javascript como JQuery. En esta página está la función que te permitirá realizar lo que quieres: http://api.jquery.com/jQuery.ajax/ Te pongo un ejemplo:
Código Javascript:
Ver original Eso en la parte html. Luego tienes que tener una página php o en otro lenguaje (no se cual utilizas) en la que buscas en la base de datos. uso php ,gracias nuevamente por la pronta respuesta la funcion de ajax se hace sobre el onchage del text? y si es asi en la otra pagina.php donde se hace consulta los campos pasan automaticamente ?o debo usar alguna session para enviar el cod del producto que es con lo que hago la busqueda .gracias |
| |||
Respuesta: consulta y onchage La función ajax envía al servidor un parámetro cod=[valor del textbox] mediante una petición GET. En php usas $GET['cod'] para obtener el parámetro y realizas la búsqueda en la base de datos. Luego devuelves con un echo $producto siendo esta variable el nombre del producto (nada de html, el archivo php tiene que devolver texto plano como se ha indicado en la función $.ajax mediante el parámetro dataType). Utiliza el onchange del input text pero ya que lo tienes puedes usar JQuery.
Código Javascript:
Ver original |
| |||
Respuesta: consulta y onchage Cita: gracias por tu paciencia ... pero he descubierto algo importante los 2 botones que aumentan y disminuyen son tipo "button"y no "submit" quisiera saber si eso influye en tu codigo o puedo seguir normalmente sin embargo lo probare y luego te digo gracias
Iniciado por alexg88 La función ajax envía al servidor un parámetro cod=[valor del textbox] mediante una petición GET. En php usas $GET['cod'] para obtener el parámetro y realizas la búsqueda en la base de datos. Luego devuelves con un echo $producto siendo esta variable el nombre del producto (nada de html, el archivo php tiene que devolver texto plano como se ha indicado en la función $.ajax mediante el parámetro dataType). Utiliza el onchange del input text pero ya que lo tienes puedes usar JQuery.
Código Javascript:
Ver original |
| |||
Respuesta: consulta y onchage Cita: buenas de nuevo ,he estado mirando el enlace que pusistes y me ha sido de gran ayude ,buscando me encontre con un codigo parecido al tuyo asi que decidi inplementarlo ,sin embargo por alguna razon no me funciona.....llevo todo el dia mirando que error tengo pero no lo encuentro ,y cuando ejecuto el pj2 me sale un error diciendo :"Error de lectura XML: declaración de texto o XML en un lugar distinto del principio de la entidadUbicación: http://localhost/prueba/coprom/ej2.php Número de línea 16, columna 1:"<?xml version='1.0' encoding='ISO-8859-1'?><datos><pruducto><![CDATA[]]></producto></datos> ^ pagina 1.php <script language="JavaScript"> function nuevoAjax() { var xmlhttp=false; try { xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch(E) { xmlhttp=false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); } return xmlhttp; } function traerDatos() { var cod=document.getElementById("cod").value; var materia=document.getElementById("producto"); var ajax=nuevoAjax(); ajax.open("POST", "ej2.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("v="+cod); ajax.onreadystatechange=function() { if (ajax.readyState==4) { var respuesta=ajax.responseXML; materia.value=respuesta.getElementsByTagName("prod ucto")[0].childNodes[0].data; } } } </script> codigo<input type="button" name="mas" id="cod" value="-" style="color:red;height:20px; width:20px" onclick= " traerDatos(); document.getElementById('cantidad').value = parseInt(document.getElementById('cantidad').value ) - 1" title="" /> <input name="cod" type="text" id="cantidad" size="1" value="" readonly /> <input type="button" name="menos" value="+" id="cod" style="color:red;height:20px; width:20px" onclick=" traerDatos(); document.getElementById('cantidad').value = parseInt(document.getElementById('cantidad').value ) + 1" title="" "/> pag2.php <?php $v=$_POST["v"]; $conexion=mysql_connect("localhost", "root", "root"); mysql_select_db("COPROM", $conexion); $resultado=mysql_query("SELECT producto FROM t_mat WHERE cod='$v'"); $registro=mysql_fetch_row($resultado); $xml="<?xml version='1.0' encoding='ISO-8859-1'?>"; $xml.="<datos>"; $xml.="<producto><![CDATA[$registro[0]]]></producto>"; $xml.="</datos>"; header("Content-type: text/xml"); echo $xml; ?> sabrias decirme el error que tengo te lo agradeceria enormemente |
| |||
Respuesta: consulta y onchage No entiendo para que quieres ese código si con el que te pase es muchísimo más sencillo realizar una conexión con Ajax. Ese error puede ser de varias cosas, pero estaría bien que especificases que línea es la 16 del código que has pasado. |
| |||
Respuesta: consulta y onchage Cita: de nuevo gracias por tu pronta respuesta la linea donde sale el error es esta $registro=mysql_fetch_row($resultado) use tu codigo pero por alguna razon cuando iva a la pagina 2 no me hacia la consulta alo mejor sea por mi nulo conocimiento en ajax |
| |||
Respuesta: consulta y onchage En la consulta usas $v = $_POST["v"]. Ese parámetro "v" no le veo en tu html por ningun sitio. Sobre lo de que no te funcionaba mi código, habría que ver que hacías en el php para recoger los datos.
Código Javascript:
Ver original En el código se enviaba un parámetro num con el valor del código. En el php lo recogerías:
Código PHP:
Ver original |
| |||
Respuesta: consulta y onchage Cita:
Iniciado por alexg88 En la consulta usas $v = $_POST["v"]. Ese parámetro "v" no le veo en tu html por ningun sitio. Sobre lo de que no te funcionaba mi código, habría que ver que hacías en el php para recoger los datos.
Código Javascript:
Ver original En el código se enviaba un parámetro num con el valor del código. En el php lo recogerías:
Código PHP:
Ver original tenias razon con lo de v sin embargo me gustaria saber que identifica la v si es el value del textbox del cod ...que realmente no se ahora estoy con tu codigo pero no logro traer la consulta alo mejor sea por el get que pones ,ya que estoy manejando todo el formulario con post ..mira <script language="JavaScript"> $.ajax( url: "busqueda_producto.php", dataType: 'text', data: {num: $('input[name="cod"]').val()}, success: function traerDatos(datos){ $('input[name="producto"]').val(datos);} ); </script> <form name='formulario' id="form1" method='post' > codigo<input type="button" name="mas" id="v" value="-" style="color:red;height:20px; width:20px" onclick= " traerDatos(); document.getElementById('cod').value = parseInt(document.getElementById('cod').value) - 1" title="" /> <input name="cod" type="text" id="cod" size="1" value="<?php //obtener un nuevo valor mysql_connect("localhost", "root","root"); mysql_select_db("COPROM"); $sql = "select max(cod) as cod from t_mat"; // das otro nombre al campo resultado $lib = mysql_query($sql); $rs_lib = mysql_fetch_assoc($lib); $ide_lib_nuevo = $rs_lib['cod'] ; $v=$rs_lib['cod'] ; echo $v;?>" readonly /> //en el text box del codigo busco el ultimo codigo registrado <input type="button" name="menos" value="+" id="v" style="color:red;height:20px; width:20px" onclick=" traerDatos(); document.getElementById('cod').value = parseInt(document.getElementById('cod').value) + 1" title="" /> <br> <br> <br> ....etc materia<input name="materia" type="text" id="materia" value=" " /> busqueda_producto.php <?php $num = $_POST["num"]; $conexion=mysql_connect("localhost", "root", "root"); mysql_select_db("COPROM", $conexion); $resultado=mysql_query("SELECT materia FROM t_mat WHERE cod=".$num); $registro=mysql_fetch_row($resultado); echo $registro["materia"]; ?> |
| |||
Respuesta: consulta y onchage Estás liando las cosas. Primero la v no tiene sentido. Tienes los botones con el más y el menos con el id = v, lo cual no deberías porque un id es único para una página. Cuando intentas hacer $_POST['v'] estás intentado recoger un parámetro llamado v. Los parámetros en los formularios se identifican por el name, no por el id. Aun así, el formulario en este caso solo sirve para contener los input, en realidad no se manda nunca porque se realiza una petición al servidor mediante AJAX (es decir, sin recargar la página). Yo utilizo $_GET porque con la función $.ajax lo estoy mandando como una petición GET no como POST (da igual el formulario). Lo que deberías hacer es no mezclar todos los códigos y probar un poco más con el que te pase. Para mirar los errores que pueden dar puedes utilizar el complemento Firebug de Firefox que te permite ver el HTML, CSS, javascript y las peticiones HTTP (incluida las de AJAX) para ver si se pasan bien los parámetros al servidor. Por último, he visto que has puesto una función TraerDatos en los botones más o menos. En vez de eso deberías aprovechar JQuery y utilizar el evento change con el campo de texto donde cambia el código. Por ejemplo:
Código Javascript:
Ver original |
| |||
Respuesta: consulta y onchage Cita: tienes toda la razon con lo de la id a lo mejor me confundi con la id que tiene que tener el textbox del codigo ahora solo estoy haciendo pruebas con tu codigo tal cual como lo hicistes con el firebug activado sin embargo tengo una duda del onchage que debe tener el text box para validar el script muchas gracias por el empeño en ayudarme
Iniciado por alexg88 Estás liando las cosas. Primero la v no tiene sentido. Tienes los botones con el más y el menos con el id = v, lo cual no deberías porque un id es único para una página. Cuando intentas hacer $_POST['v'] estás intentado recoger un parámetro llamado v. Los parámetros en los formularios se identifican por el name, no por el id. Aun así, el formulario en este caso solo sirve para contener los input, en realidad no se manda nunca porque se realiza una petición al servidor mediante AJAX (es decir, sin recargar la página). Yo utilizo $_GET porque con la función $.ajax lo estoy mandando como una petición GET no como POST (da igual el formulario). Lo que deberías hacer es no mezclar todos los códigos y probar un poco más con el que te pase. Para mirar los errores que pueden dar puedes utilizar el complemento Firebug de Firefox que te permite ver el HTML, CSS, javascript y las peticiones HTTP (incluida las de AJAX) para ver si se pasan bien los parámetros al servidor. Por último, he visto que has puesto una función TraerDatos en los botones más o menos. En vez de eso deberías aprovechar JQuery y utilizar el evento change con el campo de texto donde cambia el código. Por ejemplo:
Código Javascript:
Ver original |
| |||
Respuesta: consulta y onchage Es muy sencillo lo del change. Lo que hace es que cuando cambia el valor del campo de texto, se ejecuta la función encarga de realizar la petición ajax y recoger los datos. |
| |||
Respuesta: consulta y onchage Cita: gracias por la respuesta y la explicacion .....creo que todo esta bn menos el onchage que tengo en el text no se si lo estoy declarando bien debe ser error mio de nuevo=_=<input name="cod" type="text" id="cantidad" size="1" value="<?php //obtener un nuevo valor mysql_connect("localhost", "root","root"); mysql_select_db("COPROM"); $sql = "select max(cod) as cod from t_mat"; $lib = mysql_query($sql); $rs_lib = mysql_fetch_assoc($lib); $ide_lib_nuevo = $rs_lib['cod'] ; echo $ide_lib_nuevo;?>" onChange="function(this);" readonly /> onChange="function(this);" <------ esta parte esta mal cierto? |
| |||
Respuesta: consulta y onchage Esto:
Código Javascript:
Ver original No se que función será function, pero si podría estar bien depende de como se esa función. Pero de todas maneras, no te hace falta esa parte que dices si utilizas lo que te he puesto yo.
Código Javascript:
Ver original Ahí ya estás controlando el evento change si te fijas bien. |
| |||
Respuesta: consulta y onchage Cita:
Iniciado por alexg88 Esto:
Código Javascript:
Ver original No se que función será function, pero si podría estar bien depende de como se esa función. Pero de todas maneras, no te hace falta esa parte que dices si utilizas lo que te he puesto yo.
Código Javascript:
Ver original Ahí ya estás controlando el evento change si te fijas bien. gracias por la aclaracion pensaba que necesitaba el onchage en el textbox .....pero veo que no, minimo ya debes estar cansado de responderme ...o y te pido disculpas por eso sin embargo en el buscar_producto.php me sale un error : Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in linea 23 mas exacatamente aqui $registro=mysql_fetch_row($resultado); sin embargo depure la consulta con el or die(mysql_error()); y me tira este error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 aqui el codigo de la pagina buscar_producto.php <?php error_reporting(E_ERROR | E_WARNING | E_PARSE); $num = $_GET["num"]; $conexion=mysql_connect("localhost", "root", "root"); mysql_select_db("COPROM", $conexion) or die ("Verifique la Base de Datos"); $resultado=mysql_query("SELECT producto FROM t_mat WHERE cod=".$num)or die(mysql_error()); $registro=mysql_fetch_row($resultado); echo $registro["producto"]; ?> de nuevo gracias por tu colaboracion |
| |||
Respuesta: consulta y onchage la tabla solo tiene 2 campos cod y producto ; el nombre de la tabla es t_mat de la base de datos COPROM ,aproposito he estado investigando sobre ajax y la verdad no se si necesito una libreria de ajax o no hace falta con tu codigo ...... estoy algo enredado con eso y si se necesita la libreria no se como llamarla gracias de antemano |
| |||
Respuesta: consulta y onchage Mira con el firebug si el parámetro num se envía bien al servidor. Puedes poner un echo $num para verlo en el php también. Luego cambia la función mysql_fetch_row por mysql_fetch_assoc porque la primera es para crear un array de índices numéricos y la segunda un array asociativo (que es lo que necesitas para poder hacer $registro["producto"].
Código PHP:
Ver original |
| |||
Respuesta: consulta y onchage Cita: al ejecutarlo sale este error en la linea 37
Iniciado por alexg88 Mira con el firebug si el parámetro num se envía bien al servidor. Puedes poner un echo $num para verlo en el php también. Luego cambia la función mysql_fetch_row por mysql_fetch_assoc porque la primera es para crear un array de índices numéricos y la segunda un array asociativo (que es lo que necesitas para poder hacer $registro["producto"].
Código PHP:
Ver original Parse error: syntax error, unexpected ',', expecting ')' in 37 $resultado=mysql_query(,$conexion) or die(mysql_error()); arriba de esta le puse un ., que le faltaba pero no veo el error |
| |||
Respuesta: consulta y onchage |
| |||
Respuesta: consulta y onchage Ya he visto los errores. Me había equivocado. El evento change sólo se dispara cuando cambias el valor mediante el teclado, no mediante javascript. Por eso, tendrás que asignar los eventos click de los botones + y -.
Código Javascript:
Ver original En el html ponle el id="mas" al botón más y id="menos" al botón menos para referirte a ellos en el javascript.
Código HTML:
Ver original |
| |||
Respuesta: consulta y onchage Cita: el codigo cambio pero me sigue saliendo lo mismo de mi anterior mensaje si quieres paso el codigo tal cual como lo tengo aca
Iniciado por alexg88 Ya he visto los errores. Me había equivocado. El evento change sólo se dispara cuando cambias el valor mediante el teclado, no mediante javascript. Por eso, tendrás que asignar los eventos click de los botones + y -.
Código Javascript:
Ver original En el html ponle el id="mas" al botón más y id="menos" al botón menos para referirte a ellos en el javascript.
Código HTML:
Ver original |
| |||
Respuesta: consulta y onchage Cita: ok vale
Código Javascript:
Ver original
Código HTML:
Ver original buscar_producto.php
Código PHP:
Ver original ese es el codigo que tengo aca |
| |||
Respuesta: consulta y onchage Creo que el único problema que tienes es que en la consulta en vez de productos pones pruductos. Lo demás está todo perfecto. Para darte el toque perfecto yo haría que al principio también te apareciese el producto del cual estás mostrando el código.
Código HTML:
Ver original |
Etiquetas: |