Foros del Web » Programando para Internet » PHP »

selects dependientes con php y jquery

Estas en el tema de selects dependientes con php y jquery en el foro de PHP en Foros del Web. Estoy trabajando en un proyecto que necesita varios selects dependientes. Busque mucho y juntando un poco de toda la información que encontré llegue a esto ...
  #1 (permalink)  
Antiguo 18/11/2015, 10:01
Avatar de moydb  
Fecha de Ingreso: noviembre-2015
Ubicación: Toluca
Mensajes: 1
Antigüedad: 8 años, 5 meses
Puntos: 0
Información selects dependientes con php y jquery

Estoy trabajando en un proyecto que necesita varios selects dependientes.
Busque mucho y juntando un poco de toda la información que encontré llegue a esto espero les sea útil.

Yo ocupo 3 archivos que son 1.php, 2.php y prueba.php

En prueba.php se manda llamar al archivo 1.php a través de include (lo hice de esta forma para que sea fácil integrarlo en cualquier proyecto como modulo externo, solo enviándole los valores necesarios para que se haga el trabajo se los selects)

El archivo 1.php

Es donde está la mayor parte del código y donde se genera el primer select, en este archivo también están las funciones de jaquery que vamos a ocupar para que sea un select dependiente

Código PHP:
<script language="javascript" src="jquery/jquery.js"></script><!--se manda llamar a jquery  -->
<script language="javascript">
$(document).ready(function(){
    var jq = jQuery.noConflict();//para no generar conflicto con otro codigo
   jq("#<?php echo $nom1;?>").change(function () {//se activa cuando el primer select cambia por eso la variable $nom1
           $("#<?php echo $nom1;?> option:selected").each(function () {//en  el primer select con opcion seleccionada se toman los datos
            id_category = $(this).val();//se captura el valor
            var t2='<?php echo $tabla2?>';//se crea una variable para la segunda tabla donde el segundo select va a sacar su informacion
            var camp='<?php echo $campo?>';//se crea variable para el campo que va a comparar el query y debolver solo lo que tenga que ver con el primer select
            var j = jQuery.noConflict();//se crea otra variable no conflict para que no choque con otro codigo que se implemente
            j.post("2.php", { id_category: id_category, tabla: t2, campo: camp}, function(data){//se envia por metodo post los siguientes datos id_category que es el valor  que se saco del primer select tabla=t2 que es el nombre de la tabla donde se va a comprar el primer valor y campo=camp que es el campo que se va a comparar en la segunda tabla para ver si hay datos iguales que se puedan mostrar en el segundo select ***
                j("#<?php echo $nom2;?>").html(data);//se imprime el resultado con el nombre del segundo select y se envia con la informacion de vuelta por el query ****
            });            
        });
   })
});
</script>
<?php
echo '<select name="'.$nom1.'" id="'.$nom1.'"><option selected disabled>seleccione una opción</option>';//se crea el primer select con los atributos de nombre y id para ubicacion y referencia
$consulta=mysql_query("SELECT * FROM $tabla1") or die(mysql_error());//se genera el query para llenado de datos del primer select
    
$n_filas mysql_num_rows($consulta);//se cuenta el numero de filas de vueltas por el query
    
