Pagination table php/mysql

Résolu/Fermé
zake el Messages postés 151 Date d'inscription vendredi 21 janvier 2011 Statut Membre Dernière intervention 19 décembre 2017 - 21 janv. 2011 à 20:58
zake el Messages postés 151 Date d'inscription vendredi 21 janvier 2011 Statut Membre Dernière intervention 19 décembre 2017 - 26 janv. 2011 à 14:04
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



A voir également:

2 réponses

Utilisateur anonyme
21 janv. 2011 à 21:06
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
zake el Messages postés 151 Date d'inscription vendredi 21 janvier 2011 Statut Membre Dernière intervention 19 décembre 2017 40
Modifié par zake el le 26/01/2011 à 14:12
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