Foros del Web » Programando para Internet » PHP »

php + js DDL's combinados

Estas en el tema de php + js DDL's combinados en el foro de PHP en Foros del Web. Tengo problema para crear DDLs dependiente de otro me explico en una base de datos tengo 2 tablas tabla 1 y tabla 2 que depende ...
  #1 (permalink)  
Antiguo 25/04/2012, 14:39
Avatar de el_java  
Fecha de Ingreso: enero-2008
Mensajes: 185
Antigüedad: 16 años, 10 meses
Puntos: 3
php + js DDL's combinados

Tengo problema para crear DDLs dependiente de otro
me explico

en una base de datos tengo 2 tablas
tabla 1 y tabla 2 que depende de la 1

y quiero hacer que al seleccionar un ddl de la tabla 1 se filtren los de la tabla 2 apareciendo solo los que correspondan...

esto ya lo habia hecho antes, de hechjpo tengo algunos ejemplos, pero quiero intentar hacerlo y no me sale

les dejo el codigo de jS



js que hace el ddl
Código PHP:
<script type="text/javascript" src="jquery-1.4.2.min.js"></script> 
<script language="JavaScript" type="text/javascript">
$(document).ready(function(){
    //$("#task_component").change(function (){
           //$("#task_component option:selected").each(function (){
        $("#task_component").change(function(event){
            var elegido = $("#task_component").find(':selected').val();
            alert(elegido);
            //elegido=$(this).val();
            $("#linea").load('ddllinea.php?elegido='+elegido);
        });
    //})
});
</script> 

lo intento hacer con post y get y es el mismo resultado :/
el ddl de la tabla 2 no me aparece nada


tabla 1
Código PHP:
<select name="task_component" id="task_component" >
<?php
echo "<option value='' selected>Vea componentes existentes...</option>";
while (
$fila mysql_fetch_array($query))
echo
"<option value=".$fila['componente_id'].">".$fila['componente_name']."</option>" ;
?>
</select>

tabla 2
Código PHP:
<select name="linea" id="linea"></select


Gracias de ante mano :)
  #2 (permalink)  
Antiguo 25/04/2012, 14:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: php + js DDL's combinados

Faltaría ver que haces en ddllinea.php...
  #3 (permalink)  
Antiguo 25/04/2012, 15:02
Avatar de el_java  
Fecha de Ingreso: enero-2008
Mensajes: 185
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: php + js DDL's combinados

Código PHP:
<?php
if (!defined('DP_BASE_DIR')) {
    die(
'You should not access this file directly.');
}

$consulta =mysql_query("SELECT * FROM linea_trabajo WHERE lt_componente_id LIKE '$_GET[elegido]'");
if (
$_GET['elegido']==''){
    echo 
"<option value='' selected>Primero elija un componente...</option>";
}
else if (
$row =mysql_fetch_array($consulta)){
    echo 
"<option value='' selected>Vea lineas de trabajos existentes...</option>";
    do {
        echo 
"<option value=".$row['it_id'].">".$row['it_nombre']."</option>";
    }while(
$row mysql_fetch_array($consulta));
}
?>



Se me olvido decir que en el alert(elegido) me imprime el id del dato de la tabla 1
hasta ahi esta todo bien
  #4 (permalink)  
Antiguo 25/04/2012, 15:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: php + js DDL's combinados

Esta muy mal tu segundo script, primero deberías de comparar sí viene o no el valor y luego lanzas el query a MySQL, luego es muy malo integrar el GET directamente al query, abres tu código a ataques de SQL Inyection.

Es mejor que uses algo así:
Código PHP:
Ver original
  1. $valor = (int) $_GET['valor']; // si solo esperas un número
  2. $query = "SELECT * FROM blah WHERE id=$valor";

Saludos.
  #5 (permalink)  
Antiguo 25/04/2012, 15:14
Avatar de el_java  
Fecha de Ingreso: enero-2008
Mensajes: 185
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: php + js DDL's combinados

ok, realizado el cambio
  #6 (permalink)  
Antiguo 26/04/2012, 09:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: php + js DDL's combinados

Usa una herramienta como Firebug para ver la petición AJAX y ver la respuesta, solo así vas a poder ver que datos se están enviando y que datos estas recibiendo del servidor.

Saludos.
  #7 (permalink)  
Antiguo 26/04/2012, 13:43
Avatar de el_java  
Fecha de Ingreso: enero-2008
Mensajes: 185
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: php + js DDL's combinados

pucha, y como se hace eso?
buscare info, gracias

probe otras ocpiones y todas se caen al mismo tiemkpo
antes de mandar los datos al otro archivo que genera los datos desde la BD del 2º combo
  #8 (permalink)  
Antiguo 26/04/2012, 14:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: php + js DDL's combinados

En Firefox, instala el complemento Firebug, este tiene opciones para ver la petición AJAX, puedes ver los datos de envío y lo que estas recibiendo, es la mejor forma para trabajar con AJAX.

Saludos.
  #9 (permalink)  
Antiguo 26/04/2012, 15:31
Avatar de el_java  
Fecha de Ingreso: enero-2008
Mensajes: 185
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: php + js DDL's combinados

VALE lo haré, gracias

adicionalmente digo que cambie el codigo de js
pero sigue sin resultar
se cae en la misma parte


Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3. $(document).ready(function(){
  4.      $('#task_component').change(function () {
  5.         $('#task_component option:selected').each(function () {
  6.            elegido=$(this).val();
  7.            $.post("ddllinea.php", { id: elegido }, function(data){
  8.               $('#linea').html(data);
  9.            });
  10.         });
  11.      })
  12. });
  13.  
  14. </script>

Etiquetas: combinados, js, mysql, 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 14:13.