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 :

Affichage nombre d'enregistrements en cours sur nombre total [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 365
    Points : 192
    Points
    192
    Par défaut Affichage nombre d'enregistrements en cours sur nombre total
    Bonjour,

    Le code suivant me permet d'afficher le nombre d'enregistrements retournés par ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $resultat_livre = mysql_query($select_livre)or die('Erreur SQL !'.$select_livre.'<br>'.mysql_error());
     
    $nblignes = mysql_num_rows($resultat_livre); // Affichage nb enregistrements retournés
     
    if ($nblignes !=0) {
     
    echo '<p class="resultat">Résultat de la recherche : '.$nblignes .' occurrence(s) </p>'; }
    else {
    echo '<p class="resultat"><strong>aucun résultat</strong></p>';}
    J'utilise en complément un système de pagination :

    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
    //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); 
     
     
    /* Boucle sur les pages */
    echo '<p class="nump">[ Page :';
     
    	for ($i = 1 ; $i <= $nb_pages ; $i++) {
    		if ($i == $page ) {
    			echo '<em>'.$i.'</em>';
     
    		} 
     
    		else {
     
     
    			echo ' <a  class="numl" href="?page='.$i.'&amp;tri='.$choix_tri.'&amp;filtre='.$choix_filtre.'&amp;senstri='.$sens_tri.'&amp;clesearch='.$clesearch.'&amp;search='.$search.'">'.$i.'</a> ';} // chaque variable est reprise		
     
    			}
     
    	echo ' ]</p>';
    Tout est fonctionnel. Le code me renvoie 40 enregistrements et mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<p class="resultat">Résultat de la recherche : '.$nblignes .' occurrence(s)
    affiche donc à chaque page "...40 occurrences".

    Ce que je souhaiterais implémenter, c'est la gestion d'un affichage du nombre d'enregistrements en cours sur la page par rapport au nombre total enregistrements retournés par la requête. En fait, je souhaite obtenir ce que fait PhpMyadmin:

    Affichage des enregistrements 0 - 29 (1 490 total) pour la page 1
    Affichage des enregistrements 30 - 59 (1 490 total) pour la page 2

    etc

    Voyez-vous comment adapter mon code pour obtenir l'effet souhaité ? Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ton total tu l'as déjà c'est $nb_total
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 365
    Points : 192
    Points
    192
    Par défaut
    Oui c'est vrai. En faisant le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $limit_start_et_1 = $limit_start + 1;
    $limit_start_et_pagination =$limit_start + $pagination;
    echo $limit_start_et_1.' - '. $limit_start_et_pagination.' - '.$nb_total;
    Pour 181 enregistrements retournés par ma requête, voici ce qui s'affiche au fil des pages :

    page 1 : 1 - 40 - 181
    page 2 : 41 - 80 - 181
    page 3 : 81 - 120 - 181
    page 4 : 121 - 160 - 181
    page 5 : 161 - 200 - 181

    C'est cohérent sauf pour la dernière page qui devrait plutôt afficher 161 - 181 - 181. Comment faire pour gérer correctement la dernière page ? Merci.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux compter les lignes effectivement retournées en meme temps que tu les affiche.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 365
    Points : 192
    Points
    192
    Par défaut
    Pardon mais je ne vois pas comment concrétiser cela dans mon code... Peux-tu m'apporter une aide complémentaire ? Merci.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    tu ne nous a pas montré la partie du code qui lit les lignes mais concretement c'est un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $i = 0;
    boucle {
    echo $tes_donnees;
    $i ++;
    }
    echo $i;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 365
    Points : 192
    Points
    192
    Par défaut
    Merci Sabotage. Effectivement ce code résout ma question

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

Discussions similaires

  1. nombre de controles par rapport au nombre d'enregistrements
    Par redstoff dans le forum Modélisation
    Réponses: 3
    Dernier message: 07/02/2012, 11h09
  2. MSN et affichage de la music en cours sur Lecteur Windows Media
    Par Lolitaaa dans le forum Messagerie instantanée
    Réponses: 1
    Dernier message: 17/02/2011, 15h15
  3. [XL-2003] Affichage date du mois en cours sur une colonne et une ligne sur trois
    Par altra dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 10/08/2009, 07h51
  4. limitation du nombre d'enregistrement sur une jointure
    Par coredump dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/06/2005, 16h13
  5. requete sql sur un grand nombre d enregistrement
    Par marielaure dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/08/2004, 11h53

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