problème de Pagination

Eléphant du PHP | 134 Messages

07 mai 2013, 12:50

Bonjour

J'ai actuellement une pagination sur une bibliothèque de films, mais pas terrible et surtout pas pratique .

<< Précédent Suivant >>

Je voudrai la modifier pour qu'elle affiche première page 1-2-3-4-5...10 dernière page et se rendre à la page par saisie de la page.

Merci de m'aider , c'est pas la faute de rechercher cela fais quelques jours que je recherche et fais de nombreux test.

Du style image jointe

Merci pour votre aide ! :D

Code : Tout sélectionner

<?php // Système de pages if(!isset($_GET['page_affichage']) || $_GET['page_affichage'] < 2 && is_numeric($_GET['page_affichage'])) { $page_affichage = 1; } else { if(is_numeric($_GET['page_affichage'])) { $page_affichage = $_GET['page_affichage']; } else { $page_affichage = 1; $_GET['page_affichage'] = 1; echo 'Merci d\'entré un chiffre'; } } if($_GET['page_affichage'] == NULL) { $_GET['page_affichage'] = 1; } // On récupère le nombre de résultat $requete_page_affichage = mysql_query("SELECT solution FROM ticket_astuce"); $num_rows_affichage = mysql_num_rows($requete_page_affichage); // Nombre de résultat par page $nombre_resultats_affichage = 48; $debut_affichage = ($page_affichage-1)*$nombre_resultats_affichage; // Affichage des images films $requete = mysql_query("SELECT * FROM ticket_astuce ORDER BY date_maj DESC LIMIT $debut_affichage, $nombre_resultats_affichage"); while( $films = mysql_fetch_array($requete)) { $bulle = $films['solution'] + $films['format']; // Système de bulle ?> <li> <div class="img-one-fourth"> <p class="fade-img" data-rel="zoom-icon"><a href=" <!-- m --><a class="postlink" href="http://www.**.com/Web/Films/Ajout_films/">http://www.**-t**.com/Web/Films/Ajout_films/</a><!-- m --><?php echo $films['image']; ?>" data-rel="prettyPhoto[mygallery]" ; title="<?php echo $films['format']; ?>"><img src=" <!-- m --><a class="postlink" href="http://www.***-techet.com/Web/Films/Ajout_films/">http://www.***.com/Web/Films/Ajout_films/</a><!-- m --><?php echo $films['image']; ?>" width="150" height="200" alt="<?php echo $films['format']; ?>" title="" /></a></p> </div> <div class="portfolio-content"> <p><a href="fiche.php?film=<?php echo $films['id']; ?>" class="button-small">Consulter la fiche</a></p> </div> <!-- .portfolio-content --> </li> <?php } if($num_rows_affichage == NULL) { echo '<center>Page inexistante </center>'; } //Affichage du nombres de pages if(is_numeric($_GET['page_affichage'])) { echo '<div id="container"><br />'; $pages_affichage = $_GET['page_affichage']; if($_GET['page_affichage'] != 1) { $page_affichage = $_GET['page_affichage']-1; echo "<a href=\"index.php?page_affichage=$page_affichage\"> Page précédente </a>"; } $total_affichage = ceil($num_rows_affichage/$nombre_resultats_affichage); if($num_rows_affichage != NULL) { echo '<span style="color: #808080">'.$_GET['page_affichage'].' / '.$total_affichage.'</span>'; } if($pages_affichage*$nombre_resultats_affichage < $num_rows_affichage) { $page_affichage = $_GET['page_affichage']+1; echo "<a href=\"index.php?page_affichage=$page_affichage\"> Page suivante </a>"; } echo '</div>'; } } ?> </ul>

Image

Mammouth du PHP | 619 Messages

07 mai 2013, 12:57

Bonjour,

tu peux faire cela avec un for
$nb_avant = 5; // nombre de page avant la page courante
if($page_affichage<='6'){$nb_apres = 10-$page_affichage;}else{$nb_apres = 5;} // nombre de page après la page courante
$avant = $page_affichage > ($nb_avant + 1) ? $nb_avant : $page_affichage - 1; // nombre de pages avant
$apres = $page_affichage <= $nb_pages - $nb_apres ? $nb_apres : $nb_pages - $page_affichage; // nombre de pages après


for($i = $page_affichage - $avant; $i <= $page_affichage + $apres; $i++){
	
}
a améliorer je fais cela pour te donne un debut de piste

Eléphant du PHP | 134 Messages

07 mai 2013, 13:17

Tout d'abord Merci !

J'ai suivi ton exemple mais cela affiche 123456 mais non cliquable et je désire 12345 ..10..20 , j'ai plus de 300 pages donc afficher 1 à 300 c'est moche.

Code : Tout sélectionner

