Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Link hacia el siguiente ID atras y adelante php

Estas en el tema de Link hacia el siguiente ID atras y adelante php en el foro de PHP en Foros del Web. Estimados, tengo una base de datos hecha que es un portfolio. En la tabla grafica tengo cargado mis trabajos con su titulo y descripción y ...
  #1 (permalink)  
Antiguo 16/02/2016, 09:22
 
Fecha de Ingreso: diciembre-2001
Ubicación: Argentina
Mensajes: 693
Antigüedad: 22 años, 4 meses
Puntos: 1
Link hacia el siguiente ID atras y adelante php

Estimados,

tengo una base de datos hecha que es un portfolio. En la tabla grafica tengo cargado mis trabajos con su titulo y descripción y fotos. Estos tienen un ID en autoincrement.

Los trabajos los levanto en una pagina desde la base de datos de la siguiente manera

Código PHP:
$connection = new PDO('mysql:host='.$host.';dbname='.$db_name.';charset=utf8'''.$username.''''.$password.'');
foreach(
$connection->query('SELECT * FROM grafica WHERE id = '.$valorid.'') as $row) {


Quiero poner dos links de anterior y siguiente para que estos vayan al siguiente y anterior ID para que me traiga el trabajo. Vi algunas soluciones en internet pero el tema es que los ID no son consecutivos, o sea que tengo 1, 2, 5, 8, etc.

Agradecería si alguien me puede guiar a resolver esto.

Gracias de antemano.
  #2 (permalink)  
Antiguo 16/02/2016, 10:35
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Link hacia el siguiente ID atras y adelante php

Yo lo resuelvo con algo parecido a esto:

Código PHP:
Ver original
  1. $anterior=mysqli_fetch_assoc(mysqli_query("SELECT id FROM mitabla  WHERE id=(SELECT MAX(id) FROM mitabla WHERE id < $id )"));
  2. $anterior=$anterior['id'];
  3.  
  4. $siguiente=mysqli_fetch_assoc(mysqli_query("SELECT id FROM mitabla  WHERE id=(SELECT MIN(id) FROM mitabla  WHERE id > $id )"));
  5. $siguiente=$siguiente['id'];

Claro que se debe realizar algunas validaciones como por ejemplo si quieres hacer un tipo "carrusel", que el anterior al primero sea el último y el siguiente al último sea el primero.
  #3 (permalink)  
Antiguo 16/02/2016, 11:51
 
Fecha de Ingreso: diciembre-2001
Ubicación: Argentina
Mensajes: 693
Antigüedad: 22 años, 4 meses
Puntos: 1
Respuesta: Link hacia el siguiente ID atras y adelante php

Estimado,

gracias por tu respuesta.

probando el codigo me aparece el siguiente error, sabes a que se refiere?

mysqli_query() expects at least 2 parameters, 1 given in
  #4 (permalink)  
Antiguo 16/02/2016, 11:55
 
Fecha de Ingreso: marzo-2015
Mensajes: 45
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Link hacia el siguiente ID atras y adelante php

te dice de que mysql espera dos parametros y tu solo le pasas uno
  #5 (permalink)  
Antiguo 16/02/2016, 12:53
 
Fecha de Ingreso: diciembre-2001
Ubicación: Argentina
Mensajes: 693
Antigüedad: 22 años, 4 meses
Puntos: 1
Respuesta: Link hacia el siguiente ID atras y adelante php

Te hago dos consultas:

1 - Cual es el parametro que le pase o mejor dicho que otro parametro le debería pasar.

2 - La consulta a la base de datos no deberia ser por medio de PSO leí por ahi, este tipo de consultas no se utiliza mas por casualidad?

Disculpen la ignorancia soy autodidacta y muy nuevo en esto de php.

Saludos
  #6 (permalink)  
Antiguo 16/02/2016, 13:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Link hacia el siguiente ID atras y adelante php

Cita:
1 - Cual es el parametro que le pase o mejor dicho que otro parametro le debería pasar.
Para eso está el manual, ahí se explica cómo es que debes usar dicha función: http://php.net/mysqli_query

Cita:
2 - La consulta a la base de datos no deberia ser por medio de PSO leí por ahi, este tipo de consultas no se utiliza mas por casualidad?
¿Qué es PSO?

PDTA: Si quieres discutir temas relacionados con base de datos deberías publicarlos en el foro de base de datos.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 16/02/2016, 13:32
 
Fecha de Ingreso: diciembre-2001
Ubicación: Argentina
Mensajes: 693
Antigüedad: 22 años, 4 meses
Puntos: 1
Respuesta: Link hacia el siguiente ID atras y adelante php

Me referia a PDO, disculpen
  #8 (permalink)  
Antiguo 16/02/2016, 13:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Link hacia el siguiente ID atras y adelante php

Cita:
Iniciado por snakepit Ver Mensaje
Me referia a PDO, disculpen
Bueno, usar PDO es una también opción, pero no porque "lo hayas leído por ahí" te lo tienes que tomar todo como un dogma.

Además PDO entiende perfectamente MySQL.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 16/02/2016, 13:37
 
Fecha de Ingreso: diciembre-2001
Ubicación: Argentina
Mensajes: 693
Antigüedad: 22 años, 4 meses
Puntos: 1
Respuesta: Link hacia el siguiente ID atras y adelante php

Gracias por tus consejos Pateketrueke, no he podido despejar mi duda inicial y me fui por las ramas. Conocen algun tutorial donde pueda hacer funcionar ese codigo que me pasaron arriba?
  #10 (permalink)  
Antiguo 16/02/2016, 14:42
 
Fecha de Ingreso: diciembre-2001
Ubicación: Argentina
Mensajes: 693
Antigüedad: 22 años, 4 meses
Puntos: 1
Respuesta: Link hacia el siguiente ID atras y adelante php

Encontre la solución lo posteo por si otro lo necesita,

Código PHP:
Ver original
  1. foreach($connection->query('SELECT * FROM grafica WHERE id = (select min(id) from grafica where id > '.$valorid.')') as $row) {
  2.  
  3.                 }
  4.  
  5.  
  6. <?php echo $row['id']; ?>

Etiquetas: atras, hacia, link, select, siguiente, sql, tabla
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 23:44.