Foros del Web » Programando para Internet » PHP »

Paginacion no funciona, un poquito de porfavor !

Estas en el tema de Paginacion no funciona, un poquito de porfavor ! en el foro de PHP en Foros del Web. Hola de nuevo, A ver si me consigo explicar y me echais un cable please ! Tengo una pagina para busquedas en mi web !! ...
  #1 (permalink)  
Antiguo 23/04/2009, 04:30
Avatar de b0zZy  
Fecha de Ingreso: enero-2009
Ubicación: Francia
Mensajes: 28
Antigüedad: 15 años, 3 meses
Puntos: 0
De acuerdo Paginacion no funciona, un poquito de porfavor !

Hola de nuevo,
A ver si me consigo explicar y me echais un cable please ! Tengo una pagina para busquedas en mi web !!
Esta :

Código PHP:
<?php
if (!defined('WEB_ROOT')) {
    exit;
}
    
// Get the search variable from URL

  
$var = @$_GET['q'] ;
  
$trimmed trim($var); //trim whitespace from the stored variable

// rows to return
$limit=12

// check for an empty string and display a message.
if ($trimmed == "")
  {
  echo 
"<h3><p align=\"left\" style=\"color:#800000\">Aucun mot a rechercher ...</p><h3>";
  exit;
  }


//connect to your database ** EDIT REQUIRED HERE **
mysql_connect("$dbHost","$dbUser","$dbPass"); //(host, username, password)

//specify database ** EDIT REQUIRED HERE **
mysql_select_db("$dbName") or die("Unable to select database"); //select which database we're using

// Build SQL Query
// EDIT HERE and specify your table and field names for the SQL query  
$query "SELECT * FROM tbl_product
INNER JOIN tbl_category
ON tbl_product.cat_id = tbl_category.cat_id
WHERE upper(pd_auteur) LIKE upper(\"%$trimmed%\") OR upper(pd_titre) LIKE upper(\"%$trimmed%\") OR upper(cat_name) LIKE upper(\"%$trimmed%\") OR upper(cat_id2) LIKE upper(\"%$trimmed%\") OR upper(cat_id3) LIKE upper(\"%$trimmed%\") ORDER BY (\"%$trimmed%\") ASC"


 
$numresults=mysql_query($query);
 
$numrows=mysql_num_rows($numresults);

if (
$numrows == 0)
  {
  echo 
"<h4><p align=\"left\" style=\"color:#666666\">Aucun resultat sur notre site</p></h4>";
  }

// next determine if s has been passed to script, if not use 0
  
if (empty($s)) {
  
$s=0;
  }

// get results
  
$query .= " limit $s,$limit";
  
$result mysql_query($query) or die("Couldn't execute query");

// display what the person searched for
echo "<p align=\"left\" style=\"color:#666666\">Vous avez recherch&eacute;:&nbsp;&nbsp;&nbsp;<a style=\"color:#800000\"> &quot;<a style=\"color:#FF9933\">" $var "<a style=\"color:#800000\">&quot;</p>";
$s=0;
$a $s + ($limit) ;
  if (
$a $numrows) { $a $numrows ; }
  
$b $s ;
// begin to show results set
echo "<p align=\"left\" style=\"color:#666666\">Resultat<a style=\"color:#800000\"> $b <a> a <a style=\"color:#800000\">$a <a> de <a style=\"color:#800000\">$numrows</p>";
$count $s ;

// now you can display the results returned
  
while ($rowmysql_fetch_array($result)) {
  
$auteur $row["pd_auteur"];
  
$titre  $row["pd_titre"];
  
$cat    $row["cat_name"];
  
$prix   $row["pd_price"];
  
$pdId   $row["pd_id"];
  
$catId   $row["cat_id"];
  
$image   =$row ["pd_thumbnail"];
  
$etat   =$row ["pd_etat"];
  
  echo 
"</br><span class=\"notice\"></a># </span>$count"
  echo 
"</br><span class=\"notice\"></a>Titre: </span><a href=index.php?view=detail&c=$catId&p=$pdId />$titre"
  echo 
"<span class=\"notice\"></a> de </span>$auteur";
  echo 
"</br><span class=\"notice\"></a>Rubrique: </span><a href=\"index.php?c=$catId\">$cat</a> – ";
  echo 
"</br><span class=\"notice\"></a>Etat: </span>$etat";    
  echo 
"</br><span class=\"notice\"></a>Prix: </span>$prix&nbsp;€<hr />";
  
$count++ ;
  }

$currPage = (($s/$limit) + 1);

//break before paging
  
echo "<br />";

  
// next we need to do the links to other results
  
if ($s>=1) { // bypass PREV link if s is 0
  
$prevs=($s-$limit);
  print 
"&nbsp;<td align=\"center\"><a href=\"" $_SERVER['PHP_SELF'] . "?s=$news&q=$var" "\">&lt;&lt; 
  [10 Pr&eacute;c&eacute;dentes]</a>"
;
  }

// calculate number of pages needing links
  
$pages=intval($numrows/$limit);

// $pages now contains int of pages needed unless there is a remainder from division

  
if ($numrows%$limit) {
  
// has remainder so add one page
  
$pages++;
  }

// check to see if last page
  
if (!((($s+$limit)/$limit)==$pages) && $pages!=1) {

  
// not last page so give NEXT link
  
$news=$s+$limit;
  
  echo 
"&nbsp;<a href=\"" $_SERVER['PHP_SELF'] . "?s=$news&q=$var" "\">[10 Suivantes] &gt;&gt;</a>";
  }

$a $s + ($limit) ;
  if (
$a $numrows) { $a $numrows ; }
  
$b $s ;

?>
Pero tengo un pequenio problemas, que no conta los resultados ! A ver si llego ...
Hago una busqueda, me da 15 resultados en total, me salen 12 perfecto!, pero quando le doy al paglink para ver los ultimos 3, cambia la pagina me salen los 3 ultimos pero el Count no esta bien ! Me sale de nuevo resultado 1, 2, 3.
Quando tendria que salir resultado 13,14 y 15 ! Y despues tanpoco me sale el paglink para retroceder a los 1s resultados.

Gracias y Salu2

Última edición por b0zZy; 23/04/2009 a las 06:56 Razón: Intento ser mas claro que el agua !
  #2 (permalink)  
Antiguo 23/04/2009, 16:52
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Paginacion no funciona, un poquito de porfavor !

Mejor usa el PHPPaging:
http://scripts.phperu.net/paging/
  #3 (permalink)  
Antiguo 24/04/2009, 02:09
Avatar de b0zZy  
Fecha de Ingreso: enero-2009
Ubicación: Francia
Mensajes: 28
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Paginacion no funciona, un poquito de porfavor !

Hola Ronruby , echare un vistazo .
Gracias
  #4 (permalink)  
Antiguo 24/04/2009, 03:58
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años
Puntos: 13
Respuesta: Paginacion no funciona, un poquito de porfavor !

Intenté seguir tu código pero me perdí.. no entiendo algunas cosas, pero si te sirve, te pego un trozo de un código que hice para una especie de helpdesk y que funciona correctamente:

Código PHP:
    $maxPag=15;  // Definimos que habrá 15 registros por cada página
    
if(!isset($_GET["page"])){  // Si no ha pulsado ninguna página...
        
$_GET["page"]=1;      // ...simulamos que ha pulsado la primera
    
}

    
$pagTotal=$cont/$maxPag// $cont es el número de registros que hay en la consulta, dividido por los registros por página del $maxPag obtenemos cuantas páginas necesitamos
    
if ($pagTotal!=(int)$pagTotal){ // Si el $pagTotal nos ha quedado con decimales...
        
$pagTotal=(int)$pagTotal+1// ... lo redondeamos a la alza siempre
    
}
    echo 
"< Pàgina ";
    
$i=0;
    while((
$pagTotal-$i)>0){  // metemos las páginas en un array $pag[] para trabajar más cómodos
        
$pag[($pagTotal-$i)]=$pagTotal-$i;
        
$i++;
    }
    
$i=1;
    while(isset(
$pag[$i])){
        if(
$_GET["page"]==$pag[$i]){ // Si se trata de la página pulsada no tendrá link porque es la actual
            
if(@$pag[($i+1)]>0)   // Si la página siguiente existe, pondrá la página seguido de un guión
                
echo '<b>'.$pag[$i].'</b> - ';
            else   
// Si la página siguiente no existe, es la última y por lo tanto sin guión
                
echo '<b>'.$pag[$i].'</b>';
        }
        else if( isset(
$pag[($i+1)]) && $pag[($i+1)]>){ // Cuando son las páginas distintas a la que hemos pulsado, tendrán un link hacia esa página. Además, si existe la siguiente página le escribirá un guión detrás del número de página
            
echo '<a href="pagina.php?page='.$pag[$i].'" style="text-decoration:none;">'.$pag[$i].'</a> - ';
        }else{ 
// Igual que lo anterior pero sin el guión, puesto que es la última página
            
echo '<a href="pagina.php?page='.$pag[$i].'" style="text-decoration:none;">'.$pag[$i].'</a>';
        }
        
$i=$i+1;
    }
    echo 
' >';

Resultado en mi caso:

Si tuviéramos una consulta que devuelve 110 registros y tenemos puesto que son 15 por página, e imaginándonos que estamos en la página 3, se vería así:

< Pàgina 1 - 2 - 3 - 4 - 5 - 6 - 7 >

La página 3 que está en negrita no tendría link, y el resto tendría un link hacia su página


Espero que te sirva, saludos
  #5 (permalink)  
Antiguo 24/04/2009, 13:51
Avatar de b0zZy  
Fecha de Ingreso: enero-2009
Ubicación: Francia
Mensajes: 28
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Paginacion no funciona, un poquito de porfavor !

Cita:
Iniciado por Kamae Ver Mensaje
Intenté seguir tu código pero me perdí.. no entiendo algunas cosas, pero si te sirve, te pego un trozo de un código que hice para una especie de helpdesk y que funciona correctamente:
...
Hola Kamae, te te lo agradezco y lo voy a provar, que el link que me paso Ronruby, parece ser weno, pero tendria que moficar un taco de cosas. Y la verdad no me apetece mucho ! Lo probare y dire algo por aqui ...
Gracias
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 05:03.