<?php } if($num_rows_affichage == NULL) { echo '<center></center>'; } //Affichage du nombres de pages if(is_numeric($_GET['page_affichage'])) { echo '<div id="container"><br />'; $pages_affichage = $_GET['page_affichage']; if($_GET['page_affichage'] != 1) { $page_affichage = $_GET['page_affichage']-1; echo "<a href=\"index.php?page_affichage=$i\"> Page précédente </a>"; } $total_affichage = ceil($num_rows_affichage/$nombre_resultats_affichage); if($num_rows_affichage != NULL) { echo '<span style="color: #808080">'.$_GET['page_affichage'].' / '.$total_affichage.'</span>'; } if($pages_affichage*$nombre_resultats_affichage < $num_rows_affichage) { if($page_affichage>=5){$debut=$page_affichage-5;}else{$debut=1;}//on vérifie que la page actuelle est supérieur a 5 if($page_affichage<=$num_rows_affichage){$fin=$page_affichage+5;}else{$fin=$num_rows_affichage;} for ($i = $debut; $i <= $fin; $i++) { echo "<a href=\"index.php?=$i\"></a>"; } //$page_affichage = $_GET['page_affichage']+1; //echo "<a href=\"index.php?page_affichage=$i\"> Page suivante </a>"; } echo '</div>'; } } ?>
Modifié en dernier par Michel6359 le 07 mai 2013, 13:42, modifié 1 fois.

Mammouth du PHP | 619 Messages

07 mai 2013, 13:22

Bonjour,

ben dans la boucle for faut pas juste faire echo $i mais mettre ton lien echo'<a href=\"index.php?page_affichage=$i\">'.$i.'</a>'; par exemple puis faut mettre une class de style etc :)

Eléphant du PHP | 134 Messages

10 mai 2013, 17:04

Bonjour :D

Je voulais tout d'abord te remercier ghost5922 car j'ai réussi ma pagination avec css grâce a ton aide . =D>

Une autre chose que je désire faire c'est me rendre directement sur une page par la saisie du numéro de la page.

Merci

Mammouth du PHP | 619 Messages

10 mai 2013, 19:08

Bonjour,
echo '<form method="GET" action="">'; 
echo '<select name="page_affichage" onChange="this.form.submit();">'; 
for ($i = 1; $i <= $total_affichage ; $i++) {
    echo'<option value="'.$i.'">Page : '.$i.'</option>';
}
echo '</select>'; 
echo '<noscript><input type="submit" value="Changer" /></noscript>'; 
echo '</form>';
j'ai pas test mais je ferai quelque chose comme cela mais a améliorer selon tes liens etc

ps : bravo pour cette premier étape ;)

Eléphant du PHP | 134 Messages

10 mai 2013, 21:47

Bonsoir

Merci beaucoup , je vais voir ton exemple et voir avec mon css. Je te tiens au courant.


Encore merci :D :D :D :D :D

Eléphant du PHP | 134 Messages

11 mai 2013, 16:42

Bonjour , cela marche parfaitement , encore Merci. =D>

Maintenant je recherche comment faire fonctionner ma pagination avec une recherche , mais pas encore trouvé l'erreur.

Code : Tout sélectionner

