Foros del Web » Programando para Internet » PHP »

While para conexion orientada a objetos

Estas en el tema de While para conexion orientada a objetos en el foro de PHP en Foros del Web. Hola. El otro día me aconsejasteis sobre otro tema. Me fué muy util. Ahora tengo una duda más de orientacion a objetos. Yo sé cargar ...
  #1 (permalink)  
Antiguo 11/10/2012, 02:55
 
Fecha de Ingreso: octubre-2012
Mensajes: 38
Antigüedad: 11 años, 6 meses
Puntos: 0
While para conexion orientada a objetos

Hola. El otro día me aconsejasteis sobre otro tema. Me fué muy util. Ahora tengo una duda más de orientacion a objetos. Yo sé cargar un combo desde BD con código "quick and dirty" como p.ej

Código PHP:
$link mysql_connect($_SESSION['HOST'], $_SESSION['USER'], $_SESSION['PASS']);
mysql_select_db($_SESSION['SCHEMA'], $link);
echo 
'<select name="combopaises">';
$sql="SELECT short_name FROM country_t";
$result=mysql_query($sql);
                
$i 0;
echo 
"<option value= " "> </option>";
while (
$row mysql_fetch_row($result)) 
       {
    echo 
"<option value='" $row[$i] . "'>" $row[$i] . "</option>";
       }
echo 
"</select>"
Y esto me carga el combo con la debida select. OK.
Ahora intento entrar en la orientación a objetos, y planteo algo como....

Código PHP:
$mysqli = new mysqli($_SESSION['HOST'], $_SESSION['USER'], $_SESSION['PASS'], $_SESSION['SCHEMA']);
$stmt $mysqli -> stmt_init();
$query "SELECT short_name FROM country_t";
$stmt -> prepare($query);
$stmt -> execute();
$stmt -> bind_result($existe);
$stmt -> fetch(); 
Pero lo que ahora no entiendo bien es como plantear un while, para hacer el fetch_row. Si tengo en $existe el resultado de la select, ¿no deberia poder plantear el mismo while de mi ejemplo con "while ($row = mysql_fetch_row($result))"? ¿Como deberia plantear el while?

Muchas gracias otra vez

Última edición por trulari; 11/10/2012 a las 03:35
  #2 (permalink)  
Antiguo 11/10/2012, 04:00
Myl
 
Fecha de Ingreso: agosto-2011
Mensajes: 61
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: While para conexion orientada a objetos

Pues de la misma forma que lo tienes ahi:

Código PHP:
while($stmt->fetch(){


  #3 (permalink)  
Antiguo 11/10/2012, 04:11
 
Fecha de Ingreso: octubre-2012
Mensajes: 38
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: While para conexion orientada a objetos

Hola, gracias. Pero no, de la misma forma no, hay algo que obvio, ya que en la formulacion original, p.ej mi while me permite hacer

Código PHP:
while ($row mysql_fetch_row($result)) 
       {
    echo 
"<option value='" $row[$i] . "'>" $row[$i] . "</option>";
       } 
con row iterando las filas y pintandome el combo debido. En cambio comodices tú, que ya lo tenia probado, si hago

Código PHP:
 while(row$stmt->fetch()){


o

Código PHP:
 while($stmt->fetch()){


El combo sale en blanco y no carga, no se si habria que plantearlo de otra forma, pero así desde luego no carga el combo, no es lo mismo, no
  #4 (permalink)  
Antiguo 11/10/2012, 05:59
Myl
 
Fecha de Ingreso: agosto-2011
Mensajes: 61
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: While para conexion orientada a objetos

Intenta de esta forma

Código PHP:
$servidor   "";
$nombreBD   "";
$usuario    "";
$contrasena "";

$conexion = new mysqli($servidor,$usuario,$contrasena,$nombreBD);

if(
$conexion->connect_error){
    die(
"Error en la conexion : ".$conexion->connect_errno.
                              
"-".$conexion->connect_error);
}
echo 
"<select name='combopaises'>";

$query "SELECT short_name FROM country_t";
$stmt $conexion->prepare($query);
$stmt->execute();
$stmt->bind_result($exist);
while(
$stmt->fetch()){
        echo 
"<option value='$exist'>$exist</option>";
}
echo 
"</select>";

$stmt->close();
$conexion->close(); 
  #5 (permalink)  
Antiguo 15/10/2012, 01:41
 
Fecha de Ingreso: octubre-2012
Mensajes: 38
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: While para conexion orientada a objetos

Ey! No vi tu post pero acabé por llegar a la misma conclusión que me indicas, muchisimas gracias de todas formas!

Etiquetas: conexion, mysql, objetos, orientada
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 01:50.