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 :

pagination de mes résultats [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 79
    Par défaut pagination de mes résultats
    bonsoir a tous
    voici mon 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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
     
    <?.................................................................
     
    $messagesParPage=4; //Nous allons afficher 5 messages par page.
     
    $retour_total= mysql_query ("SELECT COUNT(*) AS total from membre WHERE  metier like '%$metier%' AND departement like '%$departement%' AND codepostal like '%$codepostal%' AND lieu like '%$lieu%'") or die (mysql_error()); //Nous r&eacute;cup&eacute;rons le contenu de la requete dans $retour_total
    $donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
    $total=$donnees_total['total']; //On r&eacute;cupere le total pour le placer dans la variable $total.
     
    //Nous allons maintenant compter le nombre de pages.
    $nombreDePages=ceil($total/$messagesParPage);
     
    if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
    {
         $pageActuelle=intval($_GET['page']);
     
         if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le num&eacute;ro de la page) est plus grande que $nombreDePages...
         {
              $pageActuelle=$nombreDePages;
         }
    }
    else // Sinon
    {
         $pageActuelle=1; // La page actuelle est la n&deg;1    
    }
     
    $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la premiere entr&eacute;e a lire
     
    // La requete sql pour r&eacute;cup&eacute;rer les messages de la page actuelle.
    $retour_messages=mysql_query("select * from membre where metier like '%$metier%' AND departement like '%$departement%' AND codepostal like '%$codepostal%' AND lieu like '%$lieu%' ORDER BY id DESC LIMIT ".$premiereEntree.', '.$messagesParPage.'');
    $metier=$_POST['metier'];
    $departement=$_POST['departement'];
    $codepostal=$_POST['codepostal'];
    $lieu=$_POST['lieu']; 
    while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entr&eacute;es une a une gr&acirc;ce a une boucle
    {
         //Je vais afficher les messages dans des petits tableaux. C'est a vous d'adapter pour votre design...
         //De plus j'ajoute aussi un nl2br pour prendre en compte les sauts a la ligne dans le message.
        echo '<table width="606" border="1" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td width="148" height="37" bgcolor="#FFFF99"><strong>&nbsp;'.stripslashes($donnees_messages['login']).' </strong></td>
        <td width="95"><strong>&nbsp; CP:&nbsp; '.stripslashes($donnees_messages['codepostal']).'</strong></td>
        <td width="175"><strong>&nbsp; Ville :&nbsp;'.nl2br(stripslashes($donnees_messages['ville'])).'</strong></td>
        <td width="178" rowspan="2"><div align="center"><a href="traitementchoixresultat.php?id='.stripslashes($donnees_messages['id']).'" TARGET="_blank"><img src="images/Icone_loupe.png" width="40" height="40" alt="" border="0" ></a></div></td>
      </tr>
      <tr>
        <td height="32" colspan="2"><strong>&nbsp;Type de r&eacute;sidence :&nbsp;'.stripslashes($donnees_messages['lieu']).'</strong></td>
        <td height="32">&nbsp;<strong>&nbsp; Exp :&nbsp;'.stripslashes($donnees_messages['experience']).'</strong></td>
        </tr>
      <tr>
        <td height="36" colspan="3"><strong>&nbsp;<u></u>&nbsp;</strong></td>
        <td bgcolor="#FFFFCC"><div align="center"><strong>&nbsp;<strong>'.stripslashes($donnees_messages['disponibilite']).'</strong></td>
      </tr>
     
      </table><br /><br />';
        //J'ai rajout&eacute; des sauts a la ligne pour espacer les messages.   
    }
     
    echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
    for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
    {
     
         //On va faire notre condition
         if($i==$pageActuelle) //Si il s'agit de la page actuelle...
         {
             echo ' [ '.$i.' ] '; 
         }	
         else //Sinon...
         {
              echo ' <a href="rechercheresultat.php?page='.$i.'">'.$i.'</a> ';
         }
    }
    }
    echo '</p>';
     
    ?>
    et voici mon problème :
    dans ma base de donnée j'ai 10 résultats qui conviendront a ma recherche

    lorsque je fais une recherche sur mon site j'obtiens les 4 premiers résultat sur la première page de la pagination, ensuite lorsque que je clic sur le lien de la 2 éme page, j'ai aussi 4 bons résultats mais lors du clic sur la 3 éme page qui est censé me donner les 2 derniers résultats , je n'obtiens rien et effacement des 3 liens

    de plus lorsque je suis sur la page 2 et que je veux revenir sur la page 1 je n'obtiens plus que 2 résultats sur la page 1..
    voila j'espére avoir été clair et j'ai essayé de détailler le plus possible..

    je suis bloquer depuis 3 jours sur ce code et j'en perd mon latin ^^

    bon courage

  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
    Par défaut
    Tu devrais controler ce que vaut $nombreDePages.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 79
    Par défaut
    j'ai donc essayer echo $nombreDePages;
    et cela m'indique le bon nombre de page
    je viens de remarquer que

    si je met le nombre de résultat par page a 4
    j' obtiens 3 pages dont deux ok et la 3 eme plus rien , même plus la pagination

    si je met le nombre de résultat par page a 9

    j'obtiens 2 pages et la première a bien 9 résultats et la dernière est vide

    voila si cela peut t'aider a m'aider ^^
    ps:je viens de voir qu'en faite quelques soit la quantite de résultat je n'arrive pas a visualiser plus de deux pages max

  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
    Par défaut
    Je vois un problème de logique dans ton code : les paramètres metier, departement, code postal et lieu ne sont pas transmis de page en page.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 79
    Par défaut
    oui ...c'est vrai , c'est ca ca explique aussi pourquoi quand je reveins en arriere ca disparaisse bien joué,mais comment les transmettre alors partir de cette pagination...dans le lien ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo ' <a href="rechercheresultat.php?page='.$i.'">'.$i.'</a> ';

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    tu peut les stocker (ou toute ta requête sql) comme variables de session ($_SESSION) dés la première réception pour réutilisation, sauf si tu prefere la corvée de les renvoyer dans chacun de tes liens

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

Discussions similaires

  1. Classer mes résultats
    Par sone47 dans le forum MATLAB
    Réponses: 8
    Dernier message: 21/02/2007, 15h19
  2. Empêcher le tri de mes résultats
    Par Bibicmoi dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/02/2007, 15h20
  3. Pagination d'un résultat de requête
    Par Methode dans le forum Langage
    Réponses: 1
    Dernier message: 03/01/2007, 16h47
  4. [SGBD]Pagination spécifique de résultats
    Par Invité dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/06/2006, 15h12

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