Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/04/2011, 09:38
UsuarioArroba
Invitado
 
Mensajes: n/a
Puntos:
Salen varios errores al realizar la consulta - Intento de paginación

Antes de nada, comentar que estoy utilizando el código que aparece en la siguiente web: http://www.forosdelweb.com/wiki/PHP:_%C2%BFC%C3%B3mo_Paginar_Registros_de_una_base _de_datos%3F

Lo he intentado adaptar a mi situación, con el siguiente codigo:

Código:
<?php
########################################################
## PAGINAR REGISTROS
## POR: Marco A. Castillo
## EMAIL: [email protected]
########################################################
 
# Funcion para conectar a la base de datos
function conectar($host,$user,$pass,$db){
$link = @mysql_connect($host,$user,$pass) or die("Error Conectando a la Base de datos");
@mysql_select_db($db,$link) or die("Error Seleccionando base de datos.");
return $link;
}
 
$host = "localhost";
$user = "root";
$pass = "";
$db = "dieta";
 
# Se crea la variable $link que es para identificar la coneccion
# a la base de datos
$link = conectar($host,$user,$pass,$db);
 
# aqui colocan la tabla que se utilizara para
# extraer los registros y paginarlos
$tabla = "comentarios";
 
# aqui se extrae la cantidad de registros totales
$rsC = mysql_query("Select count(*) from ".$tabla);
$resultC = mysql_fetch_array($rsC);
$count = $resultC[0];
 
# Aqui se pone la cantidad de registros por pagina
# que se quieren mostrar
$hasta = 2;
 
if($pag==""){
 $desde = 0;
 $pag = 1;    
}
else{
 $pag = $_GET["pag"];
 $pagS = $pag - 1;
 $desde = $hasta * $pagS;    
}
 
$rs = mysql_query("select * from ".$tabla." limit $desde,$hasta");
if($count!=0){
 while($result=mysql_fetch_array($rs)){
echo '<br /><hr><br />';
echo '<b><u>' . $result['nick'] . '</u>' . ' dijo:</b><br /><br />' . $result['texto'] . '<br />';
  echo $result["licencia"]."<br>\n";    
  # fin del despliegue personalizado.
 }
}
else{
 echo "No tenemos registros.";    
}
mysql_close($link);
 
# aqui se llama a la funcion que muestra los links por paginas
# la variable $extra_variables es para anexar mas variables al url
# si es necesario para los querys que hagan.
# Solo se debe concatenar los datos nombre1=valor1&nombre2=value2
# NOTA: puede ubicar en cualquier parte de su codigo esta funcion
# para que aparesca dentro de la celda que desee.
# link totales es una variable al ser definida le dices a la funcion
# cuantos links quieres que aparescan por pantalla ya que si tienes
# 100 paginas no deberas ver los 100 links y solo muestres los necesarios
$link_totales = 4;
# se llama la funcion paginar
# los links si tiene un css podran tomar la estructura y color que le pongas
## Inicia Paginador
paginar($count,$hasta,$pag,$link_totales,$extra_variables);
 
# Funcion paginar
# Inicia
function paginar($count,$hasta,$pag,$link_totales,$extra_variables){
    if($link_totales==1)$link_totales=2;
    $links = $count / $hasta;
    $arriba = $link_totales - 2;
    $abajo = $pag - 1;
    if($abajo==0)$abajo = 1;
    $temp_r = $links - $pag;
    if($temp_r>=$arriba){
     $link_break = $pag + $arriba;
    }
    else{
     $link_break = $links;
     $abajo = $pag + 1 - $arriba;
     if($pag==$links-1)$abajo = $pag - $arriba;
     if($pag==$links)$abajo = $pag - 1 - $arriba;
    }
 
    if($pag==1)$link_break = $link_totales;
    if($abajo==0)$abajo=1;
    if(strlen($extra_variables)!=0) $extra_variables = "&".$extra_variables;
 
    if($pag==1){
     $anterior = 1;    
    }
    else{
    $anterior = $pag - 1;    
    }
    if($pag!=1){
    echo "<a href=".$_SERVER['PHP_SELF']."?pag=".$anterior.$extra_variables."><< Anterior | </a>";
    }
 
    for($i=$abajo;$i<=$links;$i++){
     if($link_break<$i){
      break;
     }
     else{
        if($pag==$i){
        echo $i." | ";    
        }
        else{
        echo "<a href='".$_SERVER['PHP_SELF']."?pag=".$i.$extra_variables."'>";
        echo $i;
        echo " | </a>";
        }
     }
    }
    if($pag==$links){
    $siguiente = $links;
    }
    else{
    $siguiente = $pag + 1;
    }
    if($pag!=$links){
    echo "<a href=".$_SERVER['PHP_SELF']."?pag=".$siguiente.$extra_variables.">Siguiente >></a>";
    }
}
?>
En mi base de datos "dieta", está la tabla "comentarios" que contiene 3 campos (id, nick y texto). Ingrese 5 comentarios:

id nick texto
-----------------------------------
14 Nick 1 Comentario 1
15 Nick 2 Comentario 2
16 Nick 3 Comentario 3
17 Nick 4 Comentario 4
18 Nick 5 Comentario 5

Solo he agregado los datos de mi base de datos y tabla. Ademas, le he puesto la parte donde se muestran los resultados a mi gusto.

Cuando lo coloco en el directorio www de WampServer y lo miro en localhost, me da unos cuantos de errores:


( ! ) Notice: Undefined variable: pag in D:\wamp\www\dieta\mostrar2.php on line 37
Call Stack
# Time Memory Function Location
1 0.0016 395112 {main}( ) ..\mostrar2.php:0


Nick1 dijo:

Comentario 1

( ! ) Notice: Undefined index: licencia in D:\wamp\www\dieta\mostrar2.php on line 52
Call Stack
# Time Memory Function Location
1 0.0016 395112 {main}( ) ..\mostrar2.php:0



Nick2 dijo:

Comentario 2

( ! ) Notice: Undefined index: licencia in D:\wamp\www\dieta\mostrar2.php on line 52
Call Stack
# Time Memory Function Location
1 0.0016 395112 {main}( ) ..\mostrar2.php:0


( ! ) Notice: Undefined variable: extra_variables in D:\wamp\www\dieta\mostrar2.php on line 74
Call Stack
# Time Memory Function Location
1 0.0016 395112 {main}( ) ..\mostrar2.php:0
1 | 2 | Siguiente >>


Ademas, si pulso Siguiente, sigue mostrando únicamente los dos primeros resultados, no los siguientes 2.

Agradeceria mucho vuestra ayuda para localizar donde está el error. Gracias.