Foros del Web » Programando para Internet » PHP »

Boton anterior y siguiente en Php y consulta en Mysql

Estas en el tema de Boton anterior y siguiente en Php y consulta en Mysql en el foro de PHP en Foros del Web. Hola a todos nuevamente con una duda... tengo un sistema de noticias que presenta una resumen de todas las noticias en un una pagina noticias.php ...
  #1 (permalink)  
Antiguo 25/02/2010, 14:00
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 18 años, 9 meses
Puntos: 0
Boton anterior y siguiente en Php y consulta en Mysql

Hola a todos nuevamente con una duda... tengo un sistema de noticias que presenta una resumen de todas las noticias en un una pagina noticias.php despues con ayuda de ajax - esto para no recargar la pagina - cuando el visitante le da clic en el ya clasico leer mas, mando el id de la noticia y me despliega la noticia completa hasta aqui ningun problema. lo que quiero hacer es poner un boton o un texto que diga noticia siguiente y noticia anterior lo intente de esta menera pero no resulto aqui mi codigo

Código PHP:
$idnews=$_POST['idnews'];// esta es la variable que mando para recibirlo en el ajax 
no voy a poner el ajax ya que lo unico que hace es mandar llamar un modulo de php y desplegarlo en un div tipo mudulo.php?idnews=998.

mi consulta en php para ese id y desplegar el contenido es.

Código PHP:
// consulta tabla de noticias por si ID
 
function consultarid($idnews){
   
$con = new DBManager;
   if(
$con->conectar()==true){
     
$query "SELECT * FROM noticias WHERE id_noticia = $idnews";
     
$result = @mysql_query($query);
     if (!
$result)
       return 
false;
     else
       return 
$result; echo "deberia enviar datos";
    }
  
 } 
Aqui recibo los datos de la consulta y los mando desplegar con divs y css, todo bien

Código PHP:
$row = mysql_fetch_array($consulta);

 //valores de las consultas
 $titulo=$row['titulo'];
 $resena=utf8_encode($row['resena']);
 $imagen=$row['imagen'];
 $articulo=utf8_encode($row['articulo']);
 $piefoto=utf8_decode($row['piefoto']);
 $autor=utf8_decode($row['autor']);
 $fecha= explode('-',$row['fecha']);
 
 //muestra los datos consultados en los campos de la tabla
?>
 <div class="noticia_detalle">
   <h3><?php echo $titulo?></h3><br />
    Por: <?php echo " ".$autor?>   
    <div class="noticia_img"><img src="<?php echo $imagen?>" width="300" alt="<?php echo $piefoto;?>" />
     <div class="noticia_footer"><?php echo $piefoto;?></div>
    </div> 
    <div class="noticia_info">
      <div class="noticia_date"><?php echo "$fecha[2].$fecha[1].$fecha[0]"?></div>
      <div class="noticia_resena" style="margin: 10px 0 0;"><?php echo $resena."<br>" ?></div>
      <div class="noticia_descripcion"><?php echo nl2br($articulo)."<br>"?></div>
    </div>
 </div>


mi problema es este cuando pongo el boton anterior, mas bien el enlace pongo asi

Código HTML:
<a id="anterior" onclick="pedirdatos(<?php echo $row['id_noticia']-1; ?>)" >Anterior <?php echo $row['id_noticia']-1; ?></a> 

pedirdatos(), solo es la funcion de ajax que manda a llamar modulo de php donde se despliga la info completa que puse mas arriba...
pense que que con $row['id_noticia']-1; se recorria un lugar el array del id, pero no solo le resta 1 al id es decir que si el id es 998 lo deja en 997 y si ese id no existe en la tabla.. pss me manda nada de informacion... alguien que ya haya hecho esto.. se que existe una clase que se llama paginator de php.. pero me gustaria hacerlo con codigo...gracias de antemano.
  #2 (permalink)  
Antiguo 25/02/2010, 18:42
Avatar de camsworksinc  
Fecha de Ingreso: julio-2008
Ubicación: Queretaro
Mensajes: 261
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: Boton anterior y siguiente en Php y consulta en Mysql

Una opcion es usar LIMIT en el query de MySQL para traer el renglon anterior y posterior al id_noticia, suponiendo que la tabla esta ordenada por este parametro:
El identificador anterior seria:
Código MySQL:
Ver original
  1. SELECT id_noticia FROM $mytable WHERE id_noticia < $id_noticia ORDER BY ID DESC LIMIT 1;

El identificador posterior seria:
Código MySQL:
Ver original
  1. SELECT id_noticia FROM $mytable WHERE id_noticia > $id_noticia ORDER BY ID ASC LIMIT 1;

Ya que tienes ambos valores, puedes poner la misma liga que tenias, pero enviandole a la funcion pedirdatos() estos valores.
  #3 (permalink)  
Antiguo 25/02/2010, 19:33
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Boton anterior y siguiente en Php y consulta en Mysql

