Foros del Web » Programando para Internet » PHP »

ayuda con combobox y mysql

Estas en el tema de ayuda con combobox y mysql en el foro de PHP en Foros del Web. Hola bueno les cuento necesito llenar un combo box con los resultados de una consulta en mysql, mi problema es que los combobox solo se ...
  #1 (permalink)  
Antiguo 23/04/2010, 09:23
Avatar de khatta  
Fecha de Ingreso: abril-2010
Mensajes: 22
Antigüedad: 14 años, 7 meses
Puntos: 0
ayuda con combobox y mysql

Hola bueno les cuento necesito llenar un combo box con los resultados de una consulta en mysql, mi problema es que los combobox solo se llenan con el 1 resultado de la consulta.. poseo una clase de conexion..

Clase de conexion a BD

Código PHP:
<?php
/**
 *  Clase Para manejar DB de MySQL de manera objetual
 *  incorpora los metodos mas comunmente utilizados
 */
class DB{    
    
    private 
$url;//URL que utilizamos para conectarnos a MySql
    
private $usr;//User que usamos para conectarnos a la DB
    
private $pas;//Password para acceder a la DB
    
private $db;//Base de Datos que utilizaremos
    
private $con;//Manipulador de la Base de datos
    
private $cur;//cursor de la DB

    /**    Metodo constructor de la clase
     *     @param $url    :    url de la Db a la cual nos conectaremos
     *     @param $usr    :    nombre usuario de la DB
     *     @param $pas    :    clave para acceder a la DB
     *     @param $db    :    database a la cual nos conectaremos 
     */
    
public function __construct($url='localhost',$usr='root',$pass='',$db='air_r1'){
        
$this->url=$url;
        
$this->usr=$usr;
        
$this->pas=$pass;
        
$this->db=$db;
        
$this->open();
    }
    

    
/**    metodo para abrir la conexion a la DB
     *    en el caso de que no se pueda hacer conexion al dbms de MySql
     *    lanzara excepcion, al igual que si la database especificada
     *    no podemos encontrarla, en el caso de que se establezca una 
     *    conexion satisfactoria se inicializa el manipulador de la DB
     */ 
     
private function open(){
        
$this->con=mysql_connect($this->url,$this->usr,$this->pas);
        try{
            if(!
$this->con) die("no se realizo la conexion a MySql");
            if(!
mysql_select_db($this->db,$this->con)) die("no se pudo conectar a la db seleccionada");
        }catch(
Exception $ex){
            echo 
"error ".$ex->getCode().": ".$ex->getMessage()."<br>\n";
        }
    }
    
    
    
/**
     *     Metodo que libera la conexion a la DB
     * */
    
public function __destruct(){
        
mysql_close($this->con);
    }
    
    
/**
     *     Metodo que muestra todas las bases de datos disponibles
     *     @return $db[]    :    todas las db disponibles
     * */
    
public function show_dbs(){
        return 
mysql_list_dbs($this->con);
    }
    
    
/**
     *     Metodo para seleccionar una nueva DB
     *     @param    $nw_db    :    nueva DB a elegir
     * 
     * */
    
public function sel_db($nw_db){
        
$this->db=$nw_db;
    }
    
    
/**
     *     Metodo que usa un unbuffered query para realizar busqueda en DB
     *     @param $query    :    consulta SQL que se ejecutara en la DB
     * 
     * */
     
public function u_query($query){
        
$this->cur=mysql_unbuffered_query($query,$this->con);
    }
    
    
/**
     *     Metodo que realiza un query sobre la DB
     *     @param $query    :    consulta SQL a realizar en la DB
     * 
     * */
    
public function query($query){
        
$this->cur=mysql_query($query,$this->con);
    }
    
    
/**
     *     Metodo que devuelve el primer registro de la consulta
     *     @return $row    :    el registro de la consulta SQL que se realizo
     * */
    
public function fetch(){
        return 
mysql_fetch_array($this->cur);
    }
    
    
/**
     *     Metodo que devuelve el numero de filas que aparecieron por un
     *     SELECT en la DB
     *     @return $num    :    numero de registros en el ResultSet
     * 
     * */
    
public function num_rows(){
        if(
$this->cur){
            return 
mysql_num_rows($this->cur);
        }else{
            die(
"no se ha inicializado el cursor");
        }
    }
    
    
/**
     *     Metodo que devuelve la cantidad de filas afectadas por un UPDATE
     *     DELETE o INSERT en la DB
     *     @return $num    :    numero de registros afectados en la DB
     * */
    
public function affected_rows(){
        return 
mysql_affected_rows($this->con);
    }
    
    
/**
     *     Devuelve el nombre del campo en la posicion i
     *     @param $pos    :    posicion de la columna a buscar
     *     @return $name    :    nombre de la columna
     * */
    
public function field_name($pos){
        return 
mysql_field_name($this->cur,$pos);
    }
    
    
/**
     *     Devuelve el numero de columnas que hay en el ResultSet
     *     @return    $num    :    numero de columnas en el ResultSet
     * 
     * */
    
public function num_cols(){
        return 
mysql_num_fields($this->cur);
    }
    
    
/**
    *    Devuelve el numero de error lanzado por Mysql
    *    @return    $this->con->errno    :    numero de error de mysql
    *
    **/
    
public function errno(){
        return 
mysql_errno($this->con);
    }
    
    
/**
    *    Devuelve el error lanzado por Mysql
    *    @return    $this->con->error    :    error de mysql
    *
    **/
    
public function error(){
        return 
mysql_error($this->con);
    }
    
    
/**
    *    Devuelve el string con escape con cieros caracteres especiales
    *    Obs: no previene SQL injection
    *    @return    str    :    el string con caracteres con escape
    *
    **/
    
public function real_escape($str){
        return 
mysql_real_escape_string($str,$this->con);
    }
    
    
/**
    *    Devuelve el Charset utilizado actualmente en la DB
    *    @return str    :    el str con el charset utilizado en MySQL
    **/
    
public function encoding(){
        return 
mysql_client_encoding($this->con);
    }
    
    
/**
    *    Libera memoria del cursor utilizado con el query almacenado
    **/
    
public function free_result(){
        
mysql_free_result($this->cur);
    }
    
}
//fin clase DB
?>
y aki el codigo de la pagina donde esta el combo box ke no me funciona bien