if ($n_filas 0
    {
        while(
$row=mysql_fetch_row($consulta))//se hace el bucle para sacar todos los resultados del query
        
{                
            echo 
'<option value="'.$row[0].'">'.$row[1].'</option>';//se imprime en value el resultado de vuelto de la columna 0 y en dato a mostrar el de la columna 1
        
}
    }
echo 
'</select>';//se cierra el select fuera del bucle
echo '<select name="'.$nom2.'" id="'.$nom2.'"><option  selected disabled>seleccione una opción</option></select>';//se crea el segundo select con su nombre ($nom2) y su id($nom2) esto es necesario para poderle regresar los valores en el punto ****
?>

archivo 2.php

Código PHP:
<?php
require ('conexion.php');//se llama la conexion con la db
conectar();//se llama la funcion conectar que esta en el archivo conexion
//se reciben las variables que envio el archivo 1.php en el punto ***
$cat $_POST['id_category'];//es el valor de vuelto por el primer select 
$tabla2 $_POST['tabla'];//nombre de la tabla donde se va a bsucar los datos del segundo select
$campo $_POST['campo'];//campo que el que se va a comparar el valor de $cat

$consulta=mysql_query("SELECT * FROM $tabla2 WHERE $campo='$cat'") or die(mysql_error());//se genera el query con el nombre de las egunda tabla el nombre del campo para la comparacion y el valor a comparar
$n_filas mysql_num_rows($consulta);//se cuenta filas de vueltas
    
if ($n_filas 0
    {
        
$html.='<option  selected disabled>seleccione una opción</option></select>';//se crea la primera opcion del segundo select la que se va a ver por default (por eso esta fuera del bucle)
        
while($row=mysql_fetch_row($consulta))//se genera bucle para recorrer query e imprimir resultados obtenidos
        
{                
        
$html .= '<option value="'.$row[0].'">'.$row[1].'</option>';//se imprimen los valores obtenidos
        
}
    }
echo 
$html;//se envia mediante esta variable para interpretacion de jquery y sean agregados al segundo select
?>

archivo prueba.php

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form action="prueba.php" method="post">
<?php 
require ('conexion.php');//se llama a la conexion
conectar();//se llama a la funcion conectar

//esto es para comprobar que se estan recibiendo los valores correctamente
//primer grupo de selects
$mun1=$_POST['marca'];//se reciben los datos del select llamado (marca)*
$com1=$_POST['modelo'];//se reciben los datos del segundo select (modelo) **

//segundo grupo de selects
$mun2=$_POST['marca2'];//se reciben los datos del select llamado (marca2)***
$com2=$_POST['modelo2'];//se reciben los datos del segundo select (modelo2) ****



$tabla1='marcas';//nombre de la tabla que usa el primer select
$nom1='marca';//nombre del select *
$tabla2='modelos';//nombre de la tabla que usa el segundo select
$nom2='modelo';//nombre del segundo select **
$campo='id_marca';//campo que se va a comparar en la segunda tabla con el valor obtenido del primer select
include ('1.php');//se manda llamar al archivo 1.php
?>
<hr /><br />
<?php 
$tabla1
='marcas';//nombre de la tabla
$nom1='marca2';//nombre del select ***
$tabla2='modelos';//nombre de la tabla
$nom2='modelo2';//nombre del segundo select ****
$campo='id_marca';//campo a comparar
include ('1.php');//se manda llamar al archivo 1.php
?>
<input name="" type="submit" value="Submit" />
</form>

<?php 
//si se envia el formulario hace referencia hacia si mismo y se imprimen los resutlados de vueltos por los selects
//datos del primer grupo de selects
echo $mun1.' ';
echo 
$com1.'<br>';
//datos del segundo grupo de selects
echo $mun2.' ';
echo 
$com2.'<br>';
?>
</body>
</html>
dejo el enlace de mega por si gustan descargarlo
[URL="https://mega.nz/#!pdFVmQQR"]ejemplo completo con db[/URL]

Última edición por moydb; 18/11/2015 a las 13:37
  #2 (permalink)  
Antiguo 18/11/2015, 13:39
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: selects dependientes con php y jquery

Saludo.
¿Y qué necesitas exactamente?
Por otra parte se ven consultas a algunas tablas, ¿cuales son las estructuras de las mismas,
y ejemplos de info?
__________________
"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 18/11/2015, 13:45
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: selects dependientes con php y jquery

es un aporte que esta haciendo
__________________
[email protected]
HITCEL
  #4 (permalink)  
Antiguo 18/11/2015, 18:49
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: Aporte selects dependientes con php y jquery

Cita:
Iniciado por xfxstudios Ver Mensaje
es un aporte que esta haciendo
Saludo
Ah, yap.
__________________
"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 16/02/2016, 21:00
 
Fecha de Ingreso: febrero-2014
Ubicación: Bogota
Mensajes: 6
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: selects dependientes con php y jquery

Muchas gracias por el aporte cual es la contraseña del archivo

Etiquetas: dependientes, formulario, html, mysql, select, selects, sql, tabla, variable
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:30.