Foros del Web » Programando para Internet » PHP »

combox dependientes y utilizar opción elegida

Estas en el tema de combox dependientes y utilizar opción elegida en el foro de PHP en Foros del Web. Hola a tod@s. Después de muchos sudores, he conseguido hacer mi página php que contiene 5 combox dependientes de una base de datos mysql. El ...
  #1 (permalink)  
Antiguo 13/09/2010, 06:49
 
Fecha de Ingreso: mayo-2009
Mensajes: 10
Antigüedad: 14 años, 11 meses
Puntos: 0
combox dependientes y utilizar opción elegida

Hola a tod@s.

Después de muchos sudores, he conseguido hacer mi página php que contiene 5 combox dependientes de una base de datos mysql.
El problema es que lo que necesito es que los valores que ha elegido el usuario en cada combo, lo pueda después utilizar para mostrar una imagen en concreto (en la ruta/nombre de la imagen se encuentran los valores seleccionados por el usuario).

Por ejemplo:

/home/tmp/user/grupo_$valor/imagen_$mes.jpg

Con lo cual, si pudiera de alguna manera pasar el valor de los combox a algo del estilo:
Código HTML:
Ver original
  1. <input type=button value="imagen elegida" onclick="/home/tmp/user/grupo_$valor/imagen_$mes.jpg">

He conseguido a través de esta función:

Código html:
Ver original
  1. function dimePropiedades(){
  2.     var texto;
  3.     texto = "El numero de opciones del select: " + document.formulario.combo2.length;  
  4.     var indice = document.formulario.combo2.selectedIndex;
  5.     texto += "\nIndice de la opcion escogida: " + indice;
  6.     var valor = document.formulario.combo2.options[indice].value;
  7.     texto += "\nValor de la opcion escogida: " + valor;
  8.     var textoEscogido = document.formulario.combo2.options[indice].text;
  9.     texto += "\nTexto de la opcion escogida: " + textoEscogido;
  10.     alert(texto);
  11.     }
  12.  
que me de los valores en un alert. Esto lo podría hacer para cada combo, pero no se como pasarlo a php para poder crear una ruta variable.

Si alguien me puede echar una mano, se lo agradecería y si tengo que pegar más código para que se entienda mejor, basta con decirlo.

Muchas gracias
  #2 (permalink)  
Antiguo 14/09/2010, 01:29
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: combox dependientes y utilizar opción elegida

Hola
bueno, necesitas usar javascript para, en cada combo,
agregar un evento onChange que haga un location.href
a esta misma página

y luego en esta página, recibes por get cada valor seleccionado

Código PHP:
$combo2 $_GET['combo2']; 
valida que si no tiene valor cada parámetro $_GET,
le des alguno por defecto (que será una imagen por defecto que
podrías mostrar para cada opción)

si quieres hacerlo sin recargar la página, te recomiendo
ajax o jquery, pero no se que conocimientos tengas de eso

bueno, te di un esbozo, ahora a investigar
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 14/09/2010, 01:54
 
Fecha de Ingreso: mayo-2009
Mensajes: 10
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: combox dependientes y utilizar opción elegida

Los combos los tengo creados por
Código Javascript:
Ver original
  1. <script language="javascript">
  2. $(document).ready(function(){
  3.     // Parametros para e combo1
  4.    $("#combo1").change(function () {
  5.         $("#combo1 option:selected").each(function () {
  6.             //alert($(this).val());
  7.                 elegido=$(this).val();
  8.                 $.post("combo1.php", { elegido: elegido }, function(data){
  9.                 $("#combo2").html(data);
  10.                 $("#combo3").html("");
  11.                 $("#combo4").html("");
  12.                 $("#combo5").html("");
  13.             });        
  14.         });
  15.    })
  16.  
  17. ...

Utilizando jquery. Voy a buscar información sobre lo que me has comentado y a ver si consigo sacar algo en claro.
Muchas gracias
  #4 (permalink)  
Antiguo 14/09/2010, 02:31
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: combox dependientes y utilizar opción elegida

Cita:
Iniciado por kekaes Ver Mensaje
Los combos los tengo creados por
Código Javascript:
Ver original
  1. <script language="javascript">
  2. $(document).ready(function(){
  3.     // Parametros para e combo1
  4.    $("#combo1").change(function () {
  5.            $("#combo1 option:selected").each(function () {
  6.             //alert($(this).val());
  7.                 elegido=$(this).val();
  8.                 $.post("combo1.php", { elegido: elegido }, function(data){
  9.                 $("#combo2").html(data);
  10.                 $("#combo3").html("");
  11.                 $("#combo4").html("");
  12.                 $("#combo5").html("");
  13.             });            
  14.         });
  15.    })
  16.  
  17. ...

Utilizando jquery. Voy a buscar información sobre lo que me has comentado y a ver si consigo sacar algo en claro.
Muchas gracias
ha perfecto, el código se ve bien, como tienes combo1.php?
yo usaria una página combo.php genérica, y dependiendo
del valor de elegido, allá hago que se haga consulta a una u
otra tabla si no es siempre a la misma, esto para no usar varios
php sino uno solo

espero te sirva la idea
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 14/09/2010, 03:48
 
Fecha de Ingreso: mayo-2009
Mensajes: 10
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: combox dependientes y utilizar opción elegida

Pues la pagina combo1.php sería así:

Código PHP:
Ver original
  1. <?php
  2. include("includes/config.inc.php");
  3. include("includes/mysql.class.php");
  4. $db = new MySQL();  
  5. $db->open();
  6. $consulta = $db->consulta("SELECT * FROM ANNO WHERE id_tipo LIKE '$_POST[elegido]'");   //SELECT columna FROM tabla WHERE nombre de columna LIKE texto_a_buscar
  7. echo '<option value="0">Elija año</option>';   
  8. if ($row = $db->fetch_array($consulta)) {
  9.     do {
  10.         echo
  11.         '<option value="'.$row['id_anno'].'">'.$row['anno'].'</option>';
  12.     }while($row = $db->fetch_array($consulta));
  13.  
  14. }
  15. ?>

La combo2.php

Código PHP:
Ver original
  1. <?php
  2. include("includes/config.inc.php");
  3. include("includes/mysql.class.php");
  4. $db = new MySQL();  
  5. $db->open();
  6. $consulta = $db->consulta("SELECT * FROM MES WHERE id_anno LIKE '$_POST[elegido2]'");   //SELECT columna FROM tabla WHERE nombre de columna LIKE texto_a_buscar
  7. echo '<option value="0">Elija mes</option>';
  8. if ($row = $db->fetch_array($consulta)) {
  9.     do {
  10.         echo
  11.         '<option value="'.$row['id_mes'].'">'.$row['mes'].'</option>';
  12.     }while($row = $db->fetch_array($consulta));
  13. }
  14. ?>

Las tengo por serparado porque como soy muy novata en esto, lo veo más intuitivo y si hago pequeñas modificaciones, es más fácil saber donde he podido meter la pata.

He conseguido a través de .$_POST[combo1], saber el índice de la opción que se ha elegido pero no consigo que me de el nombre exacto de la elección.
A seguir investigando...
  #6 (permalink)  
Antiguo 14/09/2010, 09:26
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: combox dependientes y utilizar opción elegida

Cita:
Iniciado por kekaes Ver Mensaje
Pues la pagina combo1.php sería así:

Código PHP:
Ver original
  1. <?php
  2. include("includes/config.inc.php");
  3. include("includes/mysql.class.php");
  4. $db = new MySQL();  
  5. $db->open();
  6. $consulta = $db->consulta("SELECT * FROM ANNO WHERE id_tipo LIKE '$_POST[elegido]'");    //SELECT columna FROM tabla WHERE nombre de columna LIKE texto_a_buscar
  7. echo '<option value="0">Elija año</option>';    
  8. if ($row = $db->fetch_array($consulta)) {
  9.     do {
  10.         echo
  11.         '<option value="'.$row['id_anno'].'">'.$row['anno'].'</option>';
  12.     }while($row = $db->fetch_array($consulta));
  13.  
  14. }
  15. ?>

La combo2.php

Código PHP:
Ver original
  1. <?php
  2. include("includes/config.inc.php");
  3. include("includes/mysql.class.php");
  4. $db = new MySQL();  
  5. $db->open();
  6. $consulta = $db->consulta("SELECT * FROM MES WHERE id_anno LIKE '$_POST[elegido2]'");    //SELECT columna FROM tabla WHERE nombre de columna LIKE texto_a_buscar
  7. echo '<option value="0">Elija mes</option>';
  8. if ($row = $db->fetch_array($consulta)) {
  9.     do {
  10.         echo
  11.         '<option value="'.$row['id_mes'].'">'.$row['mes'].'</option>';
  12.     }while($row = $db->fetch_array($consulta));
  13. }
  14. ?>

Las tengo por serparado porque como soy muy novata en esto, lo veo más intuitivo y si hago pequeñas modificaciones, es más fácil saber donde he podido meter la pata.

He conseguido a través de .$_POST[combo1], saber el índice de la opción que se ha elegido pero no consigo que me de el nombre exacto de la elección.
A seguir investigando...
bueno, pues para ser novata vas bien
ahora, yo decía por ej tener una página genérica donde
dependiendo del combo que has enviado, haga una consulta distinta
y a su vez los campos a mostrar sean distintos

ej

Código PHP:
Ver original
  1. <?php
  2. include("includes/config.inc.php");
  3. include("includes/mysql.class.php");
  4. $db = new MySQL();  
  5. $db->open();
  6. //pregunto cual es el combo
  7. if( array_key_exists ('elegido',$_POST))
  8. {
  9. $table = 'ANNO';
  10. $field = 'id_tipo LIKE \'$_POST["elegido"]\''; //si da error de sintaxis, es por uso de comillas, no lo he probado, escribi al "vuelo" aquí en foros, revisaria concatenación y eso
  11. $row0 = 'id_anno';
  12. $row1 = 'anno';
  13. }
  14. else if( array_key_exists('elegido2',$_POST) )
  15. {
  16. $table = 'MES';
  17. $field = 'id_anno LIKE \'$_POST["elegido2"]\'';
  18. $row0 = 'id_mes';
  19. $row1 = 'mes';
  20. }
  21. $consulta = $db->consulta("SELECT * FROM ".$table." WHERE ".$field);    
  22. echo '<option value="0">Elija mes</option>';
  23. if ($row = $db->fetch_array($consulta)) {
  24.     do {
  25.         echo
  26.         '<option value="'.$row[$row0].'">'.$row[$row1].'</option>';
  27.     }while($row = $db->fetch_array($consulta));
  28. }
  29. ?>

de este modo, si necesitas otros combos, pues agregas más else if
modificando los datos y de resto, debería funcionarte de una vez

en cuanto a lo que dices que ya recuperas el value del select, pero no el label,
tal vez jquery tenga alguna propiedad para recuperar dicho valor,
y si no es así, entonces haz lo siguiente

crea en el formulario un campo tipo hidden y llamalo "combo_label",
y luego por javascript o jquery, en el evento onChange del combo
en el que estas trabajando, le dices que combo_label.value sea igual
al texto del combo, algo así

Código Javascript:
Ver original
  1. combo_label.value = elegido.options[elegido.selectedIndex].text;
y luego para pasar ese parámetro en la función jquery que ya
tienes, le pasas el valor de combo_label
prueba y comentas
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: combox, dependientes, utilidades
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 11:31.