Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Mostrar los registros de una consulta a partir de un option

Estas en el tema de Mostrar los registros de una consulta a partir de un option en el foro de Frameworks JS en Foros del Web. Hola, tengo este código en html: Código HTML: <html> <head> </head> <body> <form name = "prueba1"> <select name = "evento"> <option value = "" selected> ...
  #1 (permalink)  
Antiguo 13/01/2009, 08:20
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 16 años, 2 meses
Puntos: 1
Mostrar los registros de una consulta a partir de un option

Hola, tengo este código en html:

Código HTML:
<html>
    <head>
    </head>
    <body>
        <form name = "prueba1">
            <select name = "evento">
	        <option value = "" selected> Selecciona opción...</option>
	        <option value = "opcion1" onClick = "mostrar('uno')"> Opción 1</option>
	        <option value = "opcion2" onClick = "mostrar('dos')"> Opción 2</option>
	        <option value = "opcion3" onClick = "mostrar('tres')"> Opción 3</option>
	        <option value = "opcion4" onClick = "mostrar('cuatro')"> Opción 4</option>
            </select>
        </form>
    </body>
</html> 
Lo que quiero es mostrar (debajo del option no en otra página) el resultado de una consulta sobre una tabla de un servidor MySQL que dependa de la opción seleccionada al seleccionar una opción.

Es decir que:

- Si elijo la opción "uno" se muestre el resultado de la consulta: select * from Tabla where opcion = "uno" debajo del option
- Si elijo la opción "dos" se muestre el resultado de la consulta: select * from Tabla where opcion = "dos" debajo del option
- Si elijo la opción "tres" se muestre el resultado de la consulta: select * from Tabla where opcion = "tres" debajo del option
- Si elijo la opción "cuatro" se muestre el resultado de la consulta: select * from Tabla where opcion = "cuatro" debajo del option

¿Cómo puedo hacerlo?

Última edición por letni; 13/01/2009 a las 09:15
  #2 (permalink)  
Antiguo 13/01/2009, 09:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Mostrar los registros de una consulta a partir de un option

mmm.... ¿sabes Ajax??

la función mostrar() ¿que hace???

en base a esta función se determina como hacer tu consulta.... así, es muy dificil que alguien te programe lo que imaginas....




mejor, revisa este POST ... esta interesante!!

http://www.forosdelweb.com/f127/trae...elects-661660/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/01/2009, 09:41
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Mostrar los registros de una consulta a partir de un option

Cita:
Iniciado por pateketrueke Ver Mensaje
mmm.... ¿sabes Ajax??
No se Ajax.

Cita:
Iniciado por pateketrueke Ver Mensaje
la función mostrar() ¿que hace???
La función mostrar no hace nada de momento pues no se bien cómo llevar a cabo esto que pido.

Teóricamente la función mostrar ha de crear la consulta dependiendo del valor pasado como parámetro, ejecutarla y luego mediante un bucle while debe de ir mostrando los registros.

Por ejemplo:

Código PHP:
<?
function mostrar($Opcion) {
   
$link mysql_connect("localhost""user""0000");
   
mysql_select_db("Prueba"$link);
   
$Select mysql_query("select * from Tabla where opcion = ".$Opcion);
   while (
$Recorre mysql_fetch_array($Select)) {
      echo 
$Recorre['Codigo']; 
   }
}
?>
<html>
    <head>
    </head>
    <body>
        <form name = "prueba1">
            <select name = "evento">
            <option value = "" selected> Selecciona opción...</option>
            <option value = "opcion1" onClick = "mostrar('uno')"> Opción 1</option>
            <option value = "opcion2" onClick = "mostrar('dos')"> Opción 2</option>
            <option value = "opcion3" onClick = "mostrar('tres')"> Opción 3</option>
            <option value = "opcion4" onClick = "mostrar('cuatro')"> Opción 4</option>
            </select>
        </form>
    </body>
</html>
Pero no me funciona, me dice: Error: mostrar is not defined

¿Alguna idea?

Última edición por letni; 13/01/2009 a las 09:52
  #4 (permalink)  
Antiguo 13/01/2009, 09:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Mostrar los registros de una consulta a partir de un option

claro, varias....



el punto, es que la función mostrar() debe ser Javascript...

como te dije, revisando el tema que te sugerí... así esta echo, ahí usando jQuery...

adaptación...
Código javascript:
Ver original
  1. function mostrar() {
  2. var valor =$("#combo1").val();
  3.  
  4. //Invocacion al script php que procesa los datos y le enviamos los valores por POST
  5. $.post("procesa_combos.php", { 'valor': valor}, function(data){
  6. $("#combo2").html(data);
  7. });
  8. }

