Foros del Web » Programando para Internet » PHP »

relacionar dos select

Estas en el tema de relacionar dos select en el foro de PHP en Foros del Web. hola a todos! por medio de este código levanto los datos de una tabla para un select. Código PHP: <select name=" <?php  echo  $campo ?> ">             <option value="0">-</option> ...
  #1 (permalink)  
Antiguo 09/04/2012, 20:14
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
relacionar dos select

hola a todos!

por medio de este código levanto los datos de una tabla para un select.

Código PHP:
<select name="<?php echo $campo ?>">
            <option value="0">-</option>
            <?php
            $conn 
DataBase::getInstance();
                
$rel=false;
                
$relacion='_'.$campo;
                
$conn->setQuery('SELECT * FROM `_'.$campo.'` ORDER BY id ASC');
                if (
$conn->len()==0){
                    
$rel=true;
                    
$relacion=$campo;
                    
$conn->setQuery('SELECT * FROM `'.$campo.'` ORDER BY id ASC');
                }
                if (
$conn->len()==0){
                    
$rel=true;
                    
$relacion=$campo.'s';
                    
$conn->setQuery('SELECT * FROM `'.$campo.'s` ORDER BY id ASC');
                }
                if (
$conn->len()>0){
                
$rs $conn->loadObjectList();
                foreach(
$rs as $valor){?>
                <option value="<?php echo $valor->id ?>"><?php echo $valor->titulo ?></option>
                <?php 
                
}}?>
                </select>
pero no se como puedo hacer para que al elegir un select por ejemplo de categorias quede en otro select las subcategorias de esa categoria.

alguna idea?
desde ya se los agradezco!
__________________
Saludos!!!
Maru.-
  #2 (permalink)  
Antiguo 09/04/2012, 20:44
 
Fecha de Ingreso: octubre-2010
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: relacionar dos select

Lo que yo hago en ese caso es tener un select por cada categoría, con sus subcategorías correspondientes.
Con CSS oculto estos select de subcategorías y con JQuery detecto la elección de una opción en el select principal y en base a eso muestro y oculto los demás select.

Algo así:

Código Javascript:
Ver original
  1. $('select[name="tu_campo"]').change(function(){
  2.   var id_categoria = $(this).val();
  3.   $('select.subcategorias').hide();
  4.   $('select[name="subcategorias-'+id_categoria+'"]').show();
  5. });

Espero haber ayudado!
  #3 (permalink)  
Antiguo 09/04/2012, 21:04
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: relacionar dos select

gracias por tu respuesta edmundo_dantes!

probé el código pero no responde...
__________________
Saludos!!!
Maru.-
  #4 (permalink)  
Antiguo 09/04/2012, 21:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: relacionar dos select

Cita:
Iniciado por Maru77 Ver Mensaje
gracias por tu respuesta edmundo_dantes!

probé el código pero no responde...
Bueno, según mi punto de vista dudo que haya escrito el código pensando exactamente en tu problema y código.

Es sólo un ejemplo de lo que podrías hacer, no necesariamente va a funcionar sólo con copiar y pegar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 09/04/2012, 21:29
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: relacionar dos select

lo puse de este modo:

Código HTML:
<script type="text/javascript" src="scripts/jquery-1.5.1.min.js"></script>
<script language="JavaScript" type="text/JavaScript">
    $(document).ready(function(){
      $('select[name="categoria"]').change(function(){
	  var id_categoria = $(this).val();
	  $('select.subcategoria').hide();
	  $('select[name="subcategoria-'+id_categoria+'"]').show();
});
    });
</script> 
Código PHP:
<select name="<?php echo $campo ?>">
            <option value="0">-</option>
            <?php
            $conn 
DataBase::getInstance();
                
$rel=false;
                
$relacion='_'.$campo;
                
$conn->setQuery('SELECT * FROM `_'.$campo.'` ORDER BY id ASC');
                if (
$conn->len()==0){
                    
$rel=true;
                    
$relacion=$campo;
                    
$conn->setQuery('SELECT * FROM `'.$campo.'` ORDER BY id ASC');
                }
                if (
$conn->len()==0){
                    
$rel=true;
                    
$relacion=$campo.'s';
                    
$conn->setQuery('SELECT * FROM `'.$campo.'s` ORDER BY id ASC');
                }
                if (
$conn->len()>0){
                
$rs $conn->loadObjectList();
                foreach(
$rs as $valor){?>
                <option value="<?php echo $valor->id ?>"><?php echo $valor->titulo ?></option>
                <?php 
                
}}?>
                </select>
pero el combo de subcategoria no reconoce el id de categoria correspondiente.
__________________
Saludos!!!
Maru.-
  #6 (permalink)  
Antiguo 09/04/2012, 22:30
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: relacionar dos select

creo que el problema está en que no reconoce el nombre del select ya que de esta manera
Código PHP:
<select name="<?php echo $campo ?>">
toma el nombre de la tabla correspondiente.

Es decir que yo creo una tabla catedoria: id, nombre y otra subcategoria: id, nombre, categ

En ambos casos el código anterior expuesto levanta los select, pero con el jquery no logro hacer que sean combos dependientes.

Espero me puedan ayudar, porque no encuentro nada que se adapte.
Agradezco de todas maneras a quienes respondieron y aportaron algo para darme una idea.
__________________
Saludos!!!
Maru.-

Etiquetas: relacionar, select, tabla
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 22:18.