Foros del Web » Programando para Internet » PHP »

Duda consulta

Estas en el tema de Duda consulta en el foro de PHP en Foros del Web. Hola tengo la siguiente duda: Estoy sacando datos de la BD, por ejemplo estoy en un resultado que tiene id5, si miro la bd el ...
  #1 (permalink)  
Antiguo 10/02/2010, 10:19
 
Fecha de Ingreso: enero-2009
Mensajes: 434
Antigüedad: 11 años
Puntos: 5
Duda consulta

Hola tengo la siguiente duda:

Estoy sacando datos de la BD, por ejemplo estoy en un resultado que tiene id5, si miro la bd el siguiente alomejor tiene id 20, porque he ido borrando resultados, mi pregunta es, que codigo se utilizaria para ir al siguiente resultado de la tabla, partiendo del que estoy ?

Quiero hacer un link para pasar al siguiente archivo, a mano seria facil, Si estoy en ID5, le digo que valla a ID6, pero alomejor el siguiente es 20

Espero que se entienda la pregunta
  #2 (permalink)  
Antiguo 10/02/2010, 10:23
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 10 años, 3 meses
Puntos: 334
Respuesta: Duda consulta

Código SQL:
Ver original
  1. SELECT MAX(id)+1 FROM tabla

con eso seleccionas el valor maximo de los id... +1
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 10/02/2010, 10:26
 
Fecha de Ingreso: enero-2009
Mensajes: 434
Antigüedad: 11 años
Puntos: 5
Respuesta: Duda consulta

Realmente no seria el valor maximo, seria el siguiente del que estoy....
  #4 (permalink)  
Antiguo 10/02/2010, 10:32
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 10 años, 3 meses
Puntos: 334
Respuesta: Duda consulta

entonces solo le sumas 1 en php ?

Código PHP:
Ver original
  1. $consulta = "SELECT id FROM tabla .. bla bla";
  2. // todo el resto de cosas para obtener datos de la consulta
  3. $id = $id + 1;
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 10/02/2010, 10:38
 
Fecha de Ingreso: enero-2009
Mensajes: 434
Antigüedad: 11 años
Puntos: 5
Respuesta: Duda consulta

Es lo que he explicado al principio, que las id no son consecutivas, si doy de alta 10 resultados y borro 5, alomejor la tabla es

id

1
2
5
6
12

Entonces necesito sacar el siguiente al que estoy , el que estoy lo recojo en una variable

$id = $_GET[''id];

Y yo quiero que al pinchar un boton me saque el siguiente id de la BD, si estoy en el 2, que al pinchar me saque 5, si le doy +1 seria 3
  #6 (permalink)  
Antiguo 10/02/2010, 10:41
Avatar de netovs  
Fecha de Ingreso: enero-2010
Ubicación: Mexico DF
Mensajes: 150
Antigüedad: 10 años
Puntos: 9
Respuesta: Duda consulta

Saludos, muchas veces se pueden resolver muchas cosas desde el query

Código PHP:
Ver original
  1. $qry = mysql_query("SELECT * FROM [laTabla] ORDER BY id");
  2. while ($row = mysql_fetch_array($qry, MYSQL_BOTH)) {
  3.     array_push($idArray, $row[0]);
  4. }
  5.  
  6. foreach($idArray as $k => $v)
  7. {
  8. echo $k . ' ' ; // los indices y con estos ya podrias navegar hacia atras o adelante
  9. echo $b . '</br> ' ; // los id que salen de la base
  10. }

De esta forma si tu tabla tiene los id 1,2,6,7,20,21,27 pues los resultados irían en ese orden.

Lo puedes adornar metiendolo en un array y despues hacer los recorridos mediante un array_sort de esta forma ¿que pasa si el id6 no existe? pues se va al siguiente.

Espero te sea de utilidad.
  #7 (permalink)  
Antiguo 10/02/2010, 10:45
 
Fecha de Ingreso: enero-2009
Mensajes: 434
Antigüedad: 11 años
Puntos: 5
Respuesta: Duda consulta

Cita:
Iniciado por netovs Ver Mensaje
Saludos, muchas veces se pueden resolver muchas cosas desde el query

Código PHP:
Ver original
  1. $qry = mysql_query("SELECT * FROM [laTabla] ORDER BY id");
  2. while ($row = mysql_fetch_array($qry, MYSQL_BOTH)) {
  3.     array_push($idArray, $row[0]);
  4. }
  5.  
  6. foreach($idArray as $k => $v)
  7. {
  8. echo $k . ' ' ; // los indices y con estos ya podrias navegar hacia atras o adelante
  9. echo $b . '</br> ' ; // los id que salen de la base
  10. }

De esta forma si tu tabla tiene los id 1,2,6,7,20,21,27 pues los resultados irían en ese orden.

Lo puedes adornar metiendolo en un array y despues hacer los recorridos mediante un array_sort de esta forma ¿que pasa si el id6 no existe? pues se va al siguiente.

Espero te sea de utilidad.
Muchas gracias, de todos modos para algo tan simple como sacar el siguiente resultado del que estoy, no hay algo mas sencillo ? asi no complico tanto el codigo
  #8 (permalink)  
Antiguo 10/02/2010, 10:47
Avatar de netovs  
Fecha de Ingreso: enero-2010
Ubicación: Mexico DF
Mensajes: 150
Antigüedad: 10 años
Puntos: 9
Respuesta: Duda consulta

Cita:
Iniciado por netovs Ver Mensaje
Saludos, muchas veces se pueden resolver muchas cosas desde el query