Genial camsworksinc muchas gracias por tu ayuda enserio que me rompi la cabeza queriendolo hacer, no soy un experto ni nivel medio en este PHP, pero creeme que este foro y a gente como tu estoy aprendiendo.. muchas gracias.
  #4 (permalink)  
Antiguo 25/02/2010, 19:50
Avatar de camsworksinc  
Fecha de Ingreso: julio-2008
Ubicación: Queretaro
Mensajes: 261
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: Boton anterior y siguiente en Php y consulta en Mysql

Que bueno que pedamos ayudarnos entre todos , y mejor aun, cuando agradecen dicha ayuda!

Suerte!
__________________
¡Malditas computadoras que siempre hacen lo que les DIGO que hagan, no lo que QUIERO que hagan!
  #5 (permalink)  
Antiguo 25/02/2010, 23:19
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Boton anterior y siguiente en Php y consulta en Mysql


Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in bla bla bla on line 147


la linea 147 contiene lo que esta en negritas

Código PHP:
$consulta="SELECT id_noticia FROM noticias WHERE id_noticia > $idnews ORDER BY id_noticia ASC LIMIT 1";
              
$sql=mysql_query($consulta,$con);
             [
B$fila=mysql_fetch_array($sql);[/B


simplemente trate de silenciarlo con un @mysql_fetch_array($sql)

con eso ya no me mostro el warning pero ya no me da el registro anterior o siguiente aunque si exista en la tabla simplemente me devuelve la variable vacia. le agregue esto para crear el enlace y asegurarme de que no estemos en el primer registro o el final.


Código PHP:
include("conexion.php");
              
$query "SELECT id_noticia FROM noticias WHERE id_noticia< $idnews ORDER BY id_noticia DESC LIMIT 1";
              
$result=mysql_query($query,$con);
              
$row=@mysql_fetch_array($result);
              
$idant=$row['id_noticia'];
if(
$idant=="")
              echo 
"<span id=\"anterior\">Anterior</span>";
              else
              echo 
"<a id=\"anterior\" href=\"noticiadetalle.php?idnews=$idant;\" >Anterior </a>" 

otra pregunta.. como le hago para sacar los dos en una misma consulta porque segun el warning se esta ciclando o algo asi.. me indica que es recursivo como, si se puede, sacar el registo anterior y siguiente al mismo tiempo
  #6 (permalink)  
Antiguo 25/02/2010, 23:34
Avatar de camsworksinc  
Fecha de Ingreso: julio-2008
Ubicación: Queretaro
Mensajes: 261
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: Boton anterior y siguiente en Php y consulta en Mysql

Lo que te dice el warning, es que el valor que espera la funcion mysql_fetch_array, es distinto al que le estas dando. Puede ser que el query no este bien planteado. Por ejemplo, si tu codigo de noticias NO tiene solamente numeros, sino tambien letras, entonces el valor con el que estas comparando, debes de encerrarlo entre comillas asi:
SELECT id_noticia FROM noticias WHERE id_noticia< '$idnews' ORDER BY id_noticia DESC LIMIT 1
Por otro lado, intenta pasar solamente la cadena del query en la funcion mysql_query() asi:
Código PHP:
Ver original
  1. $result=mysql_query($query);

Por cierto, el @ lo que hace es que cuando hay algun warning o error en esa instruccion, simplemente la ignora, lo cual no es bueno cuando andas desarrollando, pues te oculta los errores y por tanto, te hace mucho mas dificil la localizacion de los problemas. Solamente se debe de usar cuando consideras que una funcion puede mandar un error, y que esta bien el que se ignore para que el usuario no se asuste, o para que siga la ejecucion del script.

Suerte!
__________________
¡Malditas computadoras que siempre hacen lo que les DIGO que hagan, no lo que QUIERO que hagan!
  #7 (permalink)  
Antiguo 26/02/2010, 00:30
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Boton anterior y siguiente en Php y consulta en Mysql

Gracias camsworksinc ahora si a las mil maravillas.. y que raro pero si es solo numerica la id pero en fin si funciono a las mil maravillas.. inlcuso le agregue un ancla al enlace para que me envie directamente al titulo de la noticia y no me lleve hasta la parte de arriba y tener que hacer un scroll... excelente.. no cabe duda cada dia se aprende mas...
  #8 (permalink)  
Antiguo 26/02/2010, 09:45
Avatar de camsworksinc  
Fecha de Ingreso: julio-2008
Ubicación: Queretaro
Mensajes: 261
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: Boton anterior y siguiente en Php y consulta en Mysql

Que bueno que te funciono!

Igual y en otra ocasion, tu podras ayudar a alguien mas!
__________________
¡Malditas computadoras que siempre hacen lo que les DIGO que hagan, no lo que QUIERO que hagan!

Etiquetas: mysql, siguiente, botones, anteriores
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 21:22.