Titre: Problème dans mes boutons "Suivant" et "Précédent"
Posté par: koubz le le 23-04-2005 a 16:30:20
Voilà, je me suis inspiré de mes trouvailles et j'ai pu tapé ceci : Les données de ma base s'affiche page par page
Voici ma page affichage.php
Code:
<html> <head> <title>Document sans titre</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <SCRIPT LANGUAGE=JavaScript> function ejs_img_fx(img){ if(img && img.filters && img.filters[0]){ img.filters[0].apply(); img.filters[0].play(); } } </SCRIPT> </head>
<body> <?php //========================================= // includes du fichier fonctions //========================================= require 'fonctions.php'; //========================================= // information pour la connection à le DB //========================================= $host = 'x'; $user = 'x'; $pass = 'x'; $db = 'x';
//========================================= // initialisation des variables //========================================= // on va afficher 5 résultats par page. $nombre = 1; // si limite n'existe pas on l'initialise à zéro if (!$limite) $limite = 0; // on cherche le nom de la page. $path_parts = pathinfo($_SERVER['PHP_SELF']); $page = $path_parts["basename"];
//========================================= // connection à la DB //========================================= $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); mysql_select_db($db) or die ('Erreur :'.mysql_error());
//========================================= // requête SQL qui compte le nombre total // d'enregistrements dans la table. //========================================= $select = 'SELECT count(id) FROM infos'; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); $row = mysql_fetch_row($result); $total = $row[0]; //========================================= // vérifier la validité de notre variable // $limite; //========================================= $verifLimite= verifLimite($limite,$total,$nombre); // si la limite passée n'est pas valide on la remet à zéro if(!$verifLimite) { $limite = 0; } //========================================= // requête SQL qui ne prend que le nombre // d'enregistrement necessaire à l'affichage. //========================================= $select = 'select * FROM infos ORDER BY id ASC limit '.$limite.','.$nombre; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); //========================================= // si on a récupéré un resultat on l'affiche. //========================================= if($total) { while($row = mysql_fetch_array($result)) { echo '<img src="profs/images/'. $row['name'] .'" border="0" width="100" style="filter:progid:DXImageTransform.Microsoft.Pixelate(MaxSquare=100,Duration=1)" onload="ejs_img_fx(this)">'; echo '<br><strong><u>' . stripslashes($row['titre']) . '</u></strong><br> de ' . stripslashes($row['auteur']) . '<br><br>'; echo '<font size="2"> ' . stripslashes($row['description']) . '</font><br><br> '; } } else echo 'Pas d\'enregistrements dans cette table...'; mysql_free_result($result);
//========================================= // si le nombre d'enregistrement à afficher // est plus grand que $nombre //========================================= if($total > $nombre) { // affichage des liens vers les pages affichePages($nombre,$page,$total); // affichage des boutons displayNextPreviousButtons($limite,$total,$nombre,$page); } ?> </body> </html>
|
|
et ma page fonctions.php
Code:
<? //récupération de $limite if(isset($_GET['limite'])) $limite=$_GET['limite']; else $limite=0;
function verifLimite($limite,$total,$nombre) { // je verifie si limite est un nombre. if(is_numeric($limite)) { // si $limite est entre 0 et $total, $limite est ok // sinon $limite n'est pas valide. if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0)) { // j'assigne 1 à $valide si $limite est entre 0 et $max $valide = 1; } else { // sinon j'assigne 0 à $valide $valide = 0; } } else { // si $limite n'est pas numérique j'assigne 0 à $valide $valide = 0; } // je renvois $valide return $valide; }
function displayNextPreviousButtons($limite,$total,$nb,$page) { $limiteSuivante = $limite + $nb; $limitePrecedente = $limite - $nb; echo '<table><tr>'."\n"; if($limite != 0) { echo '<td valign="top">'."\n"; echo '<form action="'.$page.'" method="post">'."\n"; echo '<input type="submit" value="précédents">'."\n"; echo '<input type="hidden" value="'.$limitePrecedente.'" name="limite">'."\n"; echo '</form>'."\n"; echo '</td>'."\n"; } if($limiteSuivante < $total) { echo '<td valign="top">'."\n"; echo '<form action="'.$page.'" method="post">'."\n"; echo '<input type="submit" value="suivants">'."\n"; echo '<input type="hidden" value="'.$limiteSuivante.'" name="limite">'."\n"; echo '</form>'."\n"; echo '</td>'."\n"; } echo '</tr></table>'."\n"; }
function affichePages($nb,$page,$total) { $nbpages=ceil($total/$nb); $numeroPages = 1; $compteurPages = 1; $limite = 0; echo '<table border = "0" ><tr>'."\n"; while($numeroPages <= $nbpages) { echo '<td ><a href = "'.$page.'?limite='.$limite.'">'.$numeroPages.'</a></td>'."\n"; $limite = $limite + $nb; $numeroPages = $numeroPages + 1; $compteurPages = $compteurPages + 1; if($compteurPages == 10) { $compteurPages = 1; echo '<br>'."\n"; } } echo '</tr></table>'."\n"; }
?>
|
|
Cependant quand je clique sur "Suivant" ou "Précédent", je reviens à ma première page.D'où vient le problème?
|
Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.
|