Código PHP:
Ver original
  1. $qry = mysql_query("SELECT * FROM [laTabla] ORDER BY id");
  2. while ($row = mysql_fetch_array($qry, MYSQL_BOTH)) {
  3.     array_push($idArray, $row[0]);
  4. }
  5.  
  6. foreach($idArray as $k => $v)
  7. {
  8. echo $k . ' ' ; // los indices y con estos ya podrias navegar hacia atras o adelante
  9. echo $b . '</br> ' ; // los id que salen de la base
  10. }

De esta forma si tu tabla tiene los id 1,2,6,7,20,21,27 pues los resultados irían en ese orden.

Lo puedes adornar metiendolo en un array y despues hacer los recorridos mediante un array_sort de esta forma ¿que pasa si el id6 no existe? pues se va al siguiente.

Espero te sea de utilidad.
El codigo quedaria finalmente mas o menos asi:

Código PHP:
Ver original
  1. $qry = mysql_query("SELECT * FROM [laTabla] ORDER BY id");
  2. while ($row = mysql_fetch_array($qry, MYSQL_BOTH)) {
  3.     array_push($idArray, $row[0]);
  4. }
  5.  
  6. foreach($idArray as $k => $v)
  7. {
  8. echo $k . ' ' ; // los indices y con estos ya podrias navegar hacia atras o adelante
  9. echo $b . '</br> ' ; // los id que salen de la base
  10. echo '<a href="elink?id=' . $b . '" > Siguiente </a>';
  11. }
  #9 (permalink)  
Antiguo 10/02/2010, 10:53
Avatar de netovs  
Fecha de Ingreso: enero-2010
Ubicación: Mexico DF
Mensajes: 150
Antigüedad: 10 años
Puntos: 9
Sonrisa Respuesta: Duda consulta

Cita:
Iniciado por esunestudio Ver Mensaje
Muchas gracias, de todos modos para algo tan simple como sacar el siguiente resultado del que estoy, no hay algo mas sencillo ? asi no complico tanto el codigo
A menos que uses un framework con POO se hace un poco más sencillo, de otra forma, dudo que exista algo así como lo planteas y si existe también hazmelo saber por que creo que lo mas sencillo es así.


Saludos.
  #10 (permalink)  
Antiguo 10/02/2010, 16:41
 
Fecha de Ingreso: enero-2009
Mensajes: 434
Antigüedad: 11 años
Puntos: 5
Respuesta: Duda consulta

No me funciona el codigo que habeis puesto, alguna otra sugerencia ?
  #11 (permalink)  
Antiguo 10/02/2010, 17:14
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 17 años, 11 meses
Puntos: 29
Respuesta: Duda consulta

Es mejor el código que te han dado arriba, pero otra solución sería algo así:
Código PHP:
Ver original
  1. //Se inicializan sin tener nada al principio, si sigue sin haber algo al final del script no se imprimirá
  2. $anterior;
  3. $siguiente;
  4.  
  5.         $conexion=mysql_connect($dbserver,$dbuser,$dbpass);
  6.         mysql_select_db($db,$conexion);
  7.         $sql="SELECT * FROM usuarios ORDER BY id ASC;";
  8.         $result=mysql_query($sql,$conexion) or die ("error");
  9.         $siguienteVuelta=0;
  10.         while($row2=mysql_fetch_array($result)){
  11.             if($siguienteVuelta==0){
  12.                 if($row2['id']==$_GET['id']) {
  13.                     $siguienteVuelta=1;
  14.                 } else {
  15.                     $siguienteVuelta=0;
  16.                 }
  17.             }else {//encontramos el siguiente
  18.                 $siguiente="<a href='user.php?id=".$row2['id']."'>".$row2['usuario']."</a>";
  19.                     $siguienteVuelta=0;
  20.             }
  21.        
  22.         }
  23.  
  24.         mysql_free_result($result);
  25.  
  26.         $sql="SELECT * FROM usuarios ORDER BY id DESC;";
  27.         $result=mysql_query($sql,$conexion) or die ("error");
  28.                 $siguienteVuelta1=0;
  29.         while($row2=mysql_fetch_array($result)){
  30.             if($siguienteVuelta1==0){
  31.                 if($row2['id']==$_GET['id']) {
  32.                     $siguienteVuelta1=1;
  33.                 } else {
  34.                     $siguienteVuelta1=0;
  35.                 }
  36.             }else {//encontramos el anterior
  37.                 $anterior="<a href='user.php?id=".$row2['id']."'> ".$row2['usuario']."</a>";
  38.                     $siguienteVuelta1=0;
  39.             }
  40.        
  41.         }
  42.  
  43.         mysql_free_result($result);
  44.                 mysql_close($conexion);
  45.  
  46.  
  47. //imprimimos los resultados:
  48.  
  49. echo $siguiente." <br>";
  50. echo $anterior;
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #12 (permalink)  
Antiguo 10/02/2010, 18:13
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 10 años
Puntos: 5
Respuesta: Duda consulta

en vez de manejarlo por ID podrías manejarlo por paginación....
Código PHP:
Ver original
  1. $inicio=$_GET["Inicio"];
  2. $query="select * from tabla ORDER BY  limit $inicio to $inicio";
y

tu link para atras y siguiente sería:

Código PHP:
Ver original
  1. echo("<a href='pag.php?Inicio="".($_GET["Inicio"]-1)."'>Anterior</a>")
  2. echo("<a href='pag.php?Inicio="".($_GET["Inicio"]+1)."'>Siguiente</a>");

Así ya no lo llamarías por ID sino por su posición en la consulta

Etiquetas: Ninguno
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:28.