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