Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: ch1n0 en Junio 22, 2011, 01:30:45 PM

Título: [SOLUCIONADO] Consulta sobre combobox
Publicado por: ch1n0 en Junio 22, 2011, 01:30:45 PM
Hola a todos

Les cuento. Estoy tratando de cargar un combobox haciendo una consulta, pero esa consulta depende de la seleccion de otro combobox de mas arriba, pero no me resulta.

Código (php) [Seleccionar]

<tbody>
        <tr> <td> Hora inicio </td> <td> <input type="text" maxlength="5" name="hora_inicio" id="hora_inicio" /> </td> </tr>
        <tr> <td> Hora Fin </td> <td> <input type="text" maxlength="5" name="hora_fin" id="hora_fin" /> </td> </tr>
        <tr> <td> dia </td> <td> <input type="text" maxlength="9" name="dia" id="dia" /> </td> </tr>
       
        <tr> <td> Carreras </td> <td>
        <select name="carrera" size="1">
       
        <?php 
        $sql 
"SELECT DISTINCT carrera FROM alumno";
        
$stmt $bd->ejecutar($sql);
        
        if (
$stmt 0) {
            while (
$rowEmp $bd->obtener_fila($stmt,0)){  
                
$carrera $rowEmp['carrera'];
                
?>

            <option value="<?php echo $carrera ?>"> <?php echo $rowEmp['carrera']?> </option>
        <?php } }?>
        </select></td> </tr>
       
        <tr> <td> Asignatura </td> <td>
        <select name="asignatura" size="1">
       
        <?php 
        $sql 
"SELECT idasignatura,nombre FROM asignatura";
        
$stmt $bd->ejecutar($sql);
        
        if (
$stmt 0) {
            while (
$rowEmp $bd->obtener_fila($stmt,0)){  
                
?>

            <option value="<?php echo $rowEmp['idasignatura'?>"> <?php echo $rowEmp['nombre']?> </option>
        <?php } }?>
        </select></td> </tr>
       
        <tr> <td> Alumno </td> <td>
        <select name="alumno" size="1">
       
        <?php                         // aqui debo hacer la consulta dependiendo del otro combobox
        
$sql "SELECT rut,nombres,apellido_p,apellido_m FROM alumno WHERE carrera = $carrera";
        
$stmt $bd->ejecutar($sql);
        
        if (
$stmt 0) {
            while (
$rowEmp $bd->obtener_fila($stmt,0)){  
                
?>

            <option value="<?php echo $rowEmp['rut'?>"> <?php echo $rowEmp['nombres'] . " " $rowEmp['apellido_p']?> </option>
        <?php } }?>
        </select></td> </tr>
    </tbody>


