IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Mise en place pagination


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 112
    Par défaut Mise en place pagination
    Salut,
    Un soucis avec la pagination;
    J'essaie de faire une pagination qui ne marche pas totalement.
    Par exemple: si le nombre d'élément total est 13 et que le nombre d’élément qui doit s'afficher par page est 5,
    j'obtiens 2 pages de 5 éléments chacune et les 3 autres éléments qui devraient s'afficher normalement sur la 3è page n'apparaissent pas tant que le
    nombre n'atteint pas les 5. Je ne sais pas ce qui manque.

    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <?php include ('config.php');?>
    <?php 
    	$page = isset($_GET['page']) ? $_GET['page'] : 1;
    	$page_offset = ($page - 1) * 5;
    	$total ='';
    	$pagination ='';
     
    	$total_element = $bdd->query("SELECT * from engins");
    	$total = $total_element->rowCount(); /* or die (print_r($total_element->errorInfo())) */
    	$pagination = $total/5;
     
    	$req=$bdd->query("select * from engins ORDER BY idE DESC LIMIT $page_offset, 5 ") or die(print_r($bdd->errorInfo()));
     
    	 while($donnees = $req->fetch())
    		{ 
    			echo'<table border="1px"; width:800px; height:500px; color="#999";>
    						<tr>
    						    <td>
    							    <a href="operation.php?id='.$donnees['idE'].'"> <img src="../'.$donnees['photo1'].'"style=" width:220px; height:150px; color="#0000"; alt="Image engin" /></a>
    								                                                
    								    
    									 <!-- <img src="img/ria.jpg" class="img-responsive img-rounded" alt="image 1"/>  -->
    							</td>
    						    <td class="description"> 
                                    <a href="operation.php?id='.$donnees['idE'].'">							
    							        Numero: '.$donnees['idE'].'</br>Marque: '.$donnees['marque'].'</br>Model: '.$donnees['model'].'</br>Caractéristiques: '.$donnees['caracteristiques'].'</br>Prix: ' .$donnees['prix'].'</br>Année: '.$donnees['annee'].'</br>Lettre: '.$donnees['lettre'].'
    								</a>
    							</td>
    							  
    							<!-- Cetait <img src="images/photos donnees[photo1]"style=" width:220px; height:150px; color="#0000"; /> -->
    						</tr>
    					</table>';
     
    			echo '<a href="operation.php?id='.$donnees['idE'].'"> Reserver </a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';  
    			echo '<a href="details.php?id='.$donnees['idE'].'"> Détails </a>';
    		}	
    			$req->closeCursor(); 
    			echo'</br>';
    	echo '<center><p align="center">Page : </center>'; //Pour l'affichage, on centre la liste des pages
    	for($i=1; $i<=$pagination; $i++) //On fait notre boucle
    		{
    			if($i==$page) //Si il s'agit de la page actuelle...
    				{
    					echo ' [ '.$i.' ] '; 
    				}	
    				else //Sinon...
    					{
    						echo ' <a href="index.php?page='.$i.'">'.$i.'</a> ';
    					}
    		}
    	echo '</p>';													
    ?>
    Merci pour votre aide

  2. #2
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Tout d'abord je ferais un count(*) plus économique en mémoire au cas où il y a beaucoup d'enregistrements et puis même s'il y en a peu.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $total_element = $bdd->query("SELECT count(*) as nb_enreg from engins");
    $result = $total_element->fetch();
    $total = $result['nb_enreg'];

    Ensuite tu calcules l'offset que tu remets tel quel dans le LIMIT alors qu'il faudrait le multiplier par 5.

    Un conseil. Ne mets pas 5 de partout. Mets une variable $nb_enreg_par_page par exemple que tu valorises à 5 en début de programme.
    Comme ça si tu veux passer à 10 ou à n'importe quelle autre valeur tu n'as qu'une modification à faire.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	$nb_par_page = 5;
    ...
    	$page_offset = ($page - 1) * $nb_par_page;
    ...
    	$pagination = ceil( $total/$nb_par_page ); // ceil : arrondi à l'entier SUPERIEUR

Discussions similaires

  1. [MySQL] Mise en place de pagination
    Par Clenzo dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/10/2014, 21h30
  2. [AJAX] Mise en place de pagination
    Par Flora2013 dans le forum AJAX
    Réponses: 0
    Dernier message: 18/06/2014, 11h36
  3. Mise en place de la pagination application GWT 2.4
    Par drissoi dans le forum GWT et Vaadin
    Réponses: 0
    Dernier message: 09/07/2013, 16h53
  4. [MySQL] Mise en place d'une pagination
    Par masterix59 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/02/2009, 16h36
  5. Mise en place d'index....??
    Par liv dans le forum Requêtes
    Réponses: 6
    Dernier message: 18/12/2003, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo