Foros del Web » Programando para Internet » PHP »

Listas Encadenadas en PHP

Estas en el tema de Listas Encadenadas en PHP en el foro de PHP en Foros del Web. Hola Alguien conoce una manera sencilla de crear dos listas encadenadas que obtengan ambas sus selects de una base de datos... Muchas gracias...
  #1 (permalink)  
Antiguo 02/02/2005, 09:17
 
Fecha de Ingreso: agosto-2001
Ubicación: Gran Canaria (España)
Mensajes: 430
Antigüedad: 22 años, 8 meses
Puntos: 0
Listas Encadenadas en PHP

Hola

Alguien conoce una manera sencilla de crear dos listas encadenadas que obtengan ambas sus selects de una base de datos...

Muchas gracias

Última edición por daniph; 13/02/2005 a las 08:46
  #2 (permalink)  
Antiguo 02/02/2005, 16:40
 
Fecha de Ingreso: agosto-2001
Ubicación: Gran Canaria (España)
Mensajes: 430
Antigüedad: 22 años, 8 meses
Puntos: 0
Alguien conoce alguna forma, he estado mirando pero no he visto nada al respecto... o no he sabido encontrarlo...

gracias
  #3 (permalink)  
Antiguo 02/02/2005, 16:57
 
Fecha de Ingreso: diciembre-2003
Mensajes: 40
Antigüedad: 20 años, 4 meses
Puntos: 0
To tambien ando detras de ello, pero nada
  #4 (permalink)  
Antiguo 09/02/2005, 09:43
 
Fecha de Ingreso: agosto-2001
Ubicación: Gran Canaria (España)
Mensajes: 430
Antigüedad: 22 años, 8 meses
Puntos: 0
Aun sigo comiendome el coco... no he podido hacer nada...

Alguna ayuda por favor...

Gracias
  #5 (permalink)  
Antiguo 09/02/2005, 10:02
Avatar de newfaq  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 243
Antigüedad: 19 años, 7 meses
Puntos: 0
AHHH

Yo tengo un ejemplo en javascript.....
En Php no se puede hacer ya que no permite el refresh automatico....

Ahi me dicen

Salu2
  #6 (permalink)  
Antiguo 09/02/2005, 10:09
 
Fecha de Ingreso: agosto-2001
Ubicación: Gran Canaria (España)
Mensajes: 430
Antigüedad: 22 años, 8 meses
Puntos: 0
Tengo entendido que si, volcando los resultados en un array... pero la verdad es que no tengo ni idea de como hacerlo...

Gracias
  #7 (permalink)  
Antiguo 09/02/2005, 10:13
Avatar de newfaq  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 243
Antigüedad: 19 años, 7 meses
Puntos: 0
Vos estas hablando de listas dependientes, no?

Intentaste con un IFRAME?

Tenes que asegurarte tambien de tener id's relacionados en ambas tablas de la base de datos para establecer una relacion entre ambos valores de las tablas.

Salu2
  #8 (permalink)  
Antiguo 09/02/2005, 15:22
 
Fecha de Ingreso: agosto-2001
Ubicación: Gran Canaria (España)
Mensajes: 430
Antigüedad: 22 años, 8 meses
Puntos: 0
Vamos a ir por partes:

Primero vamos a llenar dos array con los datos de la base de datos:

Código PHP:
//Llenar array categorias 
    
$cons "SELECT cid, categoria FROM cat";
    
$result mysql_query($cons,$conex);  
     while(list(
$cid$categoria) = mysql_fetch_row($result)) 
     {
     
$categorias[$cid] = $categoria;
     }
     
mysql_free_result($result);
     
//Llenar array subcategorias 
    
$cons "SELECT sid, cid, subcategoria FROM subcat";
    
$result mysql_query($cons,$conex);  
     while(list(
$sid$cid$subcategoria) = mysql_fetch_row($result)) 
     {
     
$subcategorias[$sid] = $subcategoria;
     }
     
mysql_free_result($result); 
Luego dispongo de esta funcion en javascript para que cambien los select
Código PHP:
<script>
function 
CambiaSelect(formu)
{    var 
LaCategoria formu.categorias.selectedIndex
    formu
.subcategoria.length subcategorias[LaCategoria].length
    
for (i=0i<formu.subcategoria.lengthi++)
    {    
formu.subcategoria.options[i].text subcategorias[LaCategoria][i]
    }
}
</script> 
Hasta aqui bien, pero ahora es cuando viene el problema, las variables usadas en php como las uso en javascript... la verdad es que no se si voy bien encaminado...

Gracias

Última edición por daniph; 09/02/2005 a las 15:27
  #9 (permalink)  
Antiguo 09/02/2005, 15:59
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
Yo tengo 2 listas dependientes que trabajan con RemoteScripting (javascript), y para recuperar los datos utilizo php, pueden ver un ejemplo en http://test.buayacorp.com/article, los que quieran el código simplemente envíen un correo.

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #10 (permalink)  
Antiguo 12/02/2005, 07:32
 
Fecha de Ingreso: agosto-2001
Ubicación: Gran Canaria (España)
Mensajes: 430
Antigüedad: 22 años, 8 meses
Puntos: 0
Hola

He conseguido hacerlo de esta manera;

Código PHP:
<html> 
<head> 
<?
include ('../config.inc.php');

//Conexion a la base de datos
$conex mysql_connect($host$user$password);

//Seleccion de la base de datos
mysql_select_db($bd$conex);

$cons "SELECT * FROM elinks_cat";
$result mysql_query($cons,$conex);  
?>
  <script language="JavaScript"> 
    aCateg = new Array();
    aCateg[0] = " ";
    <? 
    $y
=1;    
    while(list(
$cid$categoria) = mysql_fetch_row($result)) 
      {
    
?>
    aCateg[<?= trim($y); ?>] = "<?= trim($categoria); ?>"
    <?
        $y 
$y 1;    
     }
    
?>     
   var aSubcateg0 = new Array( 
                           " " 
                          ); 

<?
//Subcategorias  
    
$cons "SELECT * FROM elinks_cat";
    
$result mysql_query($cons,$conex);      
     while(list(
$cid$categoria) = mysql_fetch_row($result)) 
      {
    
?>
    aSubcateg<?= trim($cid); ?> = new Array();
    aSubcateg<?= trim($cid); ?>[0] = " ";
    <?      
      $cons2 
"SELECT * FROM elinks_subcat WHERE cid = $cid";
      
$result2 mysql_query($cons2,$conex);
      
$z=1;
       while(list(
$sid$cid$subcategoria) = mysql_fetch_row($result2)) 
        {
            
?>
                aSubcateg<?= trim($cid); ?>[<?= trim($sid); ?>] = "<?= trim($subcategoria); ?>"   
            <?
        $z 
$z 1;            
        }    
    
mysql_free_result($result2);
    }
 
mysql_free_result($result);
?>


   /* Arma un arreglo general de estados a partir de los arreglos  */ 
   /* anteriores. Es importante que cada arreglo comience por un   */ 
   /* valor en blanco y que el primer arreglo de ciudades, llamado */ 
   /* aqui aSubcateg0, no contenga ningún elemento.                 */ 
   var aSubcateg = new Array( 
                          aSubcateg0, 
                          aSubcateg1, 
                          aSubcateg2, 
                          aSubcateg3,
                          aSubcateg4,
                          aSubcateg5,
                          aSubcateg6,
                          aSubcateg7,
                          aSubcateg8,
                          aSubcateg9 
                          ); 

   function opcion(oCntrl, iPos, sTxt, sVal){ 
     var selOpcion=new Option(sTxt, sVal); 
         eval(oCntrl.options[iPos]=selOpcion); 
   } 

   function cambia(oMster, oCntrl){ 
    var nSelected = oMster.selectedIndex; 
    while (oCntrl.length) oCntrl.remove(0); 
    for(var i = 0; i < aSubcateg[nSelected].length; i++) 
     opcion(oCntrl,  i, aSubcateg[nSelected][i], String(i)); 
   } 

   function llena(oCntrl){ 
    while (oCntrl.length) oCntrl.remove(0); 
    for(var i = 0; i < aCateg.length; i++) 
         opcion(oCntrl,  i, aCateg[i], String(i));      
   } 

  </script> 
</head> 
<body> 
  <form name="frm"> 
   Pais 
   <select name="categoria" onchange="cambia(this, document.frm.subcategoria)"> 
    <option value=" ">&nbsp;</option> 
   </select> 
   &nbsp;&nbsp;&nbsp; 
   Categoria 
   <select name="subcategoria"> 
    <option value=" ">&nbsp;</option> 
   </select> 
    <input type="submit" value="Enviar" name="B1">   
  </form> 
  <script language="JavaScript"> 
   llena(document.frm.categoria); 
  </script> 
</body> 
</html>
Pero hay un problema, en la lista subcategoria, me aparecen muchos espacios en blanco, entiendo que esas posiciones no estan definidas en los arrays, ¿como podria desaparecer esos espacios?

Gracias
  #11 (permalink)  
Antiguo 13/02/2005, 07:29
 
Fecha de Ingreso: agosto-2001
Ubicación: Gran Canaria (España)
Mensajes: 430
Antigüedad: 22 años, 8 meses
Puntos: 0
Alguien sabe como quitar esos espacios en blanco de los array??

Gracias
  #12 (permalink)  
Antiguo 14/02/2005, 09:00
 
Fecha de Ingreso: agosto-2001
Ubicación: Gran Canaria (España)
Mensajes: 430
Antigüedad: 22 años, 8 meses
Puntos: 0
Alguna ayudita please?

Gracias
  #13 (permalink)  
Antiguo 15/02/2005, 00:26
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
haz probado con simples if's???

if(no_esta_vacio) {imprimelo}

.. solo por curiosidad.. buscas algo como esto??...
http://www.forosdelweb.com/f13/hola-como-genero-drop-down-partir-otro-268405/

... hice otras cosas en otro post... pero extrañamente no lo encuentro .

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #14 (permalink)  
Antiguo 15/02/2005, 04:53
 
Fecha de Ingreso: agosto-2001
Ubicación: Gran Canaria (España)
Mensajes: 430
Antigüedad: 22 años, 8 meses
Puntos: 0
Hola

Gracias por tu respuesta, Si efectivamente lo que habria que poner es un condicional, pero el problema, es que esa posicion no es que este vacia, sino que no esta definida... ¿cual seria esa condicion?
  #15 (permalink)  
Antiguo 15/02/2005, 04:56
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
isset() devuelve true si está definida... puedes verlo en php.net.
Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #16 (permalink)  
Antiguo 15/02/2005, 16:30
 
Fecha de Ingreso: agosto-2001
Ubicación: Gran Canaria (España)
Mensajes: 430
Antigüedad: 22 años, 8 meses
Puntos: 0
Sigo sin conseguir nada.... El problema esta en las funciones
Código PHP:
   function opcion(oCntrliPossTxtsVal){ 
       var 
selOpcion=new Option(sTxtsVal); 
       eval(
oCntrl.options[iPos]=selOpcion); 
   } 

   function 
cambia(oMsteroCntrl){ 
    var 
nSelected oMster.selectedIndex
    while (
oCntrl.lengthoCntrl.remove(0); 
    for(var 
0aSubcateg[nSelected].lengthi++) 
        
opcion(oCntrl,  iaSubcateg[nSelected][i], String(i)); 
         } 

   function 
llena(oCntrl){ 
    while (
oCntrl.lengthoCntrl.remove(0); 
    for(var 
0aCateg.lengthi++) 
         
opcion(oCntrl,  iaCateg[i], String(i));      
   } 
Lo he intentado todo, supuestamente con:

if (aSubcateg[nSelected][i]!=undefined)

Tendria que salir, pero que va... siguen apareciendo esas posiciones no definidas...

Me estoy rompiendo la cabeza....
  #17 (permalink)  
Antiguo 15/02/2005, 20:58
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
perdona pero eso es JavaScript...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #18 (permalink)  
Antiguo 15/02/2005, 21:24
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Si no quieres que se recargue la página... averigua sobre Remote Scripting, como ya te mencionaron antes.
Si no te importa el "refresh", (y así te importe, sería bueno) dale una mirada a esta FAQ:
http://www.forosdelweb.com/showthrea...999#post664999

Saludos
  #19 (permalink)  
Antiguo 16/02/2005, 09:39
 
Fecha de Ingreso: agosto-2001
Ubicación: Gran Canaria (España)
Mensajes: 430
Antigüedad: 22 años, 8 meses
Puntos: 0
Muchas gracias por las respuestas...

Seguire investigando....

Gracias
  #20 (permalink)  
Antiguo 16/02/2005, 14:10
 
Fecha de Ingreso: agosto-2001
Ubicación: Gran Canaria (España)
Mensajes: 430
Antigüedad: 22 años, 8 meses
Puntos: 0
Al final me he decidido por el ejemplo de http://www.ashleyit.com/rs/jsrs/select/php/select.php pero me sobra el ultimo select y estoy dandole vueltas al codigo pero no veo forma de quitarlo... Si alguien lo ha utilizado...

Gracias
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

SíEste tema le ha gustado a 1 personas




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