Foros del Web » Programando para Internet » PHP »

recorrer base de datos- URGENTE

Estas en el tema de recorrer base de datos- URGENTE en el foro de PHP en Foros del Web. amigos necesito saber en forma urgente si en php existe como en asp el movelast, movefirst, movenext, moveprevious necesito ir al ultimo registro de una ...
  #1 (permalink)  
Antiguo 29/11/2002, 13:26
Avatar de GaboMaKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Viña del Mar - Chile
Mensajes: 323
Antigüedad: 21 años, 5 meses
Puntos: 2
Exclamación recorrer base de datos- URGENTE

amigos necesito saber en forma urgente si en php existe como en asp el movelast, movefirst, movenext, moveprevious

necesito ir al ultimo registro de una tabla en mysql y anterior al ultimo, pero cooooomoooo????
help pleaseeee
__________________
Exito!!
:censura:
Visita Uganet.cl
  #2 (permalink)  
Antiguo 29/11/2002, 14:30
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Tienes la funcion mysql_data_seek() ( http://www.php.net/manual/en/functio...-data-seek.php ) para posicionarte en un registro. Luego llamas a mysql_fetch_array() para leer el registro. Para posicionarte en el ultimo registro lees el numero de registros devueltos con mysql_num_rows().

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 29/11/2002, 16:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Con:
mysql_result($consulta,nºregistro,campo);

tambien podrias obtener ese ultimo y antepenultimo registro (recorset que llaman en ASP nop? xD) ... en ese caso no seria el recorset .. mas bien seria un campo en concreto del registro N.

eso si, un mysql_query() y despues el mysql_num_rows() para obtener el total de registros ..

SI vas hacer el mysql_data_seek() (aquí obtendrias el puntero al recorset entero ..) .. puedes calcular el total de registros (y tal vez mas optimo) via Mysql con una sentencia:

$sql="SELECT COUNT(*) FROM tabla";

con esa sentencia .. no haces toda la consulta para luego solo contar su total de registros arrojados sino SOLO dejas a Mysql q te devuelva el total de registros de la consulta ejectada (con sus clausulas WHERE .. si las necesitas .. ORDER y sentido ASC/DESC no serian necesarios para el COUNT() del total ...

Bueno .. no se si la habré liado mas .. pero es para q se vea q depende de lo que estés haciendo se puede hacer de varias formas . icluso algunas mas optimas que otras.

Un saludo,

AHh.. se me olvidó .. Respuesta patrocinada por ASQL: Amigos del SQL xDDD .. (perteneciente al grupo OP (optimizacion: AAA, ASQL y mas orginaciones q se uniran :P)

Última edición por Cluster; 29/11/2002 a las 16:12
  #4 (permalink)  
Antiguo 30/11/2002, 10:49
Avatar de GaboMaKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Viña del Mar - Chile
Mensajes: 323
Antigüedad: 21 años, 5 meses
Puntos: 2
Cita:
Mensaje Original por Cluster
Con:
mysql_result($consulta,nºregistro,campo);

tambien podrias obtener ese ultimo y antepenultimo registro (recorset que llaman en ASP nop? xD) ... en ese caso no seria el recorset .. mas bien seria un campo en concreto del registro N.

eso si, un mysql_query() y despues el mysql_num_rows() para obtener el total de registros ..

SI vas hacer el mysql_data_seek() (aquí obtendrias el puntero al recorset entero ..) .. puedes calcular el total de registros (y tal vez mas optimo) via Mysql con una sentencia:

$sql="SELECT COUNT(*) FROM tabla";

con esa sentencia .. no haces toda la consulta para luego solo contar su total de registros arrojados sino SOLO dejas a Mysql q te devuelva el total de registros de la consulta ejectada (con sus clausulas WHERE .. si las necesitas .. ORDER y sentido ASC/DESC no serian necesarios para el COUNT() del total ...

Bueno .. no se si la habré liado mas .. pero es para q se vea q depende de lo que estés haciendo se puede hacer de varias formas . icluso algunas mas optimas que otras.

Un saludo,

AHh.. se me olvidó .. Respuesta patrocinada por ASQL: Amigos del SQL xDDD .. (perteneciente al grupo OP (optimizacion: AAA, ASQL y mas orginaciones q se uniran :P)
Estimado Cluster: haber si entendi, ocupo primero el $sql="SELECT COUNT(*) FROM tabla"; para saber el total de registros, y luego mysql_result($consulta,nºregistro,campo);
para dirijirme por el ejemplo al ultimo y al total menos uno
__________________
Exito!!
:censura:
Visita Uganet.cl
  #5 (permalink)  
Antiguo 30/11/2002, 11:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero que necesitas exactamente?

El ultimo registro y antepenultimo .. o solo algun(os) (no todos) los campos de ese ultimo y antepenultimo registro?

Si solo requieres de "campos" .. (y no todos los del registro) usa mysql_result() .. pero si requieres el registro entero (e "recordset") .. mejor usa el método de mysql_seek y mysql_fecht_xxx que describió josemi ..

Si vas a contar registros (tra .. la la :P) .. via SQL (COUNT(*) .. ) deberas ejecutar la consulta y obtener el unico resultado que arroja:

$consulta_total=mysql_query("SELECT COUNT(*) FROM tabla");
$total_registros=mysql_result($consulta_total,0);

y de ahí .. tendrias .. mmm jeje ahora q pienso ( ) ... para hacer un mysql_data_seek() igual hay que hacer la consulta entera con sus registros que arroje .. así q .. no serviria de mucho hacer lo que propongo pues tendrias que hacer otra vez otra consulta ...

Mira el ejemplo de php.net sobre mysql_data_seek():
Código PHP:
<?php
   $link 
mysql_pconnect("localhost""mysql_user""mysql_password")
       or die(
"Could not connect");

   
mysql_select_db("samp_db")
       or exit(
"Could not select database");

   
$query "SELECT last_name, first_name FROM friends";
   
$result mysql_query($query)
       or die(
"Query failed");

   
/* fetch rows in reverse order */
   
for ($i mysql_num_rows($result) - 1$i >= 0$i--) {
       if (!
mysql_data_seek($result$i)) {
           echo 
"Cannot seek to row $i\n";
           continue;
       }

       if(!(
$row mysql_fetch_object($result)))
           continue;

       echo 
"$row->last_name $row->first_name<br />\n";
   }

   
mysql_free_result($result);
?>
Lo que "queria" explicar en el mensaje anterior era las diferencias entre contar registros con la funcion mysql_num_rows() de PHP q requiere de la consulta realizada total (con sus N registros que genere) o de hacerlo via SQL directo .. que en este ultimo caso .. Mysql es quien te da el total en un solo resultado de un registro con la consiguiente velocidad de proceso q se ahorra si SOLO necesitamos el total ..

Un saludo,
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 15:29.