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 page par page


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 8
    Par défaut affichage page par page
    Bonsoir, je suis débutant en php, je suis entrain de réaliser un moteur de recherche pour un projet personnel.
    J'ai un problème sur mon affichage des résultats, que je souhaiterai limiter à 30
    résultats par page, malgrès de très nombreux tutos je me retrouve avec un problème sur l'affichage de ma seconde page.
    j'arrive bien a obtenir le nombre de résultat de ma requête, la première limite est ok mais quand je clic sur la seconde page je me retrouve avec la totalité de la bdd.
    Je ne sais pas si c'est lié à ma requête ou bien peut etre manque t'il une boucle.
    Code php : 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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    <html>
    <head>
    <title>mon site</title>
    </head>
    <body>
    <center><H1>BIENVENUE SUR LE SITE CRD SALLE 104</H1></center> 
     
    <BR></BR>
    <BR></BR>
    <BR></BR>
    <BR></BR>
     
    <form method="post" action="page.php">
    <center>Recherche : <input type="text" name="Valeur" size="50"><input type="submit" value="OK"><BR></center>
    </form>
    <?php
    $messagesParPage=10;
    mysql_connect("localhost","root"); 
    mysql_select_db("test");
    $mot = isset ( $_POST['Valeur'] ) ? $_POST['Valeur'] : '' ; 
    echo "<br />";
    $keywords = preg_split("/[\s,]+/", $mot);
    $nbrtbl=sizeof($keywords);
    echo "Vous avez tapé ".$nbrtbl." Mots clés";
    echo "<br/>";
    for ($j=0;$j<$nbrtbl;$j++) 
    {
    $reponse = mysql_query("SELECT * FROM `rapport`WHERE (idRapport LIKE '%". $keywords[$j]."%' 
    OR NomEntreprise LIKE '%". $keywords[$j]."%'
    OR Formation LIKE '%". $keywords[$j]."%' 
    OR Theme LIKE '%". $keywords[$j]."%')")or die (mysql_error());
    $m=$j+1;
    echo "le mot clé n° ".$m." est : ".$keywords[$j];
    echo "<br/>";
    }
    $total = mysql_num_rows($reponse);
    echo "il y a : ".$total." résultats.";
    echo "<br/>";
    mysql_free_result($reponse);
    echo "<br/>";
     
     
    $nombreDePages=ceil($total/$messagesParPage);
     
     
    if(isset($_GET['page'])) 
    {
    $pageActuelle=intval($_GET['page']);     
    if($pageActuelle>$nombreDePages) 
    {
    $pageActuelle=$nombreDePages;
    }}
    else 
    $pageActuelle=1;
     
    echo "La page actuelle est : ".$pageActuelle;
     
    echo '</p>';
    $premiereEntree=($pageActuelle-1)*$messagesParPage;
     
    echo "Le nombre total de page : ".$nombreDePages;
     
    echo "<br/>";
     
    echo "La premiere entrée est : ".$premiereEntree;
     
    echo "<br/>";
    if ($premiereEntree >10);
    	 {echo $premiereEntree;}
     
    for ($j=0;$j<$nbrtbl;$j++) 
    {
    $reponse = mysql_query
    ("SELECT * FROM `rapport`WHERE 
    (
    idRapport LIKE '%". $keywords[$j]."%' 
    OR NomEntreprise LIKE '%". $keywords[$j]."%'
    OR Formation LIKE '%". $keywords[$j]."%' 
    OR Theme LIKE '%". $keywords[$j]."%'
    )ORDER BY 'NomEntreprise' ASC 
    LIMIT $premiereEntree,$messagesParPage ")or die (mysql_error());
    }
    while($donnees = mysql_fetch_array($reponse))
    	{   echo "<table>";
    	    echo "<td>".$donnees['idRapport']."</td>";
    		echo "<td>".$donnees['NomEntreprise']."</td>";
    		echo "<td>".$donnees['Theme']."</td>";
    		echo "<td>".$donnees['Formation']."</td>";
    		echo "</table>";
    	}
    echo '<p align="center">Page : '; 
    	for($i=1; $i<=$nombreDePages; $i++)
    {
     
         if($i==$pageActuelle)
         {echo ' (( '.$i.' )) '; }	
         else 
         {echo ' <a href="page.php?page='.$i.'">'.$i.'</a> ';
    	 }
    }	
    echo "<br/>";
    mysql_close();
    ?>
     
    </body>
    </html>
    voici le code pourriez m'aidez a résoudre mon probleme svp

  2. #2
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 498
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 498
    Par défaut
    salut
    bah tu as tous les elements qu'il te faut...
    tu as ta var $premiereEntree et $messagesParPage
    il te suffit d'ajouter un lien "suivant" de la sorte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $suivant=$premiereEntree+$messagesParPage;
    echo '<A href="ta_page?affiche="'.$suivant.'">suivant</A> ';
    puis recuperer le $premiereEntree=$_GET["affiche"];
    bon, apres si tu veux faire genre page 1, 2, ect...c'est un peu plus long
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 8
    Par défaut
    Citation Envoyé par DEMMOTTE Voir le message
    salut
    bah tu as tous les elements qu'il te faut...
    tu as ta var $premiereEntree et $messagesParPage
    il te suffit d'ajouter un lien "suivant" de la sorte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $suivant=$premiereEntree+$messagesParPage;
    echo '<A href="ta_page?affiche="'.$suivant.'">suivant</A> ';
    puis recuperer le $premiereEntree=$_GET["affiche"];
    bon, apres si tu veux faire genre page 1, 2, ect...c'est un peu plus long
    j'ai deja coder <A href="ta_page?affiche="'.$suivant.'">suivant</A>
    seulement en seconde page j'ai la bdd complète d'afficher, qui ne correspond pas à ma requete de base ?
    je dois avoir mal impanter mon code pour les pages ou c'est plutot un problème de boucle

  4. #4
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 498
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 498
    Par défaut
    ah oui pardon, ton code n'est pas tres aere j'vais pas vu la ligne
    cela dit en passant...
    a la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIMIT $premiereEntree,$messagesParPage ")or die (mysql_error());
    c'est normal que t'ai pas fait la concatenation ?
    (sinon je me concentre pour relire ton code >_<)
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 8
    Par défaut
    En gros ma premiere page est bonne mais quand je clic sur mon lien de seconde page j'obtiens le nombre total de page de ma bdd divisée par ma limit imposer
    par exemple pour 200 donnée dans ma base pour une limit de 20 par exemple
    premiere page nikel (imaginons 25 réponses j'obtients bien les liens pour mes deux pages.)
    Mais si je clic sur le liens 2, je reobtiens 10 pages de 20 resultats c'est à dire toute la bdd.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 8
    Par défaut
    le but etant d'obtenir un moteur de recherche à plusieur mots clé si je concatène je risque de ne pas obtenir le meme résultat je pense c'est la raison pour laquelle j'ai utilisé un tableau afin de traiter chaque mots bien à part. Enfin je pense que c'est de ça que tu me parles quand tu me dis que je n'ai pas fais de concaténation ?

  7. #7
    Membre chevronné Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Par défaut
    Ton code me semble étrange...
    Tu exécutes une boucle for, mais tu ne gardes pas le résultat des requêtes précédentes, en faite tu ne gardes que la rechercher pour le dernier mot.
    Tu devrais mettre ton total dans ta boucle for, sans oublié de l'incrémenter avec le nombre de résultat.
    Ensuite au lieu de demander l'ensemble des résultats pour ensuite demander le nombre de lignes, tu devrais directement utilisé la fonction COUNT, ça irait plus vite puisque ton sgbd ne te retournerais qu'une seule ligne, hors là tu lui demande n lignes et en plus tu demandes au provider de compter pour toi.

    Sinon pour le LIMIT ton code semble bon. Le soucis vient du total...

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

Discussions similaires

  1. Affichage ipconfig /displaydns page par page? windows7
    Par destructive.flame dans le forum Windows
    Réponses: 1
    Dernier message: 28/02/2014, 08h00
  2. [MySQL] Affichage du résultat page par page (pagination)
    Par marcito dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 20/07/2007, 14h53
  3. [MySQL] Affichage page par page et requêtes du type $sql .=
    Par carelha dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 06/04/2006, 17h12
  4. [Tableaux] PB liens apres affichage page par page
    Par x2thez dans le forum Langage
    Réponses: 16
    Dernier message: 15/03/2006, 16h58
  5. [MySQL] afficher plusieurs enregistrements par page par page à la volée
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/03/2006, 12h22

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