Código PHP:
<?php
    session_start
();
        require_once 
"class.con.php";
        
$con = new DB("localhost","root","","fach");
        
        
//select que encuentra todos los planes de estudio existente en la DB
        
$plan "SELECT plan_de_estudio_id FROM plan_de_estudio";
        
$con->query($plan);
        
        if(
$con->num_rows()>0){
            while(
$rs=$con->fetch()){
                
$codPlan $rs['plan_de_estudio_id'];
            }
        }
?>
<html>
    <head>
        <title>Ingresar Notas</title>
    </head>
    <body>
        <form method="post">
            Buscar:<br>
            Plan de Estudio: <select name = "planEstudio">
                             <option value = "none">Seleccione</option>
                             <?php
                                
do{
                                    echo
"<option value = '$codPlan'>$codPlan</option>";    
                                }while(
$rs=$con->fetch());
                            
?></select>
            <?php
                
//select que muestra todas las asignaturas en el plan de estudio seleccionado
                
$asignatura ="SELECT asignatura_id FROM asignatura
                WHERE plan_de_estudio_plan_de_estudio_id = '$codPlan'"
;
                
$con->query($asignatura);
        
                if(
$con->num_rows()>0){
                    while(
$rs=$con->fetch()){
                        
$asignaturaCod $rs['asignatura_id'];
                    }
                }
            
?>
            Codigo asignatura: <select name = "asignaura">
                               <option value = "none">Seleccione</option>
                               <?php
                                    
