PHP - problema con cargar en combos dependientes usando postgresql

   
Vista:

problema con cargar en combos dependientes usando postgresql

Publicado por Javier (15 intervenciones) el 06/08/2016 22:48:44
amigos el problema es el siguiente el primer select carga bien pero el segundo select dependiente no carga nada...este es el codigo:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<html>
    <head>
        <title>Formula Uno</title>
        <meta name="menu_principal" http-equiv="content-type" content="text/html" charset="utf-8_spanihs_ci" />
        <link rel="stylesheet" type="text/css" href="css/estilo_menu.css"/>
        <link rel="stylesheet" type="text/css" href="css/estilo_carrera.css"/>
 
    </head>
    <body>
        <?php
            include('menu.php');
        ?>
        <br /><br /><br /><br /><br /><br />
        <form class="f_carrera">
            <fieldset>
                <legend>CARRERA</legend>
                    <ul>
                        <li>
                            <label class ="lab_fech" for="name">Fecha </label>
                            <input class="txt_fecha" type="text" placeholder="13/05/1950" />
                        </li>
                        <li>
                            <label class ="lab_piloto" for="name">Piloto </label>
                            <select name="txt_piloto" class="txt_piloto"  size="1">
                                <?php
                                    include('bd_conexion.php');
                                    $verificar_p = "SELECT * FROM piloto ORDER BY nombre_piloto";
                                    $result_verificar_p = pg_query($verificar_p);
 
                                    echo "<option>"."--------------------"."</option>";
                                    while($lista_p=pg_fetch_row($result_verificar_p)) {
                                        echo "<option value=".$lista_p[5].">".$lista_p[1]." ".$lista_p[2]."</option>";
                                    }
                                    pg_free_result($verificar_p);
                                    pg_close($conexion);
                                ?>
                            </select>
                            <label class ="lab_dorsal" for="name">Dorsal </label>
                            <input class="txt_dorsal" type="text" placeholder="22" />
                            <label class ="lab_pts_pilo" for="name">Puntos - Piloto </label>
                            <select name="puntos" class="txt_puntos1" size="1">
                                <option> </option>
                                <option>10</option>
                                <option>6</option>
                                <option>5</option>
                                <option>4</option>
                                <option>3</option>
                                <option>1</option>
                            </select>
                        </li>
                        <li>
                            <label class ="lab_escud" for="name">Escuderia </label>
                            <select name="txt_escuderia" class="txt_escuderia" size="1">  
                                <?php
                                    include('bd_conexion.php');
                                    $verificar = "SELECT * FROM escuderia WHERE cod_escuderia='".trim($lista_p[5])."'";
                                    $result_verificar = pg_query($verificar);
 
                                    echo "<option>"."--------------------"."</option>";
                                    while($lista_e=pg_fetch_row($result_verificar)) {
                                        echo "<option value=".$lista_e[0].">".$lista_e[1]."</option>";
                                    }
                                    pg_free_result($verificar);
                                    pg_close($conexion);
                                ?>
                            </select>
                            <input class="btn_buscar" type="submit" value="Buscar Carrera"/>
                        </li>
            </fieldset>
        </form>
    </body>
</html>

los valores $lista_p[5], $lista_p[1], $lista_p[2] vienen de las variables de la tabla piloto la cual en el siguiente orden son: cod_escuderia, nombre_piloto, apellido_piloto.

los valores $lista_e[0], $lista_e[1] vienen de las variables de la tabla escuderia la cual en el siguiente orden son: cod_escuderia, nombre_escuderia.

les agradezco su ayuda ..gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

problema con cargar en combos dependientes usando postgresql

Publicado por kip (566 intervenciones) el 06/08/2016 22:59:25
Hola, lo que sucede es que aquella variable que usas como parametro en el WHERE de la segunda query para llamar a los datos y crear el segundo select no existe, ya que solo existe dentro del primer while.

Podrias almacenarla en alguna variable y luego esta llamarla en cualquier parte del script, en este caso colocarla como parametro en la query que necesitas ejecutar, pero debes tener en cuenta que si te trae mas de un registro la primera query aquella variable que crearas y almacenara el valor de $lista_p[5] tomara el valor del ultimo registro, aquello sucedera como ya te dije si aquella consulta te trae mas de una fila de datos, aunque podrias almacenar aquellos valores como un array.

