Page 1 sur 2
Limiter affichage page par page
Posté : 02 déc. 2011, 10:49
par Romuald632
J'ai 9 enregistrements dans ma BDD, mais je veux afficher les 6 derniers sur 2 pages
J'ai essayé de mettre un LIMIT dans mysql_query('SELECT COUNT(*) AS nom_compagnie_avion FROM avion LIMIT O,5');, mais sans réussir !!
Mon code :
$nombreDeMessagesParPage = 3;
$retour = mysql_query('SELECT COUNT(*) AS nom_compagnie_avion FROM avion');
$donnees = mysql_fetch_assoc($retour);
$totalDesMessages = $donnees['nom_compagnie_avion'];
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
if (isset($_GET['page']))
{
$page = $_GET['page'];
}
else
{
$page = 1;
}
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
$reponse = mysql_query('select * from avion LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
echo '<br / >';
echo '<div id="page">';
echo 'Pages : ';
Merci de votre aide
Re: Limiter affichage page par page
Posté : 02 déc. 2011, 10:59
par moogli
heu ou mais non
count() permet de compter, tu n'aura donc pas les noms.
un select count(*) from avion; donne le nombre total de tuple dans la table.
la limit est donc mal employée ici (ligne2)
par contre le second select semble correct
après il te manque l'affichage
@+
Re: Limiter affichage page par page
Posté : 02 déc. 2011, 11:05
par Romuald632
J'ai tenté de supprimer le cont(*) (puisqu'il compte tout) et de mettre LIMIT, mais dans ce cas mon code ne fonctionne plus !
Re: Limiter affichage page par page
Posté : 02 déc. 2011, 11:10
par moogli
c'est l'inverse, garde le count et vire le limit (seulement dans a 1ère requête)
@+
Re: Limiter affichage page par page
Posté : 02 déc. 2011, 11:22
par Romuald632
J'ai modifier le code comme ceci :
$nombreDeMessagesParPage = 1;
$retour = mysql_query('SELECT COUNT(*) AS nom_compagnie_avion FROM avion');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nom_compagnie_avion'];
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
if (isset($_GET['page']))
{
$page = $_GET['page'];
}
else
{
$page = 1;
}
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
//$reponse = mysql_query('select * from avion LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
$reponse = mysql_query('select * from avion LIMIT 1');
Donc 1 affichage par page, mais toujours le même sur les 9 pages
Re: Limiter affichage page par page
Posté : 02 déc. 2011, 11:30
par xTG
Utilises la requête commentée et cela ira déjà mieux.

Re: Limiter affichage page par page
Posté : 02 déc. 2011, 11:32
par Romuald632
C'est quoi une requête commentée ?
Re: Limiter affichage page par page
Posté : 02 déc. 2011, 11:42
par sbomb
xTG parle de la requête que tu as mis en commentaire dans le précédent code que tu as as cité, à savoir:
remplacer ta requête:
$reponse = mysql_query('select * from avion LIMIT 1');
Par celle que tu avais mis en commentaire:
$reponse = mysql_query('select * from avion LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
@+
Re: Limiter affichage page par page
Posté : 02 déc. 2011, 11:52
par Romuald632
Ca revient à ce que j'avais au début... c'est à dire que ça affiche tous les résultats
Re: Limiter affichage page par page
Posté : 02 déc. 2011, 11:56
par moogli
c'pas possible si $nombreDeMessagesParPage reste égale à trois
affiche la requête générée et test la avec phpmyadmin (par exemple)
$sql = 'select * from avion LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage;
echo $sql;
$reponse = mysql_query($sql);
@+
Re: Limiter affichage page par page
Posté : 02 déc. 2011, 12:13
par Romuald632
Le résultat est le suivant :
select * from avion LIMIT 3, 3
Peut-être que le problème vient de la suite alors :
echo '<br / >';
echo '<div id="page">';
echo 'Pages : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo ' <a class="nbr_page" href="avion.php?page=' . $i . '">' .($i == $page?'<strong>'.$i.'</strong>':$i). '</a> |';
}
echo '</div>';
while ($donnees = mysql_fetch_assoc($reponse) )
{
Re: Limiter affichage page par page
Posté : 02 déc. 2011, 12:28
par moogli
poste le code complet (hors mis les host, user et mdp de connexion au sgbd et autre trucs sensible du genre) cela ira plus vite
@+
Re: Limiter affichage page par page
Posté : 02 déc. 2011, 12:44
par Romuald632
Voilà mon code complet
$nombreDeMessagesParPage = 3;
$retour = mysql_query('SELECT COUNT(*) AS nom_compagnie_avion FROM avion');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nom_compagnie_avion'];
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
if (isset($_GET['page']))
{
$page = $_GET['page'];
}
else
{
$page = 1;
}
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
$reponse = mysql_query('select * from avion LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
echo '<br / >';
echo '<div id="page">';
echo 'Pages : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo ' <a class="nbr_page" href="avion.php?page=' . $i . '">' .($i == $page?'<strong>'.$i.'</strong>':$i). '</a> |';
}
echo '</div>';
while ($donnees = mysql_fetch_assoc($reponse) )
{
?>
<br />
<table class="td_avion" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
<tr>
<td class="td_logo_avion" valign="top">
<?php
echo '<a href="'.$donnees['lien_web_compagnie_avion'].'" target="_blank"><img src="../logos/'.$donnees['logo_compagnie_avion'].'" width="80"/></a>';
?></td>
<td class="td_description_avion" valign="top">
<?php
echo '<img src="../images/01.png"> ';
echo $donnees['nom_compagnie_avion'];
echo '<br/>';
echo ''.nl2br ($donnees['description_compagnie_avion']).'';
echo '<br>';
echo '<a href="'.$donnees['lien_web_compagnie_avion'].'" target="_blank"><img src="logo_billet_avion_01.png"></a>';
?></td>
</tr>
</table>
Re: Limiter affichage page par page
Posté : 02 déc. 2011, 15:37
par Romuald632
Bon je ne trouve tjs pas la solution !
Si je réflechis nul part j'indique le nombre maxi à afficher, c'est à dire 6
Testé ça mais sans succès :
$totalDesMessages = 6;
Re: Limiter affichage page par page
Posté : 19 déc. 2011, 16:41
par Romuald632
Je reviens vers vous parce que j'ai toujours pas la solution à mon problème !!!