(http://www.imagengratis.org/images/sinttulowm1zw.jpg)

- Al seleccionar una carrera debe cargar en el combobox alumnos esos alumnos. Ayuda plz

Saludos
Título: Re:consulta sobre combobox
Publicado por: Devilboy en Junio 22, 2011, 04:47:01 PM
si lo ke kieres es ke solo al seleccionar un combobox se llene el otro, con puro php no vas a poder.

Para eso se utiliza ajax
Título: Re:consulta sobre combobox
Publicado por: ~ Yoya ~ en Junio 22, 2011, 04:56:31 PM
Hola @ch1n0, primero que nada no se puede probar el código que haces ya que utilizas datos de alguna Base de Datos y no tengo la base de datos para probar.

Al parecer usas alguna clase propia para realizar consultas hacia la BD y no se cual es. Es un poco tedioso tratar de suponer lo que hace cada metodo.



Ahora bueno, creo que el problema no tiene nada que ver con PHP.

Al parecer quieres cargar dinamicamente datos de la BD, osea que cuando se seleccione alguna opción cargue automáticamente el Combox Alumno.

Lo que quieres hacer se hace con Ajax, pero necesitaras aprender Javascript y DHTML(HTML dinamico).

Saludos.

Título: Re:consulta sobre combobox
Publicado por: ch1n0 en Junio 22, 2011, 05:08:33 PM
Ok muchas gracias, ahora me dedico a investigar :D
Título: Re:consulta sobre combobox
Publicado por: Devilboy en Junio 22, 2011, 05:19:17 PM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Ok muchas gracias, ahora me dedico a investigar :D

Bueno como tengo un rato libre me dedike a ayudarte man

http://www.mediafire.com/?4s6kfw97f1gh7xj

es un code ke acabo de modificar para hacerlo dinamico

el code original lo saké de akí

http://pixelar.me/selects-dependientes-con-jquery/


usamos php, mysql y jquery

espero te sirva

cualkier duda aki andámos
Título: Re:consulta sobre combobox
Publicado por: ch1n0 en Junio 22, 2011, 05:28:42 PM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Ok muchas gracias, ahora me dedico a investigar :D

Bueno como tengo un rato libre me dedike a ayudarte man

http://www.mediafire.com/?4s6kfw97f1gh7xj

es un code ke acabo de modificar para hacerlo dinamico

el code original lo saké de akí

http://pixelar.me/selects-dependientes-con-jquery/


usamos php, mysql y jquery

espero te sirva

cualkier duda aki andámos

Guau, muchas gracias, a todos.
Título: Re:consulta sobre combobox
Publicado por: Devilboy en Junio 22, 2011, 06:18:10 PM
acostumbrate a usar llaves primarias en vez de strings

tienes esto en el combobox

<option value="<?php echo $carrera ?>">

y en el jquery estas lanzando el id

$("#select2").load('genera-select.php?id='+id);

usa mejor la llave primaria en el value de la lista y la carrera para mostrarla, algo asi:

<option value="<?php echo $id ?>"> <?php echo $rowEmp['carrera']?> </option>
Título: Re:consulta sobre combobox
Publicado por: ch1n0 en Junio 22, 2011, 06:24:40 PM
Gracias por responder, pero creo q el problema esta en genera-select.php


<?php
include("conexion.php"); 
$bd=Db::getInstance();
//include("conexion/conexion.php");

$carrera $_GET['id'];
$sql "SELECT * FROM alumno WHERE carrera = '$carrera'";
$stmt $bd->ejecutar($sql);

//$consulta = "SELECT * from alumno WHERE rut = ".$_GET['id'];
//$query = mysql_query($consulta);
//while ($fila = mysql_fetch_array($query)) {
if ($stmt 0) {
while ($rowEmp $bd->obtener_fila($stmt,0)){  
    
//echo "<option value=$rowEmp['rut']> $rowEmp['nombres'] </option>";
echo '<option value="'.$rowEmp['nombres'].'">'.$carrera.'</option>';
}
}

?>



nose, pero creo que no llega el id. porque no me muestra nada, y si pongo manualmente
$sql = "SELECT * FROM alumno WHERE carrera = 'ing en informatica'";

nose que sera :S
Título: Re:consulta sobre combobox
Publicado por: Devilboy en Junio 22, 2011, 06:30:10 PM
pon los dos completos, el index y el genera...
Título: Re:consulta sobre combobox
Publicado por: ch1n0 en Junio 22, 2011, 06:31:48 PM
el index es un poco largo :D


<?php
session_start();
if($_SESSION['acceso']!=true) {
echo('Acceso restringido');
} else {?>

<!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=windows-1252" />
<title> Sistema de Administracion </title>
<script type="text/javascript" src="js/ajax.js"></script>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>

<?php
include(
"conexion.php"); 
$bd=Db::getInstance();


?>

<link href="css/horario.css" rel="stylesheet" type="text/css" />
<link href="css/tabla.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" type="text/JavaScript">

            $(document).ready(function(){
                $("#carrera").change(function(event){
                    var id = $("#carrera").find(':selected').val();
                    $("#select2").load('genera-select.php?id='+id);
                });
            });
</script>

</head>
<body>
<div id="contenedor">
<div id="encabezado">
<h1 align="center">Sistema de Administracion </h1>
</div>

<div id="menu">
<ul id="barra">
<li><a href="./administracion.php"> inicio </a> </li>
    <li><a href="javascript:Enviar('ingresarAlumno.php','contenido')">Ingresar Alumno</a></li>
    <li><a href="javascript:Enviar('actualizarAlumnos.php','contenido')">Actualizar Alumno</a></li>
        <li><a href="javascript:Enviar('ingresarProfesor.php','contenido')">Ingresar Profesor</a></li>
    <li><a href="javascript:Enviar('actualizarProfesor.php','contenido')">Actualizar Profesor</a></li>
        <li><a href="javascript:Enviar('ingresarAsignatura.php','contenido')">Ingresar Asignatura</a></li>
    <li><a href="javascript:Enviar('actualizarAsignatura.php','contenido')">Actualizar Asignatura</a></li>
        <li><a href="javascript:Enviar('ingresarHorario.php','contenido')">Ingresar Horario</a></li>
    <li><a href="javascript:Enviar('actualizarHorario.php','contenido')">Actualizar Horario</a></li>
    <li><a href="./salir.php">Salir</a></li>
  </ul>
   
    </div>
    <div align="center" id="contenido">
<form name="form1" id="form1" method="post" action="./ingresa_horario.php">
<table border="1">
<thead>
    <tr> <td colspan="2" align="center"> Ingresar Horario </td> </tr>
    </thead>
   
    <tbody>
    <tr> <td> Hora inicio </td> <td> <input type="text" maxlength="5" name="hora_inicio" id="hora_inicio" /> </td> </tr>
        <tr> <td> Hora Fin </td> <td> <input type="text" maxlength="5" name="hora_fin" id="hora_fin" /> </td> </tr>
        <tr> <td> dia </td> <td> <input type="text" maxlength="9" name="dia" id="dia" /> </td> </tr>
       
        <tr> <td> Asignatura </td> <td>
        <select name="asignatura" size="1">
       
        <?php 
$sql "SELECT idasignatura,nombre FROM asignatura";
$stmt $bd->ejecutar($sql);

if ($stmt 0) {
while ($rowEmp $bd->obtener_fila($stmt,0)){  
?>

        <option value="<?php echo $rowEmp['idasignatura'?>"> <?php echo $rowEmp['nombre']?> </option>
        <?php } }?>
        </select></td> </tr>
       
        <tr> <td> Carreras </td> <td>
        <select name="carrera" id="carrera" size="1">
       
        <?php 
$sql "SELECT DISTINCT rut,carrera FROM alumno";
$stmt $bd->ejecutar($sql);

if ($stmt 0) {
while ($rowEmp $bd->obtener_fila($stmt,0)){  
$id $rowEmp['carrera'];
//$rut = $row['rut'];
?>

        <option value="<?php echo $id ?>"> <?php echo $rowEmp['carrera']?> </option>
        <?php } }?>
        </select></td> </tr>
        <!--
        <tr> <td> Alumno </td> <td>
        <select name="alumno" id="alumno" size="1">
        -->
        <?php  /* // aqui debo hacer la consulta dependiendo del otro combobox
$sql = "SELECT rut,nombres,apellido_p,apellido_m FROM alumno WHERE carrera = $carrera";
$stmt = $bd->ejecutar($sql);

if ($stmt > 0) {
while ($rowEmp = $bd->obtener_fila($stmt,0)){  
?>

        <option value="<?php echo $rowEmp['rut'?>"> <?php echo $rowEmp['nombres'] . " " $rowEmp['apellido_p']?> </option>
        <?php } } */?>
        </select><!--</td> </tr>-->
       
        <tr> <td> Alumno </td> <td>
        <select name="select2" id="select2">

          </select>
        </td> </tr>   
    </tbody>
   
    <tfoot>
    <tr> <td colspan="2" align="right"> <input type="submit" name="guardar" value="Guardar" /> </td> </tr>
    </tfoot>
</table>
</form>
    </div>

</div>
</body>
</html>
<?php 
}
?>




genera:

<?php
//include("conexion.php"); 
//$bd=Db::getInstance();
include("./conexion2.php");

$carrera $_GET['id'];
//$sql = "SELECT * FROM alumno WHERE rut = '17217511-2'";
//$stmt = $bd->ejecutar($sql);

$consulta "SELECT * from alumno WHERE carrera= ".$_GET['id'];
$query mysql_query($consulta);
while (
$fila mysql_fetch_array($query)) {
echo '<option value="'.$fila['nombres'].'">'.$fila['nombres'].'</option>';
//if ($stmt > 0) {
/*while ($rowEmp = $bd->obtener_fila($stmt,0)){  
     //echo "<option value=$rowEmp['rut']> $rowEmp['nombres'] </option>";
echo '<option value="'.$rowEmp['rut'].'">'.$rowEmp['rut'].'</option>';
}*/
//}
}
?>

Título: Re:consulta sobre combobox
Publicado por: Devilboy en Junio 22, 2011, 06:47:24 PM
intenta cambiar la consulta en el genera por  ejemplo

SELECT * from alumno WHERE carrera= 'informatica'


y dime si asi te funciona

otra cosa


tienes el jquery en el mismo archivo ke tu index??

o mejor dicho en esta ruta??
js/jquery-1.4.2.min.js




$consulta = "SELECT * from alumno WHERE carrera= ".$_GET['id'];

cambia eso por:

$carrera = $_GET['id'];

$consulta = "SELECT * from alumno WHERE carrera = '$carrera' ";
Título: Re:consulta sobre combobox
Publicado por: ch1n0 en Junio 22, 2011, 06:54:15 PM

SELECT * from alumno WHERE carrera= 'informatica'


si me funciona. y el jquery esta en esa ruta.

pero probe lo siguiente


<tr> <td> Carreras </td> <td>
        <select name="select1" id="select1">
                <option value="">Selecciona</option>
                <option value="informatica">ing en informatica</option>
                <option value="17217514-7">Tec enfermeria</option>
</select></td> </tr>


y

<?php
//include("conexion.php"); 
//$bd=Db::getInstance();
include("./conexion2.php");

$carrera $_GET['id'];
//$sql = "SELECT * FROM alumno WHERE rut = '17217511-2'";
//$stmt = $bd->ejecutar($sql);

$consulta "SELECT * FROM alumno WHERE carrera = 'ing en informatica'";
$query mysql_query($consulta);
while (
$fila mysql_fetch_array($query)) {
echo '<option value="'.$fila['rut'].'">'.$fila['nombres'].'</option>';
//if ($stmt > 0) {
/*while ($rowEmp = $bd->obtener_fila($stmt,0)){  
     //echo "<option value=$rowEmp['rut']> $rowEmp['nombres'] </option>";
echo '<option value="'.$rowEmp['rut'].'">'.$rowEmp['rut'].'</option>';
}*/
//}
}
?>



funciona perfecto. pero si en el index coloco el codigo php que genera el combobox, no funciona. por ai debe estar el problema.

EDITO. Tambien funciona con el codigo php en el index :D
Título: Re:consulta sobre combobox
Publicado por: Devilboy en Junio 22, 2011, 06:55:57 PM
ok entonces solo haz esto


$carrera = $_GET['id'];

$consulta = "SELECT * from alumno WHERE carrera = '$carrera' ";


sino te funciona con eso, entonces checa ke efectivamente se muestren y se pasen correctamente los valores en el select carrera

simplemente crea otro .php e imprime la variable $_POST[carrera];

para ke veas se te está pasando bien los valores o no
Título: Re:consulta sobre combobox
Publicado por: ch1n0 en Junio 22, 2011, 06:59:25 PM
compañero la siguiente consulta funciona.


$consulta = "SELECT * FROM alumno WHERE carrera = '$carrera'";


pero al seleccionar la carrera informatica, pero si selecciono ing en informatica no funciona, debe ser por los espacios. porque tengo otra carrera con espacios y no muestra

Saludos.

EDITO: Definitivamente es por los espacios
Título: Re:consulta sobre combobox
Publicado por: Devilboy en Junio 22, 2011, 07:03:18 PM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
compañero la siguiente consulta funciona.


$consulta = "SELECT * FROM alumno WHERE carrera = '$carrera'";


pero al seleccionar la carrera informatica, pero si selecciono ing en informatica no funciona, debe ser por los espacios. porque tengo otra carrera con espacios y no muestra

Saludos.

EDITO: Definitivamente es por los espacios


entonces checa ke efectivamente se muestren y se pasen correctamente los valores en el select carrera

simplemente crea otro .php e imprime la variable $_POST[carrera];

para ke veas se te está pasando bien los valores o no



tambien pueden ser los acentos o los espacios como dices
Título: Re:consulta sobre combobox
Publicado por: ch1n0 en Junio 22, 2011, 07:12:09 PM
si me imrpime la variable. con espacios y todo.

pero en un .php aparte.

tengo esto:

<script language="JavaScript" type="text/JavaScript">

            $(document).ready(function(){

                $("#select1").change(function(event){
                    var id = $("#select1").find(':selected').val();

//var pagina = './imprime.php?id='+id;
//document.location.href=pagina;

                   $("#select2").load('genera-select.php?id='+id);

                });
            });
</script>


cuando en el combobox selecciono "informatica" me muestra el correspondiente nombre.
pero si en el combobox selecciono "ing en informatica" no me muestra nada.

creo que javascript no le esta pasando completamente la id.

pero lo pruebo enviando la id a otra pagina .php y me la muestra de lo mas bien :S
Título: Re:consulta sobre combobox
Publicado por: Devilboy en Junio 22, 2011, 10:33:51 PM
mandame por mp tu base de datos y tu index  y te lo checo man xq yo lo uso con espacios y sin problemas
Título: Re:consulta sobre combobox
Publicado por: ch1n0 en Junio 23, 2011, 09:54:26 AM
Devilboy solucione el problema, lo que hice fue guardar en la base de datos las carreras remplazando los "espacios" por  "guiones bajos", y despues parar mostrar la carrera solo cambio los "_" por " ".


Saludos.
Título: Re:consulta sobre combobox
Publicado por: ~ Yoya ~ en Junio 23, 2011, 10:45:15 AM
Otra cosa, si los espacios estan al principio y al final de la cadena puedes usar la función trim(). Es lo mejor para ese tipo de cosas.

Saludos!
Título: Re:consulta sobre combobox
Publicado por: Devilboy en Junio 23, 2011, 12:14:49 PM
Bueno te comento ke ya solucioné tu problema.

El error no era ni del index ni del genera sino en tu base de datos.

Unas recomendaciónes, crea siempre llaves primarias de tipo int y autoincrement, ademas no le des ningun valor en chrset y collations.
En el index al valor del select dale siempre el valor de tu llave primarias asi no tendrás problemas con acentos, espacios o
caracteres especiales.

te mando el archivo por MP

pruebalo y me comentas, solo cambia los valores del conexion y la variable session de false a true.
Título: Re:consulta sobre combobox
Publicado por: ch1n0 en Junio 23, 2011, 01:54:05 PM
ok muchas gracias.  :D