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 :

[Conception] Affichage page par page


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut [Conception] Affichage page par page
    J'ai mis en place un petit moteur de recherche par département qui m'ouvre une page avec tous les inscrits par département. Jusque là tout va bien.
    Maintenant, au lieu de m'afficher tous les résultats sur une seule page, j'aimerais arriver à un affichage page par page avec 5 résultat par pages.

    Voilà 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
     
     
    <?php
     
     
    include "configuration.php";
    include "page_haut.inc";
     
     
    		$search = mysql_query("SELECT * FROM $mbmembres WHERE sid='$sid'") or die ("ERROR:" . mysql_error());
    		$num = mysql_num_rows($search);
     
    if ($num == 0) {
     
     
     
     
    			echo "<table border=\"0\">";
    			echo "<tr>";
    			echo "<td>Il y a <b>$num</b> résultats: </b></td>";
    				echo "</tr><tr>";
    			echo "<td></td>";
    			echo "</tr><tr>";
    			echo "<td class=\"moyen\">Pas de résultats!</td>";
    			echo "</td>";
    			echo "</tr>";
    			echo "</table>";
     
    include "page_bas.inc";
    		} else {
     
     
    			echo "<table border=\"0\" width=90%>";
    			echo "<tr bgcolor=#000099>";
    			echo "<td><font color=white><b><font color=white>Il y a <b>$num</b> résultats</font> </b></td>";
    			echo "</tr><tr></table>";
    			while ($row = mysql_fetch_row($search)) {
     
    				echo "<table border=0 width=90%>
    <tr><td width='50%'>
    <a href=\"$row[6]\" alt='fiche membre'><center><font class=grand><b>$row[3]</b></font></a></center></td>";
    		[...]
    }
    include "page_bas.inc";
    		}
    ?>
    Je suis partie sur divers scripts que j'ai essayée d'adapter mais sans succès...

    Une piste à me suggérer ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 99
    Par défaut
    je peux deja te donner une piste, tu rajoute LIMIT 0, 5 dans ta requête et tu incrémente pour chaque page, ton adresse sera du style pagebidule.php?n=0

    tu passe dans l'url un n = 0 par exemple et ta requête devient du style
    $n = $_GET['n'];
    $search = mysql_query("SELECT * FROM $mbmembres WHERE sid='$sid' LIMIT ".$n.", ".$n+5.") or die ("ERROR:" . mysql_error());
    et tu appele tes pages suivantes avec n = 5, 10, 12 si ca te chante ca te selectionnera 5 a 10, 10 a 15 ou 12 a 17

  3. #3
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Je viens d'insérer ma requête avec LIMIT comme tu me le suggérais ci-suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $n = $_GET['n'];
    $search = mysql_query("SELECT * FROM $sbbproduit WHERE sid='$sid' LIMIT '.$n.', '.$n+5.'") or die ("ERROR:" . mysql_error());
    $num = mysql_num_rows($search);
    mais le message d'erreur suivant apparaît

    ERROR:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''..', '.+5.'' at line 1
    ...

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $n = $_GET['n'];
    $search = mysql_query("SELECT * FROM $sbbproduit WHERE sid='$sid' LIMIT '.$n.', '.$n+5.'") or die ("ERROR:" . mysql_error());
    $num = mysql_num_rows($search);
    Il y a ce message à cause de l'alternance de quote et de double quote. DOnc à modifier pour obtenir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mysql_query("SELECT * FROM $sbbproduit WHERE sid='$sid' LIMIT ".$n.", ".($n+5).") or die ("ERROR:" . mysql_error());
    $num = mysql_num_rows($search);
    Une simple erreur de syntaxe

    et ton $n s'il est vide il faire quelque chose pour qu'il soit mis à 0

  5. #5
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Je me mets en mode [comprend rien] mais maintenant j'ai le message suivant :

    Parse error: syntax error, unexpected T_STRING in /home.2/lavieaut/www/MB/souscat.php on line 8
    Comment cela se fait-il ?

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Tout simplement parce que tu as une erreur de variable.

    Par exemple je t'ai dit que ton $n doit TOUJOURS exister sinon ca pose un problème avec l'addition dans ta requete. Et c'est peut etre de là que vient ta parse error.

    Il faudrait mettre ton code et voir aussi comment tu génères les liens pour les différentes pages. Si tu veux voir un exemple de pagination regardes ceci : Pagination d'un résultat de requête

  7. #7
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Je suis allé voir l'exemple de pagination et j'ai essayé d'en décortiquer le code. Sinon, jai repris un code que j'ai adapté à la structure de mon application 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    <?php
      include("configuration.php");
     
      $query="select * from mbmembres WHERE sid='$sid' ";
      $result = mysql_query($query);
     
      $nombMaxPage=10;
     
      $numPageCour = 0; 
     
      $Ndeb=@$_GET["num"]; 
     
     
      while (($val = mysql_fetch_array($result)) && ($numPageCour<$nombMaxPage+$Ndeb))
      {
          if($numPageCour>=$Ndeb)
       {
     
             echo $val["nom"]."<br>";
          }
     
         $numPageCour++;
     }
     
     ?>
     
    <br>
     
    <table cellpadding=3><tr>
    <?php
     
    if($Ndeb > 0) { ?><td valign=top><A href="">Retour</A></td>
    <? 
    } 
    ?>
    <td>  
    <? 
    $Npag = ceil(mysql_numrows($result)/$nombMaxPage);
     
    for($i = 1;$i<=$Npag;$i++) {
     
     
      if($Ndeb == ($i-1)*$nombMaxPage) { ?>Page<? echo $i; ?><? } else { ?><A href=""><? echo $i; ?></A><? }
    } 
    ?>
      </td>  
    <? 
     
    if($val) { ?><td valign=top><A href="">Suite</A></td><? } 
    ?>
     
    </tr></table>
     
    </body></html>
    <? 
    mysql_close(); 
    ?>
    Les résultats s'affichent désormais selon mes requêtes mais que dois je paramétrer à présent pour passer d'une page à l'autre ?

    J'ai nommé la page "souscat.php"
    merci d'avance

  8. #8
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Re,
    En y regardant de plus près, je sais pas si ce script est optimisé pour traiter beaucoup de résultats ...

    Réflexion :
    Imagine que tu as 50 000 membres et que tu vas au 40 000e. Ben le con de script va parcourir les 39 999 avant d'afficher un truc.
    Qu'en pensez vous ? Un 'Limit' dans la requête, m'épargnerait-il cet inconvénient ? Si oui comment m'y prendre ?

  9. #9
    Membre émérite Avatar de fallais
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2006
    Messages : 858
    Par défaut
    Il existe plein de script de pager php ... est ton ami

  10. #10
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut


    Justement j'ai eu ce petit script de pagination en tapant sur "google" . Celui-ci me convient assez bien dans la mesure où il fonctionne. Simplement, comment dois je paramétrer le code ci dessus pour que les résultats suivants s'ouvrent sur une autre page ... et ainsi de suite ... Merci d'avance

  11. #11
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Pourquoi une autre page ? avec php on peu le faire sur la même

    Mais si c'est vraiment ce que tu veux tu passes dans l'url les différents paramètres mais surtout le nombre à partir du quel tu vas faire ton limit. Comme cela a été donné plus haut avec le $n = $_GET['nb']

  12. #12
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Effectivement si je peux afficher les résultats suivants sur la même page, je suis preneuse ...

    Je tourne en rond sur les scripts de pagination depuis 3 jours en fait j'ai ce script
    qui m'affiche les 10 premiers résultats de ma requête mais je ne sais pas comment passer à la page 2 et ainsi de suite...
    Je vous remets 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
    54
    55
    56
    57
    58
    59
     
     
    <?php
      include("configuration.php");
     
      $query="select * from mbmembres WHERE sid='$sid' ";
      $result = mysql_query($query);
     
      $nombMaxPage=10;
     
      $numPageCour = 0; 
     
      $Ndeb=@$_GET["num"]; 
     
     
      while (($val = mysql_fetch_array($result)) && ($numPageCour<$nombMaxPage+$Ndeb))
      {
          if($numPageCour>=$Ndeb)
       {
     
             echo $val["nom"]."<br>";
          }
     
         $numPageCour++;
     }
     
     ?>
     
    <br>
     
    <table cellpadding=3><tr>
    <?php
     
    if($Ndeb > 0) { ?><td valign=top><A href="">Retour</A></td>
    <? 
    } 
    ?>
    <td>  
    <? 
    $Npag = ceil(mysql_numrows($result)/$nombMaxPage);
     
    for($i = 1;$i<=$Npag;$i++) {
     
     
      if($Ndeb == ($i-1)*$nombMaxPage) { ?>Page<? echo $i; ?><? } else { ?><A href=""><? echo $i; ?></A><? }
    } 
    ?>
      </td>  
    <? 
     
    if($val) { ?><td valign=top><A href="">Suite</A></td><? } 
    ?>
     
    </tr></table>
     
    </body></html>
    <? 
    mysql_close(); 
    ?>

  13. #13
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Sinon je vais essayer de faire simple en vous exposant clairement le problème auquel je suis confronté .
    A partir du menu déroulant (index.php) dont voici le code ci-joint, je choisie mon département :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <td valign=top><form action="souscat.php" method="post" target="main">
      <p><strong>Pays:</strong>
          <select name="sid">
            <?
    while ($row = mysql_fetch_row($query)) {
    		echo "<option name=\"sid\" value=\"$row[0]\">$row[2]</option>";
    }
    ?>
          </select>
        <input type=Submit value=Ok>
    Après avoir choisie mon département, j'aimerais classer page par page les résultats de ma table membres en fonction du département sélectionner (exemple : 5 résultats par page)

    Pour se faire j'utilise ce 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
    78
    79
    80
    81
    82
    83
     
     
    <?php 
    //========================================= 
    // includes du fichier fonctions 
    //========================================= 
    require 'fonctions.php'; 
    //========================================= 
    // information pour la connection à le DB 
    //========================================= 
     
    include("configuration.php");
     
    //========================================= 
    // initialisation des variables  
    //========================================= 
    // on va afficher 5 résultats par page. 
    $nombre = 5;   
    // si limite n'existe pas on l'initialise à zéro 
    if (!$limite) $limite = 0;  
    // on cherche le nom de la page.     
    $path_parts = pathinfo($_SERVER['PHP_SELF']); 
    $page = $path_parts["basename"]; 
     
    //=========================================     
    // requête SQL qui compte le nombre total  
    // d'enregistrements dans la table. 
    //========================================= 
    $select = 'SELECT count(*) FROM mbmembres'; 
    $result = mysql_query($select)  or die ('Erreur : '.mysql_error() ); 
    $row = mysql_fetch_row($result); 
    $total = $row[0]; 
     
    //========================================= 
    // vérifier la validité de notre variable  
    // $limite; 
    //========================================= 
    $verifLimite= verifLimite($limite,$total,$nombre); 
    // si la limite passée n'est pas valide on la remet à zéro 
    if(!$verifLimite)  { 
        $limite = 0; 
    } 
    //========================================= 
    // requête SQL qui ne prend que le nombre  
    // d'enregistrement necessaire à l'affichage. 
    //========================================= 
    $select = 'select id, nom FROM mbmembres ORDER BY nom ASC limit '.$limite.','.$nombre; 
    $result = mysql_query($select)  or die ('Erreur : '.mysql_error() ); 
     
    //=========================================     
    // si on a récupéré un resultat on l'affiche. 
    //========================================= 
    if($total) { 
        // début du tableau 
        echo '<table bgcolor="#FFFFFF">'."\n"; 
            // première ligne on affiche les titres prénom et surnom dans 2 colonnes 
            echo '<tr>'; 
            echo '<td bgcolor="#669999"><b><u>texte court</u></b></td>'; 
    		echo '<td bgcolor="#669999"><b><u>texte court</u></b></td>'; 
            echo '</tr>'."\n"; 
        // lecture et affichage des résultats sur 2 colonnes     
        while($row = mysql_fetch_array($result)) { 
            echo '<tr>'; 
            echo '<td bgcolor="#CCCCCC">'.$row['id'].'</td>'; 
    		echo '<td bgcolor="#CCCCCC">'.$row['nom'].'</td>';
            echo '</tr>'."\n"; 
        } 
        echo '</table>'."\n"; 
    } 
    else echo 'Pas d\'enregistrements dans cette table...'; 
    mysql_free_result($result); 
     
    //=========================================     
    // si le nombre d'enregistrement à afficher  
    // est plus grand que $nombre  
    //========================================= 
    if($total > $nombre) { 
        // affichage des liens vers les pages 
        affichePages($nombre,$page,$total); 
        // affichage des boutons 
        displayNextPreviousButtons($limite,$total,$nombre,$page); 
    } 
    ?>
    tel qu'il est présenté et appelé seul, ce code me présente les résultats de la table membres classé par nom page par page.

    Or j'aimerais à partir du menu déroulant de ma page index.php sélectionner mon département et afficher les résultats par département et là ça coince. En effet et pour se faire ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select = 'select id, nom FROM sbbproduit ORDER BY nom ASC limit '.$limite.','.$nombre;
    devrait me semble-t-il être compléter par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select = 'select id, nom FROM sbbproduit WHERE sid="$sid" ORDER BY nom ASC limit '.$limite.','.$nombre;
    sauf qu'à ce moment rien ne s'affiche ... Donc visiblement jai dû me planter...

    Donc de index.php (menu déroulant département) >> souscat.php >> avec classement des membres par département.

    Merci d'avance de votre disponibilité

  14. #14
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Je vais tenter avec le peu d'infos que j'ai

    Tout d'abord on va commencer par change ton select qui doit être le même après changement de page.Donc on va faire comme ceci :
    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
     
    <?php 
       //Récupère le département demandé 
       $sid = isset($_POST['sid'])?$_POST['sid']:(isset($_GET['sid'])?$_GET['sid']:0);
    ?>
    <td valign=top><form action="souscat.php" method="post" target="main">
      <p><strong>Pays:</strong>
          <select name="sid">
            <?
    while ($row = mysql_fetch_row($query)) {
    		echo '<option value="'.$row[0].'" '.(($sid == $row[0])?'selected="selected"':'').'>'.$row[2].'</option>';
    }
    ?>
          </select>
        <input type=Submit value=Ok>
    Pour ça c'est bon (sais tu que tu peux mettre directement le nom du champ avec mysql_fetch_array ? Ca peut etre plus parlant pour débugger après).

    Ensuite il faut préparer les requêtes pour la pagination et surtout l'affichage.

    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
    <?php 
     
    $userperpage = 5; // on va afficher 5 résultats par page. 
    $start = isset($_GET['start'])?$_GET['start']:0; //Nombre indiquant le départ de la requete
    // on cherche le nom de la page.     
    $page = basename(__FILE__); 
    //=========================================     
    // requête SQL qui compte le nombre total  
    // d'enregistrements dans la table. 
    //========================================= 
    $select = 'SELECT count(*) as total FROM mbmembres'; 
    $result = mysql_query($select)  or die ('Erreur : '. mysql_error()); 
    $row = mysql_fetch_array($result); 
    $total = $row['total']; 
    //=========================================     
    // si on a récupéré un resultat on l'affiche. 
    //========================================= 
    if($total > 0) 
    { 
        // début du tableau 
        echo '<table bgcolor="#FFFFFF">'."\n"; 
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes 
        echo '<tr>'; 
        echo '<td bgcolor="#669999"><b><u>texte court</u></b></td>'; 
        echo '<td bgcolor="#669999"><b><u>texte court</u></b></td>'; 
        echo '</tr>'."\n"; 
        //========================================= 
        // requête SQL qui ne prend que le nombre  
        // d'enregistrement necessaire à l'affichage. 
        //========================================= 
        $select = 'select id, nom FROM mbmembres ORDER BY nom ASC LIMIT '.$start.','.$userperpage; 
        $result = mysql_query($select)  or die ('Erreur : '.mysql_error() ); 
        while($row = mysql_fetch_array($result))  // lecture et affichage des résultats sur 2 colonnes   
        { 
            echo '<tr>'; 
            echo '<td bgcolor="#CCCCCC">'.$row['id'].'</td>'; 
            echo '<td bgcolor="#CCCCCC">'.$row['nom'].'</td>';
            echo '</tr>'."\n"; 
        } 
        echo '</table>'."\n"; 
     
        //Génération des liens pour l'affichage des pages
        echo 'Page : ';
        $genestart = 0;
        for($i = 1; $i <= ceil( $total_posts / $posts_per_page ); $i++)
        {
            echo '<a '.(((floor($start/$userperpage)+1)==$i)?('href="'.$page.'?start='.$genestart.'"'):('')).'>'.$i.'</a>&nbsp;';
            $genestart += $userperpage;
        }
    } 
    else 
        echo 'Pas d\'enregistrements dans cette table...'; 
     
    mysql_free_result($result); 
     
    ?>
    Ca devrait aller je pense avec ca

  15. #15
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Bonjour tout le monde !

    Voilà j'ai testé avec empressement ta solution Kerod, mais cela ne marche toujours pas. En fait, ma requête via le menu déroulant affiche tous les résultats de ma tables membres au lieu que celle ci ne retienne que les membres par départements...

    Aussi, j'ai le message d'erreur suivant qui apparaît au moment d'afficher les autres pages de résultats :
    Warning: Division by zero in /home.2/lavieaut/www/MB/souscat.php on line 47

  16. #16
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    ton code serait le bienvenue dans ce cas

  17. #17
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Je rectifie le tir en te donnant 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
    <?php 
     
    include ("configuration.php");
     
    $userperpage = 10; // on va afficher 5 résultats par page. 
    $start = isset($_GET['start'])?$_GET['start']:0; //Nombre indiquant le départ de la requete
    // on cherche le nom de la page.     
    $page = basename(__FILE__); 
    //=========================================     
    // requête SQL qui compte le nombre total  
    // d'enregistrements dans la table. 
    //========================================= 
    $select = 'SELECT count(*) as total FROM mbmembres'; 
    $result = mysql_query($select)  or die ('Erreur : '. mysql_error()); 
    $row = mysql_fetch_array($result); 
    $total = $row['total']; 
    //=========================================     
    // si on a récupéré un resultat on l'affiche. 
    //========================================= 
    if($total > 0) 
    { 
        // début du tableau 
        echo '<table bgcolor="#FFFFFF">'."\n"; 
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes 
        echo '<tr>'; 
        echo '<td bgcolor="#669999"><b><u>texte court</u></b></td>'; 
        echo '<td bgcolor="#669999"><b><u>texte court</u></b></td>'; 
        echo '</tr>'."\n"; 
        //========================================= 
        // requête SQL qui ne prend que le nombre  
        // d'enregistrement necessaire à l'affichage. 
        //========================================= 
        $select = 'select id, nom FROM mbmembres ORDER BY nom ASC LIMIT '.$start.','.$userperpage; 
        $result = mysql_query($select)  or die ('Erreur : '.mysql_error() ); 
        while($row = mysql_fetch_array($result))  // lecture et affichage des résultats sur 2 colonnes   
        { 
            echo '<tr>'; 
            echo '<td bgcolor="#CCCCCC">'.$row['id'].'</td>'; 
            echo '<td bgcolor="#CCCCCC">'.$row['nom'].'</td>';
            echo '</tr>'."\n"; 
        } 
        echo '</table>'."\n"; 
     
        //Génération des liens pour l'affichage des pages
        echo 'Page : ';
        $genestart = 1;
        for($i = 1; $i <= ceil( $total_posts / $posts_per_page ); $i++)
        {
            echo '<a '.(((floor($start/$userperpage)+1)==$i)?('href="'.$page.'?start='.$genestart.'"'):('')).'>'.$i.'</a>&nbsp;';
            $genestart += $userperpage;
        }
    } 
    else 
        echo 'Pas d\'enregistrements dans cette table...'; 
     
    mysql_free_result($result); 
     
    ?>
    Pour ce qui est du menu déroulant le voici :

    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
     
    <?php
    include "configuration.php";
    $query = mysql_query("SELECT * FROM $mbdepartement");
     ?>
    <?php 
       //Récupère le département demandé 
       $sid = isset($_POST['sid'])?$_POST['sid']:(isset($_GET['sid'])?$_GET['sid']:0);
    ?>
    <td valign=top><form action="souscat.php" method="post" target="main">
      <p><strong>Département:</strong>
          <select name="sid">
            <?
    while ($row = mysql_fetch_row($query)) {
    		echo '<option value="'.$row[0].'" '.(($sid == $row[0])?'selected="selected"':'').'>'.$row[2].'</option>';
    }
    ?>
          </select>
        <input type=Submit value=Ok>

  18. #18
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Déjà le code que j'ai donné est fait pour etre sur la meme page

    Ensuite tu as bien les pages affichées en bas de la page ??

  19. #19
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    J'ai mis le code sur la même page mais malgré cela, je n'ai pas les pages affichées en bas de la page

    erreur suivante à la place:

    Warning: Division by zero in /home.2/lavieaut/www/MB/souscat.php on line 47

  20. #20
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Il fallait remarquer que le nom des variables n'étaient les même dans le code et dans la génération des pages
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for($i = 1; $i <= ceil( $total / $userperpage ); $i++)
        {
            echo '<a '.(((floor($start/$userperpage)+1)==$i)?('href="'.$page.'?start='.$genestart.'"'):('')).'>'.$i.'</a>&nbsp;';
            $genestart += $userperpage;
        }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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