Limiter affichage page par page

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Limiter affichage page par page

Re: Limiter affichage page par page

par Romuald632 » 16 janv. 2012, 12:59

Solution trouvée : WHERE id<5

Re: Limiter affichage page par page

par Mazarini » 19 déc. 2011, 17:13

Bonjour,

En fait tu veux avoir :
Page 1 : limit 1,3
Page 2 : limit 4,3
...

La formule pour le premier enregistrement est donc (Numéro de page - 1) * Nombre par page + 1
(il te manque le +1 dans ta formule)

Pour le nombre de pages :
1 enregistrement => 1 page
2 enregistrement => 1
3 enregistrement => 1
4 enregistrement => 2 pages
...

Formule : Nombre de page = ((nombre d'enregistrement -1) / nombre d'enregistrement par page) + 1
(utiliser floor pour l'arrondi)

Re: Limiter affichage page par page

par Romuald632 » 19 déc. 2011, 16:41

Je reviens vers vous parce que j'ai toujours pas la solution à mon problème !!!

Re: Limiter affichage page par page

par Romuald632 » 02 déc. 2011, 15:37

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

par Romuald632 » 02 déc. 2011, 12:44

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

par moogli » 02 déc. 2011, 12:28

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

par Romuald632 » 02 déc. 2011, 12:13

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

par moogli » 02 déc. 2011, 11:56

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

par Romuald632 » 02 déc. 2011, 11:52

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

par sbomb » 02 déc. 2011, 11:42

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

par Romuald632 » 02 déc. 2011, 11:32

C'est quoi une requête commentée ?

Re: Limiter affichage page par page

par xTG » 02 déc. 2011, 11:30

Utilises la requête commentée et cela ira déjà mieux. ;)

Re: Limiter affichage page par page

par Romuald632 » 02 déc. 2011, 11:22

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

par moogli » 02 déc. 2011, 11:10

c'est l'inverse, garde le count et vire le limit (seulement dans a 1ère requête) ;)

@+

Re: Limiter affichage page par page

par Romuald632 » 02 déc. 2011, 11:05

J'ai tenté de supprimer le cont(*) (puisqu'il compte tout) et de mettre LIMIT, mais dans ce cas mon code ne fonctionne plus !