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 :

Numérotation enregistrements qui se suit au fil des pages [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 402
    Par défaut Numérotation enregistrements qui se suit au fil des pages
    Bonjour,

    J'ai le code suivant qui numérote mes enregistrements :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php 
     
    	$ie2 = 1;//initialisation boucle pour comptage enregistrement
     
    	 while ($data = mysql_fetch_assoc($resultat_livre)) {
     
              echo '<p class="numlivre">'.$ie2.'.<p/>';//affichage numérotation
     
              echo '<p class="titre"><a href="fiche.php?id_livre='.$data['id_livre'].'">'.$data ['titre'].'</a></p>';
     
              $ie2 ++;//boucle pour compter livres
     
     
    		} ?>
    Mon comptage fonctionne (1...40). Mais pas totalement. En effet, lorsque je passe à la page suivante de mes enregistrements, le comptage recommence à 1 alors que je souhaite qu'il s'incrémente en continu au fil des pages (41...). Mon problème est lié à la pagination dont 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
    //DEBUT PAGINATION 
     
    /* Numero de page (1 par défaut) */
    if( isset($_GET['page']) && is_numeric($_GET['page']) )
      $page = $_GET['page'];
    else
      $page = 1;
     
    /* Nombre d'info par page */
    $pagination = 40;
    /* Numéro du 1er enregistrement à lire */
    $limit_start = ($page - 1) * $pagination;
     
     
    $requete_pagination   = "SELECT COUNT(*) AS nb_total FROM livre ";
     
    $resultat_pagination = mysql_query($requete_pagination) or die('Erreur SQL !'.$requete_pagination.'<br>'.mysql_error());
     
     
    $nb_total = mysql_fetch_array($resultat_pagination);
    $nb_total = $nb_total['nb_total'];
     
    /* Pagination */
    $nb_pages = ceil($nb_total / $pagination);
    $choix_tri= (iSset($_GET['tri']) ? $_GET['tri'] : null);
    $choix_filtre= (iSset($_GET['filtre']) ? $_GET['filtre'] : null);
    $sens_tri= (iSset($_GET['senstri']) ? $_GET['senstri'] : null);
    $clesearch = (iSset($_GET['clesearch']) ? $_GET['clesearch'] : null); 
    $search = (iSset($_GET['search']) ? $_GET['search'] : null); 
     
    // Affichage
     
     
    echo '<p class="pagination_bas">' . pagination($page, $nb_pages,'?page=%d&amp;tri='.$choix_tri.'&amp;filtre='.$choix_filtre.'&amp;senstri='.$sens_tri.'&amp;clesearch='.$clesearch.'&amp;search='.$search) . '</p>';
    Ce système de pagination fait appel à la fonction suivante :

    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
    54
    function pagination($current_page, $nb_pages, $link='?page=%d', $around=2, $firstlast=2) 
    {
    	$pagination = '';
    	$link = preg_replace('`%([^d])`', '%%$1', $link);
    	if ( !preg_match('`(?<!%)%d`', $link) ) $link .= '%d';
    	if ( $nb_pages > 1 ) {
     
    		// Lien précédent
    		if ( $current_page > 1 )
    			$pagination .= '<a class="prevnext" href="'.sprintf($link, $current_page-1).'" title="Page précédente">&laquo; Précédent</a>';
    		else
    			$pagination .= '<span class="prevnext disabled">&laquo; Précédent</span>';
     
    		// Lien(s) début
    		for ( $i=1 ; $i<=$firstlast ; $i++ ) {
    			$pagination .= ' ';
    			$pagination .= ($current_page==$i) ? '<span class="current">'.$i.'</span>' : '<a href="'.sprintf($link, $i).'">'.$i.'</a>';
    		}
     
    		// ... après pages début ?
    		if ( ($current_page-$around) > $firstlast+1 )
    			$pagination .= ' &hellip;';
     
    		// On boucle autour de la page courante
    		$start = ($current_page-$around)>$firstlast ? $current_page-$around : $firstlast+1;
    		$end = ($current_page+$around)<=($nb_pages-$firstlast) ? $current_page+$around : $nb_pages-$firstlast;
    		for ( $i=$start ; $i<=$end ; $i++ ) {
    			$pagination .= ' ';
    			if ( $i==$current_page )
    				$pagination .= '<span class="current">'.$i.'</span>';
    			else
    				$pagination .= '<a href="'.sprintf($link, $i).'">'.$i.'</a>';
    		}
     
    		// ... avant page nb_pages ?
    		if ( ($current_page+$around) < $nb_pages-$firstlast )
    			$pagination .= ' &hellip;';
     
    		// Lien(s) fin
    		$start = $nb_pages-$firstlast+1;
    		if( $start <= $firstlast ) $start = $firstlast+1;
    		for ( $i=$start ; $i<=$nb_pages ; $i++ ) {
    			$pagination .= ' ';
    			$pagination .= ($current_page==$i) ? '<span class="current">'.$i.'</span>' : '<a href="'.sprintf($link, $i).'">'.$i.'</a>';
    		}
     
    		// Lien suivant
    		if ( $current_page < $nb_pages )
    			$pagination .= ' <a class="prevnext" href="'.sprintf($link, ($current_page+1)).'" title="Page suivante">Suivant &raquo;</a>';
    		else
    			$pagination .= ' <span class="prevnext disabled">Suivant &raquo;</span>';
    	}
    	return $pagination;
    }
    Voyez-vous comment parvenir "au comptage en continu" que je souhaite obtenir ? Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 341
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 341
    Billets dans le blog
    17
    Par défaut
    Tu devrais t'en sortir avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Page 1 : 1 - 40
    Page 2 : 41 - 80
    Page 3 : 81 - 120
    Page n : (n * 40 - 39) - (n * 40)

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 402
    Par défaut
    Merci pour ta réponse. Mais je suis finalement arrivé au résultat escompté en insérant ce code avant ma boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ie2 = ($page - 1) * $pagination + 1;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Timeout qui gere le non chargement des pages
    Par gentil2005 dans le forum jQuery
    Réponses: 0
    Dernier message: 10/11/2012, 14h21
  2. [Thread] Un père qui doit attendre la fin des fils
    Par Chatbour dans le forum Concurrence et multi-thread
    Réponses: 9
    Dernier message: 09/09/2008, 14h29
  3. Réponses: 4
    Dernier message: 03/04/2008, 14h26
  4. [SQL] opération sur l'enregistrement qui suit
    Par namstou3 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/08/2007, 15h43
  5. comment afficher des enregistrements qui se ressemblent
    Par barribar dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/06/2007, 20h06

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