esto hace la función de tomar el valor del combo, y hacer la consulta con Ajax.. usando el método POST

ahora, en el PHP que recibe esta consulta.. debe ser mas o menos así....


procesa_combos.php
Código PHP:
$where = ! empty($_POST['valor'])? " WHERE foo='$_POST[valor]'"null;

   
$link mysql_connect("localhost""user""0000");
   
mysql_select_db("Prueba"$link);
   
$Select mysql_query("select * from Tabla " $where);
   while (
$Recorre mysql_fetch_array($Select)) {
//      echo $Recorre['Codigo']; 
//
// aquí, es la salida de HTML, XML, JSON o lo que desees
//
// esta salida se usara rellenar el elemento #combo2 de tu HTML
// de preferencia, has lo que quieras...
//
   

y eso es todo, el PHP imprime sus datos... el Ajax los recibe... y los coloca, bingo!


eso es todo lo que puedo hacer por ti, si no entiendes... ve y lee una referencia de Javascript (por que se ve que si sabes PHP)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 13/01/2009, 09:55
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Mostrar los registros de una consulta a partir de un option

Cita:
Iniciado por pateketrueke Ver Mensaje
el punto, es que la función mostrar() debe ser Javascript...
¿No puede ser una función de PHP tal y como lo tengo yo?

Muchas gracias pateketrueke.
  #6 (permalink)  
Antiguo 13/01/2009, 10:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Mostrar los registros de una consulta a partir de un option

nooo... para nada!!!

Javascript se ejecuta en el cliente... y PHP en el servidor !!!

por favor (me retracto) lee una referencia de Javascript y PHP, para que veas las diferencias.... ya que teóricamente, estas muy equivacado...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 13/01/2009, 10:05
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Mostrar los registros de una consulta a partir de un option

Se que Javascript se ejecuta en el cliente y PHP en el servidor, pero al fin y al cabo con ambos puedo declarar e implementar funciones y además PHP me da la posibilidad de acceder a funciones de MySQL por lo que pensé que era mejor usar una función implementada en PHP para mostrar los registros de la consulta.
  #8 (permalink)  
Antiguo 13/01/2009, 10:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Mostrar los registros de una consulta a partir de un option

si, si... tienes razón....

pero por simple sentido común... no puedes usar una función definida para el lenguaje de PHP como si se tratará de lenguaje Javascript (cosas muy aparte) ¿¿entiendes eso???
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 13/01/2009, 10:11
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Mostrar los registros de una consulta a partir de un option

Cita:
Iniciado por pateketrueke Ver Mensaje
no puedes usar una función definida para el lenguaje de PHP como si se tratará de lenguaje Javascript
Código HTML:
<option value = "opcion1" onClick = "mostrar('uno')"> Opción 1</option> 
Creo que sí lo entiendo, ¿quieres decir que en el código anterior la llamada mostrar('uno') en ningún caso puede ser una llamada a una función de PHP?

Si es así entonces el código correcto sería este:

Código HTML:
<script type = "text/javascript" src = "jquery.js">
function mostrar() {
    var valor = $("#combo1").val();
    //Invocacion al script php que procesa los datos y le enviamos los valores por POST
    $.post("procesa_combos.php", { 'valor': valor}, function(data){
                                                        $("#combo2").html(data);
                                                    });
}
</script>
<html>
    <head>
    </head>
    <body>
        <form name = "prueba1">
            <select name = "combo1">
	        <option value = "" selected> Selecciona opción...</option>
	        <option value = "opcion1" onClick = "mostrar('uno')"> Opción 1</option>
	        <option value = "opcion2" onClick = "mostrar('dos')"> Opción 2</option>
	        <option value = "opcion3" onClick = "mostrar('tres')"> Opción 3</option>
	        <option value = "opcion4" onClick = "mostrar('cuatro')"> Opción 4</option>
            </select>
        </form>
    </body>
</html> 
¿Verdad?

Última edición por letni; 13/01/2009 a las 11:24
  #10 (permalink)  
Antiguo 13/01/2009, 10:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Mostrar los registros de una consulta a partir de un option

si, así es... no puedes usar PHP como si fuera Javascript

solo que recuerda que el Javascript debe ir entre <head></head>
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 13/01/2009, 10:27
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Mostrar los registros de una consulta a partir de un option

Cita:
Iniciado por pateketrueke Ver Mensaje
solo que recuerda que el Javascript debe ir entre <head></head>
Es verdad, mi código va tomando forma:

Código HTML:
<html>
    <head>
        <script type = "text/javascript" src = "jquery.js">
            function mostrar() {
                var valor = $("#combo1").val(); 
                //Invocacion al script php que procesa los datos y le enviamos los valores por POST
                $.post("procesa_combos.php", { 'valor': valor}, function(data){
                                                                    $("#combo2").html(data);
                                                                });
            }
        </script>
    </head>
    <body>
        <form name = "prueba1">
            <select name = "combo1">
	        <option value = "" selected> Selecciona opción...</option>
	        <option value = "opcion1" onClick = "mostrar('uno')"> Opción 1</option>
	        <option value = "opcion2" onClick = "mostrar('dos')"> Opción 2</option>
	        <option value = "opcion3" onClick = "mostrar('tres')"> Opción 3</option>
	        <option value = "opcion4" onClick = "mostrar('cuatro')"> Opción 4</option>
            </select>
        </form>
    </body>
</html> 
De todos modos me sigue saliendo el error: Error: mostrar is not defined

¿Qué está mal?

PD: Curiosidad sobre foo y bar.

Última edición por letni; 13/01/2009 a las 11:35
  #12 (permalink)  
Antiguo 13/01/2009, 14:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Mostrar los registros de una consulta a partir de un option

Tema trasladado a AJAX.

No puedes incluir el src="" de un tag <script> y adentro también poner código, necesitas hacerlo por aparte.

Saludos
  #13 (permalink)  
Antiguo 13/01/2009, 14:50
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Mostrar los registros de una consulta a partir de un option

¿Me puedes poner un ejemplo? No te entendí muy bien.

Saludos.
  #14 (permalink)  
Antiguo 13/01/2009, 14:58
 
Fecha de Ingreso: enero-2009
Mensajes: 141
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Mostrar los registros de una consulta a partir de un option

lo que quizo decir es q esto

<script type = "text/javascript" src = "jquery.js">
function mostrar() {
var valor = $("#combo1").val();
//Invocacion al script php que procesa los datos y le enviamos los valores por POST
$.post("procesa_combos.php", { 'valor': valor}, function(data){
$("#combo2").html(data);
});
}
</script> no lo puedes hacer la funcion debes estar desarrollada dentro de el tag y no en la envocacion del mismo crea una pagina dond haces los tag y luego la envocas
por ejemplo una pagina llamada

tag.js
dentro de la misma hace la funcion

function mostrar() {
var valor = $("#combo1").val();
//Invocacion al script php que procesa los datos y le enviamos los valores por POST
$.post("procesa_combos.php", { 'valor': valor}, function(data){
$("#combo2").html(data);
});
}

y luego la llamas en el head de tu html
<script type = "text/javascript" src = "tag.js"></script>

saludos y exito
  #15 (permalink)  
Antiguo 13/01/2009, 15:13
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Mostrar los registros de una consulta a partir de un option

Hola Lego, puse la funcion JavaScript en un archivo a parte llamado libreria.js:

Código Javascript:
Ver original
  1. function mostrar() {
  2.     document.write($("#combo1").val());
  3.     var valor =$("#combo1").val();
  4.     //Invocacion al script php que procesa los datos y le enviamos los valores por POST
  5.     $.post("procesa_combos.php", { 'valor': valor}, function(data){
  6.                                                         $("#combo2").html(data);
  7.                                                     });
  8. }

Código HTML:
<html>
    <head>
        <script type = "text/javascript" src = "jquery.js">
        <script type = "text/javascript" src = "libreria.js">
        </script>
    </head>
    <body>
        <form name = "prueba1">
            <select name = "combo1">
	        <option value = "" selected> Selecciona opción...</option>
	        <option value = "opcion1" onClick = "javascript:mostrar()"> Opción 1</option>
	        <option value = "opcion2" onClick = "javascript:mostrar()"> Opción 2</option>
	        <option value = "opcion3" onClick = "javascript:mostrar()"> Opción 3</option>
	        <option value = "opcion4" onClick = "javascript:mostrar()"> Opción 4</option>
            </select>
        </form>
    </body>
</html> 
Pero me sigue sin funcionar, me sigue saliendo Error: mostrar is not defined.

¿Por qué?

Última edición por letni; 13/01/2009 a las 15:18
  #16 (permalink)  
Antiguo 13/01/2009, 15:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Mostrar los registros de una consulta a partir de un option

Pues no haz cerrado el </script> primero, te recomiendo antes de meterte en cosas más avanzadas, que leas un manual básico de HTML, evita usar <select name = "combo1", no es neceario los espacios extras, usa <select name="combo1".

Por otro lado es mejor usar el evento onchange() del combo en lugar del onclick del option.

Saludos
  #17 (permalink)  
Antiguo 13/01/2009, 15:44
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Mostrar los registros de una consulta a partir de un option

Cita:
Iniciado por GatorV Ver Mensaje
evita usar <select name = "combo1", no es neceario los espacios extras, usa <select name="combo1".
Lo hacía así porque pensaba que era más correcto desde el punto de vista de las reglas de estilo.

Cita:
Iniciado por GatorV Ver Mensaje
Por otro lado es mejor usar el evento onchange() del combo en lugar del onclick del option.
Ahora tengo este código:

libreria.js:

Código Javascript:
Ver original
  1. function mostrar() {
  2.     document.write($("#combo1").val());
  3.     var valor=$("#combo1").val();
  4.     //Invocacion al script php que procesa los datos y le enviamos los valores por POST
  5.     $.post("procesa_combos.php", { 'valor': valor}, function(data){
  6.                                                         $("#combo2").html(data);
  7.                                                     });
  8. }

Código HTML:
<html>
    <head>
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript" src="libreria.js"></script>
    </head>
    <body>
        <form name="prueba1">
            <select OnChange="mostrar()" name="combo1">
	        <option value="" selected> Selecciona opción...</option>
	        <option value="opcion1"> Opción 1</option>
	        <option value="opcion2"> Opción 2</option>
	        <option value="opcion3"> Opción 3</option>
	        <option value="opcion4"> Opción 4</option>
            </select>
        </form>
    </body>
</html> 
Ahora al elegir una opción en el navegador me pone undefined y se queda cargando indefinídamente.

¿Por qué?

Última edición por letni; 13/01/2009 a las 16:05
  #18 (permalink)  
Antiguo 13/01/2009, 19:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Mostrar los registros de una consulta a partir de un option

Ese document.write ahi no te va a servir de mucho, por otro lado ve la documentacion de JQuery, te falta el id de del div donde vas a mostrar los datos, revisa en la documentacion para que aprendas como leer un elemento de un formulario html.

Saludos
  #19 (permalink)  
Antiguo 13/01/2009, 19:58
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Mostrar los registros de una consulta a partir de un option

He estado buscando pero no encuentro un manual que lo explique, puedes darme un enlace a un buen manual de JQuery.

Gracias.
  #20 (permalink)  
Antiguo 13/01/2009, 20:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Mostrar los registros de una consulta a partir de un option

http://docs.jquery.com/

http://docs.jquery.com/Tutorials

Saludos
  #21 (permalink)  
Antiguo 13/01/2009, 20:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Mostrar los registros de una consulta a partir de un option

No lo he probado pero algo asi te serviria:
Código html:
Ver original
  1.     <head>
  2.         <script type="text/javascript" src="jquery.js"></script>
  3.         <script type="text/javascript">
  4.     function mostrar() {
  5.         var valor = $('#combo1').val();
  6.         $.post("procesa.php", {'valor': valor}, function(data){$("#combo2").html(data);});
  7.     }
  8.     </script>
  9.     </head>
  10.     <body>
  11.         <form name="prueba1">
  12.             <select onchange="mostrar();" id="combo1" name="combo1">
  13.             <option value="" selected> Selecciona opción...</option>
  14.             <option value="opcion1"> Opción 1</option>
  15.             <option value="opcion2"> Opción 2</option>
  16.             <option value="opcion3"> Opción 3</option>
  17.             <option value="opcion4"> Opción 4</option>
  18.             </select>
  19.         </form>
  20.     <div id="resultado"></div>
  21.     </body>
  22. </html>

Saludos
  #22 (permalink)  
Antiguo 13/01/2009, 20:47
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Mostrar los registros de una consulta a partir de un option

Mil gracias GatorV, aunque lo he probado y no se redirige a procesa.php.

Este tiene mi mismo problema.

El problema que yo veo aquí es que no se hace todo en la misma página ya que se llama a procesa_combos.php para que muestre el resultado de la consulta y mi control desplegable desaparece y yo lo único que quería es que la información consultada apareciera debajo del desplegable al elegir una de las opciones.

Saludos.

Última edición por letni; 21/01/2009 a las 14:24
  #23 (permalink)  
Antiguo 14/01/2009, 13:53
Avatar de XLogus  
Fecha de Ingreso: noviembre-2008
Ubicación: AQP
Mensajes: 495
Antigüedad: 16 años, 1 mes
Puntos: 19
Respuesta: Mostrar los registros de una consulta a partir de un option

Dale una revisada a este tutorial para crear combos dependientes usando jquery, usa un código muy parecido al que te dió GatorV

http://www.miguelmanchego.com/2009/c...s-ajax-jquery/

En ese ejemplo se usan 3 combos y lo que debe hacer cada combo esta en los archivos combo1.php y combo2.php, para hacerlo funcionar con tu base de datos deberias usar un codigo de conexión similar al que te dió pateketrueke en cada archivo php. ( aunque la forma correcta deberia ser usando includes y una clase pero para que no te enrredes mas, haz la conexion como die pateketrueke )
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 23:41.