Pagination

amn -  
 amn -
Bonjour,



j'essaie de faire un tri par pages, par exemple afficher 10/20/30/40/50 résultats par pages, donc j'arrive bien à définir la limite souhaité, par contre ça ne m'affiche que deux pages et lorsque je clique sur la deuxième j'ai ce message :
-Not Found

The requested URL /cinema/tri.php&num_page=2 was not found on this server.



Voici mon code : <?php
mysql_connect("localhost", "root", "");
mysql_select_db("cinema");
//nombres d'éléments à afficher par page
$nb_par_page = 15;
//requête récupérant le nombre total d'éléments
$count = "SELECT COUNT(*) FROM tp_film ";
$result_count = mysql_query($count);
list($nb_resultats) = mysql_fetch_row($result_count);
//calcul du nombre de page à afficher
$max_page = $nb_resultats / $nb_par_page;
$max_page = ceil($max_page);
//calcul de la limite sql par rapport au numéro de la page et au nombres d'éléments à afficher
if (isset($num_page) && $num_page > 1) {
if($num_page>$max_page){
$num_page=$max_page;
}
$limit = ($num_page * $nb_par_page) - $nb_par_page;
} else {
$num_page = 1;
$limit = 0;
}
//calcul de la pagination à afficher
$pagination = '';
//on récupère l’URL complet
$lien = $_SERVER['REQUEST_URI'];
//on supprime notre parametre num_page, pour pouvoir le rajouter modifier par la suite
$lien = preg_replace("#&num_page=[0-9]+#i", "", $lien);
//première page
if ($num_page - 1 > 1) {
$pagination.='<a href="' . $lien . '&num_page=1"><<</a> . ';
}
//page precedente
$prev = $num_page - 1;
if ($prev != $num_page && $prev > 0) {
$pagination.='<a href="' . $lien . '&num_page=' . $prev . '">' . $prev . '</a> . ';
}
//page_actuelle
$pagination.=$num_page . ' ';
//page suivante
if ($max_page > $num_page) {
$next = $num_page + 1;
$pagination.='. <a href="' . $lien . '&num_page=' . $next . '">' . $next . '</a> ';
}
//dernière page
if ($num_page + 1 > $max_page) {
$pagination.='. <a href="' . $lien . '&num_page=' . $max_page . '">>></a>';
}
$data['pagination'] = $pagination;
//requete récupérant les éléments correspondant à la page actuelle
$select = "SELECT * FROM tp_film LIMIT " . $limit . ", " . $nb_par_page . "";
$reqSelect = mysql_query($select);


while( $dataSelect = mysql_fetch_array($reqSelect))
{
echo $dataSelect['titre']."<br>";
}
echo $pagination;
//afficher les résultats de la requête
//afficher $pagination
?>

6 réponses

Utilisateur anonyme
 
Bonjour.

Il devrait y avoir un ? et non pas un & immédiatement après le .php dans l'url. Le & ne sert que pour séparer les divers paramètres s'il y en a plusieurs.
0
amn
 
Bonjour,

merci pour ta réponse, mais comment changer cela ? je l'ai fait manuellement en effet je n'ai plus le message d'erreur mais dans le code comment régler ce soucis ?
Et même sans ce message je peux naviguer sur les pages mais sur toutes les pages différentes les noms des films restent les mêmes, ils ne changent pas.
0
Utilisateur anonyme
 
comment changer cela ?
En remplaçant le & par un ? dans ton code.
0
amn
 
Oui désolé je suis fatigué lol ! Par contre ca ne change toujours pas les films, si sur 100 films je demande a en afficher 10 par pages, ca va m afficher les 10 memes sur chaque pages
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
Si tu vois toujours les 10 mêmes, je suppose que ce sont les 10 premiers.
En effet, comme LIMIT tu utilises $limit qui est calculé d'après $num_page, mais $num_page n'est a priori pas défini. Il faudrait rajouter au début du script
if (isset($_GET['num_page'])) $num_page=$_GET['num_page'];
0
amn
 
Merci pour ta réponse ! Ca avance mais j'ai toujours du mal j'ai donc bien créée :

if (isset($_GET['num_page']))
{
$num_page=$_GET['num_page'];
}

en tout début de script.
Donc sur ma première page j'ai bien mes premiers films, ensuite lorsque je clique sur la deuxième j'ai enfin une suite de films ! Par contre à partir de la troisième, j'ai les mêmes films que la deuxieme page, et au lieu que ca soit marquer 1.2.3...(suite des pages) j'ai cela qui s'affiche : 1.2?num_page=3. ET si j'essaie d'aller à la page suivante c'est toujours des pages 3 : 1.2?num_page=3?numpage=3. J'ai du encore une fois mal définir quelque chose mais j'ai du mal à voir ce qui ne va pas :/

Et aussi ca me fait la même chose si je reclique sur la page, je ne peux plus accédr au films d'avant, ca va me mettre la même phrase que pour la page 3.
0