// Si une recherche à était effectué if (isset($_POST['recherche']) OR isset($_GET['recherche'])) { if ($_POST['recherche'] != NULL OR $_GET['recherche'] != NULL) { // On récupère la recherche pour une paggination if($_GET['recherche'] != NULL) { $recherche = htmlentities($_GET['recherche'], ENT_QUOTES); } else { $recherche = htmlentities($_POST['recherche'], ENT_QUOTES); } // Si le nombre de page n'extsite pas elle est par défaut à 1 if($_GET['search'] != NULL AND is_numeric($_GET['search'])) { $search = htmlentities ($_GET['search'], ENT_QUOTES); } else { $_GET['search'] = 1; } // On récupère le nombre de résultat $requete_page_search = mysql_query("SELECT id FROM ticket_astuce WHERE solution LIKE '%$recherche%' ORDER BY id DESC"); $num_search = mysql_num_rows($requete_page_search); // Nombre de résultat par page $nombre_resultats_search = 24; $debut_affichage_search = ($_GET['search']-1)*$nombre_resultats_search; echo'<span class="promotion-button"><h4>Nous avons trouvés <strong>'.$num_search.'</strong> résultats</h4></p>'; // Affichage des images films selon la recherche $requete_search = mysql_query("SELECT * FROM ticket_astuce WHERE solution LIKE '%$recherche%' ORDER BY id DESC LIMIT $debut_affichage_search, $nombre_resultats_search"); while( $searchs = mysql_fetch_array($requete_search)) { $bulle = $searchs['commentaire']; // Système de bulle ?> <!-- Portfolio Item 1 --> <li> <div class="img-one-fourth"> <p class="fade-img" data-rel="zoom-icon"><a href=" http://*/Web/Films/<?php echo $searchs['image']; ?>" data-rel="prettyPhoto[mygallery]" title="<?php echo $searchs['solution']; ?>"><img src=" http://*/Web/Films/Ajout_films/<?php echo $searchs['image']; ?>" width="150" height="200" alt="<?php echo $searchs['solution']; ?>" title="" /></a></p> </div> <div class="portfolio-content"> <p><a href="fiche.php?film=<?php echo $searchs['id']; ?>" class="button-small">Consulter la fiche</a></p> </div> <!-- .portfolio-content --> </li> <?php } if($num_search == NULL) { echo '<center></center>'; } //Affichage du nombres de pages if(is_numeric($_GET['search'])) { echo '<div id="container"><br />'; $search = $_GET['search']; if($_GET['search'] != 1) { $search_p = $_GET['search']-1; echo "<a href=\"index.php?recherche=$recherche&search=$search_p\"> Page précédente </a>"; } $total_search = ceil($num_search/$nombre_resultats_search); if($search>=10){$debut=$search-10;}else{$debut=1;}//on vérifie que la page actuelle est supérieur a 5 if($search<=$num_search){$fin=$search+10;}else{$fin=$num_search;} for ($i = $debut; $i <= $fin; $i++) { echo'<a href="index.php?recherche=$recherche&$search='.$i.'"> '.$i.'</a>'; } { } echo '</div>'; } }


@+ :D

Eléphant du PHP | 134 Messages

14 mai 2013, 19:08

Bonjour

Bon toujours mon problème de pagination , j'ai réussi la première partie , mais maintenant avec une recherche je n'arrive pas :

Par exemple avec ma recherche par genre :

Code : Tout sélectionner

// Si une recherche à était effectué } elseif (isset($_GET['genre'])) { if ($_GET['genre'] != NULL) { // On récupère la recherche pour une pagination if($_GET['genre'] != NULL) { $genre = htmlentities($_GET['genre'], ENT_QUOTES); } // Si le nombre de page n'extsite pas elle est par défaut à 1 if($_GET['page_genre'] != NULL AND is_numeric($_GET['page_genre'])) { $page_genre = htmlentities ($_GET['page_genre'], ENT_QUOTES); } else { $_GET['page_genre'] = 1; } // On récupère le nombre de résultat $requete_page_genre = mysql_query("SELECT id FROM ticket_astuce WHERE genre1='$genre' OR genre2='$genre' ORDER BY id DESC"); $num_genre = mysql_num_rows($requete_page_genre); // Nombre de résultat par page $nombre_resultats_genre = 24; $debut_affichage_genre = ($_GET['page_genre']-1)*$nombre_resultats_genre; // Affichage des images films selon la recherche $requete_genre = mysql_query("SELECT * FROM ticket_astuce WHERE genre1='$genre' OR genre2='$genre' ORDER BY id DESC LIMIT $debut_affichage_genre, $nombre_resultats_genre"); while( $genres = mysql_fetch_array($requete_genre)) { $bulle = $genres['commentaire']; // Système de bulle ?> <li> <div class="img-one-fourth"> <p class="fade-img" data-rel="zoom-icon"><a href=" http://**/Web/Films/Ajout_films/<?php echo $genres['image']; ?>" data-rel="prettyPhoto[mygallery]" title="<?php echo $genres['solution']; ?>"><img src=" http://**/Web/Films/Ajout_films/<?php echo $genres['image']; ?>" width="150" height="200" alt="<?php echo $genres['solution']; ?>" title="" /></a></p> </div> } if($num_genre == NULL) { echo '<center>Message !</center>'; } //Affichage du nombres de pages if(is_numeric($_GET['page_genre'])) { echo '<div id="container"><br />'; $pages_genre= $_GET['page_genre']; if($_GET['page_genre'] != 1) { $page_genre_p = $_GET['page_genre']-1; //echo "<a href=\"index.php?page_affichage=$i\"></a>"; } $total_genre = ceil($num_genre/$nombre_resultats_genre); { echo'<div id="tnt_pagination"><a href="index.php?genre=$genre&page_genre='.$genre.'">Début</a>'; //echo "<a href=\"index.php?genre=$genre&page_genre=$page_genre_s\"> Page suivante </a>"; if($page_genre>=10){$debut_genre=$page_genre-10;}else{$debut_genre=1;}//on vérifie que la page actuelle est supérieur a 5 if($page_genre<=$num_genre){$fin_genre=$page_genre+10;}else{$fin_genre=$num_genre;} for ($genre = $debut_genre; $genre <= $fin_genre; $genre++) { echo'<a href="index.php?genre=$genre&page_genre='.$genre.'"> '.$genre.'</a>'; } } echo '<a href="index.php?genre=$genre&page_genre='.$total_genre.'"><img src="images/icons/11889-Metalian-Avance.png" width="10" height="10" alt="droite"></a>'; echo '<form method="GET" action="">'; echo '<select class="pagination" name="genre=$genre&page_genre" onChange="this.form.submit();">'; for ($genre = 1; $genre <= $total_genre ; $genre++) { echo'<option value="'.$genre.'">Consulter la Page : '.$genre.'</option>'; } echo '</select>'; echo '<noscript><input type="submit" value="Changer" /></noscript>'; echo '</form></div></div>'; } }