Si te trae solo una fila de datos puedes hacerlo asi:

1
2
3
4
while($lista_p=pg_fetch_row($result_verificar_p)) {
echo "<option value=".$lista_p[5].">".$lista_p[1]." ".$lista_p[2]."</option>";
$variable_listap5=$lista_p[5];
}

Luego simplemente la colocas en tu query:

1
$verificar = "SELECT * FROM escuderia WHERE cod_escuderia='".trim($variable_listap5)."'";

Ademas de eso, si realizas un include(), ya no es necesario realizarlo mas, te recomiendo que lo hagas al inicio del script.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

problema con cargar en combos dependientes usando postgresql

Publicado por Javier (15 intervenciones) el 06/08/2016 23:18:14
buenas compa..fijate que esa sugerencia que me acabas de dar ya lo habia intentado y nada.....no se si deba usar algun javascript para complementarlo la verdad no se como capturar un valor de un combo con puro php ...pero que me sugieres tendre que usar algun javascript??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

problema con cargar en combos dependientes usando postgresql

Publicado por kip (566 intervenciones) el 06/08/2016 23:21:31
No puedes usar javascript, PHP se ejecuta del lado del servidor y aquella consulta se ejecutara primero antes de que por medio de javascript tomes el valor del select.

Podrias hacer esto y mostrarnos que resultado te arroja:

1
2
3
4
5
while($lista_p=pg_fetch_row($result_verificar_p)) {
echo "<option value=".$lista_p[5].">".$lista_p[1]." ".$lista_p[2]."</option>";
$variable_listap5[] = $lista_p[5];
}
var_dump($variable_listap5);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

problema con cargar en combos dependientes usando postgresql

Publicado por Javier (15 intervenciones) el 06/08/2016 23:33:35
amigo....con la impresion var_dump($variable_listap5);
arroja como respuesta el arreglo: array(3) { [0]=> string(3) "001" [1]=> string(3) "001" [2]=> string(3) "005" }
eso quiere decir que un mi tabla piloto esta almacenado 001, 001, 005 que son los codigos de la otra talba llamada escuderia.
si se guarda esos valores no se como hacer para que tome el valor seleccionado del select??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

problema con cargar en combos dependientes usando postgresql

Publicado por kip (566 intervenciones) el 06/08/2016 23:46:05
Me he confundido, he pensado que necesitabas otra cosa, ahora veo que lo que intentas resolver es que el valor que selecciones en el primer select sea el valor con el que busques en la tabla de la query del segundo select.

Podrias hacerlo de dos formas, mediante AJAX o simplemente mediante un formulario, debes recordar que AJAX te permitira no recargar la pagina para obtener los datos desde la base de datos correspondiente.

Te recomiendo AJAX, si tienes un concepto basico de jQuery o javascript.
http://www.jose-aguilar.com/blog/combos-dependientes-con-jquery-ajax-y-php/
http://www.formatoweb.com.ar/ajax/select_dependientes.php
http://www.anieto2k.com/2008/05/27/combos-dependientes-accesibles-php-jquery/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

problema con cargar en combos dependientes usando postgresql

Publicado por Javier (15 intervenciones) el 07/08/2016 00:01:14
mucha gracias por la orientacion compa......revisare los link's que me sugieres..saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con cargar en combos dependientes usando postgresql

Publicado por Javier (15 intervenciones) el 07/08/2016 05:48:12
amigo de tanto buscar otras fuentes consegui una y lo adapte a lo que queria le dejo el codigo por si le interesa...la idea que tenia al principio en esencia se mantuvo pero logicamente hubo algunos cambio porque se uso algunas funciones y eso cambia buena parte de la logica pero creo que en esencia se mantiene la idea...... aqui el codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
    session_start();
    include('bd_conexion.php');
 
    $txt_piloto=$_SESSION['txt_piloto2']=@$_REQUEST['txt_piloto'];
    $str = $txt_piloto;
    $txt_piloto =explode('|', $str, 2);
 
    $txt_escuderia=$_SESSION['txt_escuderia2']=@$_REQUEST['txt_escuderia'];
    $str = $txt_escuderia;
    $txt_escuderia =explode('|', $str, 2);
 
