Probleme pagination

Résolu/Fermé
arabii Messages postés 20 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 1 juillet 2014 - Modifié par arabii le 2/04/2014 à 00:20
arabii Messages postés 20 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 1 juillet 2014 - 3 avril 2014 à 03:03
Bonjour,

J'utilise un script de pagination qui marche bien sur la page index.php où je select tout les articles de ma base de données mais il (le meme code) ne fonctionne pas sur la pages categories.php où je select les articles par catégories.

voici le code:

<?php
// Adam's Custom PHP MySQL Pagination Tutorial and Script
// You have to put your mysql connection data and alter the SQL queries(both queries)
// This script is in tutorial form and is accompanied by the following video:
// https://www.youtube.com/watch?v=K8xYGnEOXYc
mysql_connect("Hôte","user","pas") or diesword (mysql_error());
mysql_select_db("mabdd") or die (mysql_error());
////////////// QUERY THE MEMBER DATA INITIALLY LIKE YOU NORMALLY WOULD
$sql = mysql_query("SELECT id, article, auteur FROM table ORDER BY id DESC");
//////////////////////////////////// Adam's Pagination Logic ////////////////////////////////////////////////////////////////////////
$nr = mysql_num_rows($sql); // Get total of Num rows from the database query
if (isset($_GET['pn'])) { // Get pn from URL vars if it is present
$pn = preg_replace('#[^0-9]#i', '', $_GET['pn']); // filter everything but numbers for security(new)
//$pn = ereg_replace("[^0-9]", "", $_GET['pn']); // filter everything but numbers for security(deprecated)
} else { // If the pn URL variable is not present force it to be value of page number 1
$pn = 1;
}
//This is where we set how many database items to show on each page
$itemsPerPage = 10;
// Get the value of the last page in the pagination result set
$lastPage = ceil($nr / $itemsPerPage);
// Be sure URL variable $pn(page number) is no lower than page 1 and no higher than $lastpage
if ($pn < 1) { // If it is less than 1
$pn = 1; // force if to be 1
} else if ($pn > $lastPage) { // if it is greater than $lastpage
$pn = $lastPage; // force it to be $lastpage's value
}
// This creates the numbers to click in between the next and back buttons
// This section is explained well in the video that accompanies this script
$centerPages = "";
$sub1 = $pn - 1;
$sub2 = $pn - 2;
$add1 = $pn + 1;
$add2 = $pn + 2;
if ($pn == 1) {
$centerPages .= ' <span class="pagNumActive">' . $pn . '</span> ';
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add1 . '">' . $add1 . '</a> ';
} else if ($pn == $lastPage) {
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub1 . '">' . $sub1 . '</a> ';
$centerPages .= ' <span class="pagNumActive">' . $pn . '</span> ';
} else if ($pn > 2 && $pn < ($lastPage - 1)) {
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub2 . '">' . $sub2 . '</a> ';
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub1 . '">' . $sub1 . '</a> ';
$centerPages .= ' <span class="pagNumActive">' . $pn . '</span> ';
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add1 . '">' . $add1 . '</a> ';
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add2 . '">' . $add2 . '</a> ';
} else if ($pn > 1 && $pn < $lastPage) {
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub1 . '">' . $sub1 . '</a> ';
$centerPages .= ' <span class="pagNumActive">' . $pn . '</span> ';
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add1 . '">' . $add1 . '</a> ';
}
// This line sets the "LIMIT" range... the 2 values we place to choose a range of rows from database in our query
$limit = 'LIMIT ' .($pn - 1) * $itemsPerPage .',' .$itemsPerPage;
// Now we are going to run the same query as above but this time add $limit onto the end of the SQL syntax
// $sql2 is what we will use to fuel our while loop statement below
$sql2 = mysql_query("SELECT id, article, auteur FROM toto ORDER BY id DESC $limit");
//////////////////////////////// END Adam's Pagination Logic ////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////// Adam's Pagination Display Setup /////////////////////////////////////////////////////////////////////
$paginationDisplay = ""; // Initialize the pagination output variable
// This code runs only if the last page variable is ot equal to 1, if it is only 1 page we require no paginated links to display
if ($lastPage != "1"){
// This shows the user what page they are on, and the total number of pages

// If we are not on page 1 we can place the Back button
if ($pn != 1) {
$previous = $pn - 1;
$paginationDisplay .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $previous . '" style="color:black;font-weight:bold;"><img src="back.gif"></a> ';
}
// Lay in the clickable numbers display here between the Back and Next links
$paginationDisplay .= '<span class="paginationNumbers">' . $centerPages . '</span>';
// If we are not on the very last page we can place the Next button
if ($pn != $lastPage) {
$nextPage = $pn + 1;
$paginationDisplay .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $nextPage . '" " style="color:black;font-weight:bold;"><img src="next.gif"></a> ';
}
}
///////////////////////////////////// END Adam's Pagination Display Setup ///////////////////////////////////////////////////////////////////////////
// Build the Output Section Here
$outputList = '';
while($row = mysql_fetch_array($sql2)){

$id = $row["id"];
$blague = $row["blague"];
$auteur = $row["auteur"];

$outputList .='' . $article. '<br /><br />Ajoutée par <span>' . $auteur . '</span> <br /><hr style="height: 2px; color: #000000; background-color: #000000; width:100%; border: none;">';

} // close while loop
?>
Pour la page categorie j'ai juste changé la requete en:

$sql = mysql_query("SELECT id, article, auteur FROM table WHERE categorie='$categorie' ORDER BY id DESC");

$sql2 = mysql_query("SELECT id, article, auteur FROM table WHERE categorie='$categorie' ORDER BY id DESC $limit");

Mais malheureusement ça fonctionne pas pour categorie.php

une petite aide sera la bienvenue

Merci

5 réponses

Utilisateur anonyme
2 avril 2014 à 07:59
Bonjour

Ta modification a pourtant l'air correcte.
Qu'est-ce qui ne marche pas ? Ça n'affiche rien ? Pas le bon nombre de réponses par page ? La première page est ok, mais pas les suivantes ? Il y a un message d'erreur ?
Y a-t-il bien un champ categorie dans ta table ? ?
0
arabii Messages postés 20 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 1 juillet 2014
Modifié par arabii le 2/04/2014 à 18:05
bonjour

la premiere page est ok? mais pas les suivantes.

il y a bien un chemps categorie dans la table

c'est la même table pour les deux pages en fait .

si non t'as une idée sur les pagination sous forme par exemple :

categories.php?categorie=sport&debut=10 (pour la première pages)

categories.php?categorie=sport&debut=20 (pour la deuxième page)

categories.php?categorie=sport&debut=30 (pour la troisième page)

et ansi de suite ?

(ici j'affiche 10 articles par page)

je cherche des tutoriels sur cette methode mais je trouve pas

je crois que c'est la methode la plus appropriée pour paginer les catégories.

Merci pour ta réponse le père

A+
0
arabii Messages postés 20 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 1 juillet 2014
Modifié par arabii le 2/04/2014 à 19:35
Pour être plus claire

Sur index.php si on est sur page 1 par exemple et on clique sur suivant il va sur:

index.php?pn=2 ce qui est correct. (pn = page nombre)

Sur categories.php?categorie=sport si on est sur page 1 par exemple et on clique

sur suivant il va sur:

categories.php?pn=2 ce qui n'est pas correct. Il doit aller à :

categories.php?categorie=sport&pn=2

C'est pour ça je dit que le code fonctionne sur index.php mais il fonctionne pas sur

categories.php

Merci:)
0
Utilisateur anonyme
2 avril 2014 à 23:21
À mon avis, ton categorie=sport n'est pas utile dans tes liens : il suffit de le mémoriser dans une variable de session.
0

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

Posez votre question
arabii Messages postés 20 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 1 juillet 2014
Modifié par arabii le 3/04/2014 à 03:04
voilà j'ai trouvé !

il faut adapter les liens dans le code à la page categories.php comme ceci :



<a href="' . $_SERVER['PHP_SELF'] . '?categorie='. $categorie . '&pn=' . $add1 . '">' .

ce qui donne (par exemple si on est sur catégorie sport page 1 et on clique sur

suivant) :

categories.php?categorie=sport&pn=2

en ajoutant categorie=' .$categorie. ' à tous les liens

maintenent la pagination fonctionne désormais pour la page categories.php

Merci le père :)

merci beacoup pour ton aide
0