do{
                                        echo
"<option value = '$asignaturaCod'>$asignaturaCod</option>";
                                    }while(
$rs=$con->fetch());
                              
?></select><br>        
            <?php
                
//select que muestra todos los alumnos en la asignatura
                
$alumno "SELECT DISTINCT alumno_apellido_paterno AS apellidoP, alumno_apellido_materno AS apellidoM,
                alumno_nombres AS nombres
                FROM alumno,alumno_en_asignatura
                WHERE asignatura_asignatura_id = '$asignaturaCod'
                ORDER BY apellidoP ASC"
;
                
$con->query($alumno);
        
                if(
$con->num_rows()>0){
                    while(
$rs=$con->fetch()){
                        
$apellidoPaterno $rs['apellidoP'];
                        
$apellidoMaterno $rs['apellidoM'];
                        
$nombres $rs['nombres'];
                    }
                }
            
?>
        Alumnos:<select name = "alumnos">
                <option value = "none">Seleccione</option>
                <?php
                    
do{
                        echo
"<option value '$apellidoPaterno' '$apellidoMaterno' '$nombres'>$apellidoPaterno $apellidoMaterno $nombres</option>";    
                    }while(
$rs=$con->fetch());    
                
?></select><br>
        Ingresar Nota:<input name ="valorNota" value = "0.00"><br>
        <input name = "btnIngresar" type="submit" value = "Ingresar">
        <input name="btnLimpiar" type="reset" value="Limpiar">                    
        </form>
    </body>
</html>
espero me puedan ayudar por ke ya llevo 2 dias en lo mismo ..

de antemano muchas gracias
  #2 (permalink)  
Antiguo 23/04/2010, 09:48
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
Respuesta: ayuda con combobox y mysql

Cita:
Iniciado por khatta Ver Mensaje
<option value = "none">Seleccione</option>
<?php
do{
echo"<option value = '$codPlan'>$codPlan</option>";
}while($rs=$con->fetch());
?></select>
No deberías estar usando la variable a la que igualas?? osea $rs??
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 23/04/2010, 10:05
Avatar de khatta  
Fecha de Ingreso: abril-2010
Mensajes: 22
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: ayuda con combobox y mysql

Cita:
Iniciado por Carxl Ver Mensaje
No deberías estar usando la variable a la que igualas?? osea $rs??
tu dices dejarlo asi ???

Código PHP:
<?php
                 
do{
                       echo
"<option value = '$rs'>$rs</option>";    
                  }while(
$rs=$con->fetch());
          
?></select>
  #4 (permalink)  
Antiguo 23/04/2010, 10:09
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
Respuesta: ayuda con combobox y mysql

Sí y no....

Se supone que $rs contiene los valores y los campos de tu db...

Deberías usarla como lo estás haciendo acá:

Código PHP:
Ver original
  1. $rs['plan_de_estudio_id'];

Osea $rs es un arreglo de valores, debes saberlo usar.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 23/04/2010, 10:21
Avatar de khatta  
Fecha de Ingreso: abril-2010
Mensajes: 22
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: ayuda con combobox y mysql

Cita:
Iniciado por Carxl Ver Mensaje
Sí y no....

Se supone que $rs contiene los valores y los campos de tu db...

Deberías usarla como lo estás haciendo acá:

Código PHP:
Ver original
  1. $rs['plan_de_estudio_id'];

Osea $rs es un arreglo de valores, debes saberlo usar.

Saludos
tu dices
asi??
Código PHP:
<?php 
                 
do{ 
                       echo
"<option value = '$rs['plan_de_estudio_id']'>$rs['plan_de_estudio_id']</option>";     
                  }while(
$rs=$con->fetch()); 
          
?></select>
disculpa la torpeza pero soy nueva en esto
  #6 (permalink)  
Antiguo 23/04/2010, 10:23
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
Respuesta: ayuda con combobox y mysql

Sí esa es la idea jeje.

Pero haz esto cada vez que uses array's impresos:

Código PHP:
Ver original
  1. <?php
  2.                  do{
  3.                        echo"<option value = '{$rs['plan_de_estudio_id']}'>{$rs['plan_de_estudio_id']}</option>";    
  4.                   }while($rs=$con->fetch());
  5.           ?>

Si te fijas encerré entre llaves las variable $rs.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #7 (permalink)  
Antiguo 23/04/2010, 10:27
Avatar de khatta  
Fecha de Ingreso: abril-2010
Mensajes: 22
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: ayuda con combobox y mysql

Cita:
Iniciado por Carxl Ver Mensaje
Sí esa es la idea jeje.

Pero haz esto cada vez que uses array's impresos:

Código PHP:
Ver original
  1. <?php
  2.                  do{
  3.                        echo"<option value = '{$rs['plan_de_estudio_id']}'>{$rs['plan_de_estudio_id']}</option>";    
  4.                   }while($rs=$con->fetch());
  5.           ?>

Si te fijas encerré entre llaves las variable $rs.

Saludos

Disculpa tanta molestia jaja.. pero no me funciona al hacerlo asi el combobox keda vacio... no rescata ningun valor de la BD y la query esta buena por que es un select simple...
  #8 (permalink)  
Antiguo 23/04/2010, 10:31
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
Respuesta: ayuda con combobox y mysql

Bueno pues si eso no está funcionando, depura las variables que intervienen en el proceso.

Hazle var_dump a $con->fetch(), ó a $con->query($plan). Puedes también hacer un echo a la consulta y ver que funcione ejecutándola en la consola mysql directamente.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #9 (permalink)  
Antiguo 23/04/2010, 10:39
Avatar de khatta  
Fecha de Ingreso: abril-2010
Mensajes: 22
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: ayuda con combobox y mysql

por ke motivo crees queno funciona tiene algo de malo la programacion ..???

la consulta funciona probada directamente en mysql
  #10 (permalink)  
Antiguo 23/04/2010, 10:48
Avatar de khatta  
Fecha de Ingreso: abril-2010
Mensajes: 22
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: ayuda con combobox y mysql

Cita:
Iniciado por Carxl Ver Mensaje
Bueno pues si eso no está funcionando, depura las variables que intervienen en el proceso.

Hazle var_dump a $con->fetch(), ó a $con->query($plan). Puedes también hacer un echo a la consulta y ver que funcione ejecutándola en la consola mysql directamente.

Saludos
ke significa ke el resultado de vr_dump sea false?
  #11 (permalink)  
Antiguo 23/04/2010, 10:51
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
Respuesta: ayuda con combobox y mysql

Depende a qué variable se la apliques jeje xD
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #12 (permalink)  
Antiguo 23/04/2010, 11:10
Avatar de khatta  
Fecha de Ingreso: abril-2010
Mensajes: 22
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: ayuda con combobox y mysql

Cita:
Iniciado por Carxl Ver Mensaje
Depende a qué variable se la apliques jeje xD
al aplicarla a $con->fetch() me arroja flase
al aplicarla a $con->query($plan) me arroja Null???
  #13 (permalink)  
Antiguo 23/04/2010, 11:13
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
Respuesta: ayuda con combobox y mysql

Al parecer tu problema está en la consulta.

Hazle un echo a ella y la instrucción que arroje en pantalla cópiala y ejecútala en mysql directamente para que veas como va. Con ese te cercioras que está bien o no.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #14 (permalink)  
Antiguo 23/04/2010, 11:32
Avatar de khatta  
Fecha de Ingreso: abril-2010
Mensajes: 22
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: ayuda con combobox y mysql

Cita:
Iniciado por Carxl Ver Mensaje
Al parecer tu problema está en la consulta.

Hazle un echo a ella y la instrucción que arroje en pantalla cópiala y ejecútala en mysql directamente para que veas como va. Con ese te cercioras que está bien o no.

Saludos
la consulta esta buena la he probado varias veces y funciona muybn..

Etiquetas: combobox, mysql
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 12:55.