Pagination table php/mysql

Résolu
zake el Messages postés 154 Date d'inscription   Statut Membre Dernière intervention   -  
zake el Messages postés 154 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai une page en php qui affiche les donnés enregistrées dans une table mysql ("sujet")
voici le code:

$idt=1;
// on se connecte à notre base de données
$connect=mysql_connect($sql_serveur,$sql_user,"") or die("error");
mysql_select_db($sql_bdd)or die("introuvable");
$query=mysql_query("select * from sujet where id_type ='$idt'");
$numrows=mysql_num_rows($query);

if ($numrows == 0) {
echo 'Aucun sujet';
}
else {
?>
<center><table width="900" border="1"><tr height=50>
<td width="600">
Titre du sujet
</td><td>
Date dernière réponse
</td></tr>
<?php
// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($query)) {

// on décompose la date
sscanf($data['datederrep'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);

// on affiche les résultats
echo '<tr height=80>';
echo '<td>';

echo '<a href="./affiche.php?af=' , $data['id_suj'] , '">' , htmlentities(trim($data['titre_suj'])) , '</a>';

echo '</td><td>';

echo "par :".htmlentities(trim($data['pseudo']))."</br>";
echo "derniere reponse le:".$jour , '-' , $mois , '-' , $annee , ' ' , $heure , ':' , $minute;
}
?>
</td></tr></table></center>
<?php

mon problem c 'est que je veux que ma table affiche 20 lignes par page;et les numéro de page seront sous latable;
quand je clic sur le num 2 il me transfere vers la 2eme page qui m'affiche les 20lignes qui suivent ;et ainsi de suite.

Auriez-vous une solution à me proposer ?
Merci d'avance

2 réponses

  1. Utilisateur anonyme
     
    Salut je te propose un truc de ce genre :

    <?php
    
    $page = $_GET['page']; // admettons qu'on est à la page 1
    $nbr_par_page = 20; // Tu choisis le nombre d'entrée par page, ici 20
    
    $limit1 = $page * $nbr_par_page - $nbr_par_page; // ce qui donne 20*1-20 donc 0
    $limit2 = $page * $nbr_par_page; // ce qui donne 1*20 donc 20
    
    mysql_query("SELECT * FROM ma_table LIMIT $limit1,$limit2");
    
    ?>


    J'espère que t'as compris :)
    1
  2. zake el Messages postés 154 Date d'inscription   Statut Membre Dernière intervention   40
     
    vraiment un grand merci
    ca fonctione ,
    voila le code pour aider d'autres personnes:

    <?php

    // on récupère le nombre de sujet total
    $connect=mysql_connect($sql_serveur,$sql_user,"") or die("error");
    mysql_select_db($sql_bdd)or die("introuvable");
    $query = "select count(*) as nb from sujet;";
    $result = mysql_query($query) or die("La requête \"$query\" n'a pas pu s'exécuter !");

    $val = mysql_fetch_array($result);
    $nb_suj_tot = $val['nb'];
    echo $nb_suj_tot;

    // S'il n'y a aucun sujet, ce n'est pas la peine de continuer
    if (!$nb_suj_tot) {
    echo "Il n'y a aucune image de référencée dans la base de données.";
    }
    else {
    // on récupère les paramètres passé sur l'url
    if (isset($_GET['s']))
    $page_debut = $_GET['s'];
    else
    $page_debut = 0;

    $query = "select * from sujet limit $page_debut, $nb_suj_page;";

    $result = mysql_query($query) or die("La requête \"$query\" n'a pas pu s'exécuter !");

    ?>
    <table width="100%" border="1">
    <?php
    while ($val = mysql_fetch_array($result)) {
    ?>
    <tr> <td>
    <?php echo $val['titre_suj']?>
    </td></tr>
    <?php
    }
    ?>

    </table>
    <p style="text-align:center;">
    <?php
    // on affiche maintenant la nagivation entre les pages

    if ($page_debut) {
    $page_prec = $page_debut - $nb_suj_page;
    ?>
    <a href="?s=<?php echo $page_prec; ?>"><< Précédentes </a>
    <?php
    }

    $j = 0;

    while ( $j * $nb_suj_page < $nb_suj_tot ) {
    if ( $j * $nb_suj_page == $page_debut ) {
    $m = $j+1;
    echo $m." ";
    $j++;
    } else {
    ?>
    <a href="?s=<?php echo $j * $nb_suj_page; ?>"><?php echo $j+1; ?> </a>
    <?php
    $j++;
    }

    }

    if ($page_debut + $nb_suj_page < $nb_suj_tot) {
    $page_suiv= $page_debut + $nb_suj_page;
    ?>
    <a href="?s=<?php echo $page_suiv; ?>">Suivantes >></a>
    <?php
    }
    }

    mysql_close();
    ?>
    1