Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/04/2010, 09:23
Avatar de khatta
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