Ma première lors de ma recherche le lien est bon >> http://***/Web/Films/index.php?genre=Enfants
Mais avec ma pagination j'obtient >> http://***/Web/Films/index.php?genre=page_genre=1 Ou est ma recherche dans le lien ??? j'ai essayé plusieurs façon , mais le lien n'est toujours pas bon il devrait me faire une pagination du résultat de ma recherche du type >> http://***/Web/Films/index.php?genre=Enfants&page_genre=2


Merci pour votre aide

Mammouth du PHP | 619 Messages

14 mai 2013, 19:55

Bonjour,

le code a premier vu me parait bon

tu donne en paramètre le numéro de page ainsi que la recherche

echo'<a href="index.php?genre=$genre&page_genre='.$genre.'"> '.$genre.'</a>';


si tu ton site et en ligne peux tu me pm une url que je puise voir

Mammouth du PHP | 619 Messages

14 mai 2013, 20:08

Re,

j'ai vu votre probleme
for ($i = $debut_genre; $i <= $fin_genre; $i++) {
     
      
        echo'<a href="index.php?genre='.$genre.'&page_genre='.$i.'"> '.$i.'</a>'; 
        
        }
on mets bien les variable entre '.$var.'

et on réutilise pas les mêmes variables

tu utilises

$genre = htmlentities($_GET['genre'], ENT_QUOTES);

for ($genre = $debut_genre; $genre <= $fin_genre; $genre++) {

Eléphant du PHP | 134 Messages

14 mai 2013, 20:37

RE

j'ai essayé , oui l'erreur venait bien de la variable en '..'

par contre pour la partie :

Code : Tout sélectionner

echo '<form method="GET" action="">'; echo '<select class="pagination" name="page_genre" onChange="this.form.submit();">'; for ($i = 1; $total_genre <= $i ; $i++) { echo'<option value="'.$i.'">Consulter la Page : '.$i.'</option>'; } echo '</select>'; echo '<noscript><input type="submit" value="Changer" /></noscript>'; echo '</form></div></div>';
ça ne marche pas

Mammouth du PHP | 619 Messages

14 mai 2013, 22:15

Re,

tu envois un formulaire donc faut mettre le champ hidden avec la recherche
echo '<form method="GET" action="">'; 
echo'<input type="hidden" name="genre" value="'.$genre.'">';
echo '<select class="pagination" name="page_genre" onChange="this.form.submit();">'; 
for ($i = 1; $total_genre <= $i ; $i++) {
   echo'<option value="'.$i.'">Consulter la Page : '.$i.'</option>';
}
echo '</select>'; 
echo '<noscript><input type="submit" value="Changer" /></noscript>'; 
echo '</form></div></div>'; 

Mammouth du PHP | 619 Messages

14 mai 2013, 22:25

Re,

voila avec une petit modification cela permet de savoir sur quel page on se trouve au niveau de la pagination ainsi que le select
<?php
echo '<form method="GET" action="">'; 
echo'<input type="hidden" name="genre" value="'.$value.'">';
echo '<select class="pagination" name="page_genre" onChange="this.form.submit();">'; 
for ($i = 1; $total_genre <= $i ; $i++) {
   if($page_genre==$i){$sel='selected="selected"';}else{$sel='';}
   echo'<option value="'.$i.'" '.$sel.'>Consulter la Page : '.$i.'</option>';
}
echo '</select>'; 
echo '<noscript><input type="submit" value="Changer" /></noscript>'; 
echo '</form></div></div>'; 
?>



<?php

for ($i = $debut_genre; $i <= $fin_genre; $i++) {
        if($page_genre==$i){
                echo $i;
        }
        else{
                echo'<a href="index.php?genre='.$genre.'&page_genre='.$i.'"> '.$i.'</a>'; 
        }
}
                
?>

Eléphant du PHP | 134 Messages

15 mai 2013, 11:46

Bonjour

Ok Merci , Super je vais regarder ça pendant la pause du midi. :shock: :D

@+ :D