?>
 
<html>
    <head>
        <title>Formula Uno</title>
        <meta name="menu_principal" http-equiv="content-type" content="text/html" charset="utf-8_spanihs_ci" />
        <link rel="stylesheet" type="text/css" href="css/estilo_menu.css"/>
        <link rel="stylesheet" type="text/css" href="css/estilo_carrera.css"/>
 
    </head>
    <body>
        <?php
            include('menu.php');
        ?>
        <br /><br /><br /><br /><br /><br />
        <form id="f_carrera" name="f_carrera" class="f_carrera" method="post" action="">
            <fieldset>
                <legend>CARRERA</legend>
                    <ul>
                        <li>
                            <label class ="lab_fech" for="name">Fecha </label>
                            <input class="txt_fecha" type="text" placeholder="13/05/1950"/>
                        </li>
                        <li>
                            <label class ="lab_piloto" for="name">Piloto </label>
                            <?php
                                $verificar_p = "SELECT * FROM piloto ORDER BY nombre_piloto";
                                $result_verificar_p = pg_query($verificar_p);
                            ?>
                            <select name="txt_piloto" class="txt_piloto" onchange="this.form.submit()">
                                <?php if($txt_piloto[0]!=''){?>
                                <option value="<?php echo $txt_piloto[0]."|".$txt_piloto[1]; ?>"><?php echo trim($txt_piloto[1]); ?></option>
	                            <?php 	} else { ?>
                                <option >--------------------</option><?php }?>
                                <?php while($fila_p=pg_fetch_array($result_verificar_p)) {?>
                                <option value="<?php echo $fila_p['cod_escuderia']."|".$fila_p['nombre_piloto']." ".$fila_p['apellido_piloto']?>"> <?php echo htmlentities($fila_p['nombre_piloto']." ".$fila_p['apellido_piloto']);?></option>
                                <?php
                                	}
                                    pg_free_result($verificar_p);
                                    //$variable_listap5[]=$txt_piloto[5];
                               	?>
                            </select>
                            <label class ="lab_dorsal" for="name">Dorsal </label>
                            <input class="txt_dorsal" type="text" placeholder="22" />
                            <label class ="lab_pts_pilo" for="name">Puntos - Piloto </label>
                            <select name="puntos" class="txt_puntos1" size="1">
                                <option> </option>
                                <option>10</option>
                                <option>6</option>
                                <option>5</option>
                                <option>4</option>
                                <option>3</option>
                                <option>1</option>
                            </select>
                        </li>
                        <li>
                            <label class ="lab_escud" for="name">Escuderia </label>
                            <?php
                                $verificar_e = "SELECT * FROM escuderia WHERE cod_escuderia='".$txt_piloto[0]."'";
                                $_result_verificar_e = pg_query($verificar_e);
                            ?>
                            <select name="txt_escuderia" class="txt_escuderia" onchange="this.form.submit()">
                                <?php if($txt_escuderia[0]!=''){ ?>
                                <!--<option value="<?php echo $txt_escuderia[0]."|".$txt_escuderia[1]; ?>"><?php if (isset($txt_escuderia[1])){ echo trim($txt_escuderia[1]); } ?></option><?php } else { ?>
                                <option >--------------------</option><?php }?>-->
                                <?php while($fila_e=pg_fetch_array($_result_verificar_e)) { ?>
                                <option value="<?php echo $fila_e['cod_escuderia']."|".$fila_e['nombre_escuderia']?>"><?php echo htmlentities($fila_e['nombre_escuderia']);?></option>
                                <?php } 
                                    pg_free_result($verificar_e);
                                ?>
                            </select>
                            <input class="btn_buscar" type="submit" value="Buscar Carrera"/>
                        </li>
                    </ul>
 
                    <?php
                    //var_dump($variable_listap5);
                    ?>
                    <?php
                        pg_close($conexion);
                    ?>
            </fieldset>
        </form>
    </body>
</html>

el codigo que esta en negrita es lo vital de todo esto en general se uso la asociona de arreglo "session", un juego con la forma de definir los option y el submit() que se le aplica en el evento onchange...saludos compa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar