La communauté ALL HTML c'est 58826 membres à ce jour dont 2 inscrits aujourd'hui et 31 depuis une semaine.

  • imprimer
  • aide

Forum de discussions « PHP - SQL »

Retrouvez les publications relatives à ces discussions dans nos rubriques PHP, SQL.

Réduire le nombre de page écrit !

liste des forums liste des discussions Participer à la discussion

Photo de oceanne Message publié le dimanche 12 octobre 2008 à 11 h 37 par oceanne.
Bonjour,

J'ai un script pour ma boutique qui me permet de montrer les dernières commandent, seulement j'ai pleins de pages qui s'affichent...je voudrai qu'à la place de ce nombre incalculable de page il y est tout simplement : début, suivant, fin qui fait beaucoup plus propre.

Voici l'exemple pour mieux comprendre : http://img147.imageshack.us/my.php?image=essaiyr2.jpg

Voici une partie du script :
<? if($page==""){$page=0;} $limit="30"; $requete2=mysql_query("select * from boutique_commande WHERE etat='0' ORDER BY date_c DESC LIMIT $page,$limit") or die(mysql_error); while($ligne = mysql_fetch_array($requete2)) { $date_c2= $ligne["date_c"]; $login2 = $ligne["login"]; $id_prod2= $ligne["id_prod"]; ?> <tr class="vert1"> <td bgcolor="#ffffcc" height="20px"><? echo $date_c2; ?></td> <td bgcolor="#ffffcc"><? echo $login2; ?></td> <td bgcolor="#ffffcc"><? echo $id_prod2; ?></td> </tr> <? } ?> </table> <div id="pagination"> <p>[ <? $result=mysql_query("select count(*) from boutique_commande WHERE etat='0'"); $row=mysql_fetch_row($result); if ($page == "0") { echo"1 "; } else { echo"<a href=\"cadeaux.php?page=0\">1</a> "; } for($index=1;($index*$limit)<$row[0];$index++) { $pg = $index+1; if(($index*$limit)!=$page) { print(" - <a href=\"cadeaux.php?page=".($index*$limit)."\">"); echo"$pg"; print("</a>"); } else { echo" - $pg"; } } ?> ]</p>

Que dois-je mettre ?
Photo de padro Message publié le lundi 13 octobre 2008 à 17 h 45 par padro. Un poisson nourrit une seule fois. Apprendre à pêcher nourrira pour toujours. GOOGLE trouve les réponses à la plupart des questions postées sur ce forum. Apprendre à utiliser GOOGLE c'est devenir autonome et libre ..pour toujours.
S'il y a vraiment tant de pages je trouve à la fois inappropriée et insuffisant la façon que tu préconises.

S'il y a par exemple plus de 400 pages et que je m'arrête à la 189è, lorsque je reviendrai le lendemain je devrai m'en retaper tout un chapelet pour reprendre à l'endroit désiré.

Il devrait d'abord y avoir une indication pour informer du nombre de pages total.
Et la présentation devrait être faite à l'image des résultats de recherche de Google, avec un range de 6 à 10 pages proposées, et en progression à partir de la quatrième proposition.
Finalement, ce serait sympa de retrouver un form pour taper un numéro de page à atteindre.
Photo de oceanne Message publié le lundi 13 octobre 2008 à 19 h 51 par oceanne.
Oui c'est vrai je comprends ce que tu veux dire.

Sinon il faudrait par exemple n'afficher que les 10 dernières pages.
Comment faire pour limiter l'affichage à 10 page par exemple ?
Photo de nours312 Message publié le mercredi 15 octobre 2008 à 12 h 27 par nours312. hé oui
je c pas si G tout compris, mais je me lance :D :

tu compte tout les résultat de la seconde requete ... (nb total de données envisageable)
divisé par $limite et arrondi (round) te donne le nb de page.

si le N° de page en cours est > à 2 et < de $nbPages-2, tu fais un affichage :

0,1,2, ... PageEncours-2, PageEncours-2, PageEncours-1, PageEncours, PageEncours+1, PageEncours+2, ... $nbPages-2, $nbPages-1, $nbPages

je te fais grace des balises <a> qui ne seront pas dur à produire ...

Si PageEncours <= 2 :

tu affiche
0,1,2,3,4 .... $nbPages-2, $nbPages-1, $nbPages

... de meme pour PageEncours >= de $nbPages-2


ensuite, tu récupères les données à afficher en fonction de page ....


!! ATTENTION !! si tu as autant de données dans ta BDD penses à optimiser "à mort" tes requetes ! évites de faire SELECT * si tu as 10 champs ! il vaut mieux ne selectionner que ceux demandés ! idem pour select count(*), il serait préférable select count(`id`) ...

Mais ce n'est qu'un humble avis ... :d

BonCode !
Photo de nours312 Message publié le mercredi 15 octobre 2008 à 12 h 29 par nours312. hé oui
en passant, il serait peut-etre utile de metre un moteur de recherche pour 400 pages ... ou un champ permettant d'inscrire un numéro de page précis ...
Photo de oceanne Message publié le jeudi 16 octobre 2008 à 21 h 33 par oceanne.
Voici l'exemple pour mieux comprendre : http://img147.imageshack.us/my.php?image=essaiyr2.jpg
Photo de nours312 Message publié le vendredi 17 octobre 2008 à 08 h 54 par nours312. hé oui
dans ce cas il te suffit de mettre 4 liens ...

if ((isset($_get['page']) && $_get['page'] == '0')|| empty($_get['page']) ){
echo '<a href="?page=1">suivant</a><a href="?page='.$nbpage.'">dernier</a>;
} else if (isset($_get['page']) && $_get['page'] == $nbpage) {
echo '<a href="?page=0">Début</a><a href="?page=1">précédent</a>;
} else {
echo '<a href="?page=0">début</a><a href="?page='.$_get['page']-1.'">précédent</a>
<a href="?page='.$_get['page']+1.'">suivant</a><a href="?page='.$nbpage.'">dernier</a>';
}

cela te convient mieux ?

BonCode;)
Photo de oceanne Message publié le jeudi 23 octobre 2008 à 10 h 05 par oceanne.
Cela ne fonctionne pas, j'ai mis ceci :
<? if($page==""){$page=0;} $limit="30"; $requete2=mysql_query("select * from boutique_commande WHERE etat='0' ORDER BY date_c DESC LIMIT $page,$limit") or die(mysql_error); while($ligne = mysql_fetch_array($requete2)) { $date_c2= $ligne["date_c"]; $login2 = $ligne["login"]; $id_prod2= $ligne["id_prod"]; ?> <tr class="vert1"> <td bgcolor="#ffffcc" height="20px"><? echo $date_c2; ?></td> <td bgcolor="#ffffcc"><? echo $login2; ?></td> <td bgcolor="#ffffcc"><? echo $id_prod2; ?></td> </tr> <? } ?> </table> <div id="pagination"> <p>[ <? $result=mysql_query("select count(*) from boutique_commande WHERE etat='0'"); $row=mysql_fetch_row($result); if ((isset($_get['page']) && $_get['page'] == '0')|| empty($_get['page']) ){ echo '<a href="cadeaux.php?page=1">suivant</a><a href="cadeaux.php?page='.$nbpage.'">dernier</a>; } else if (isset($_get['page']) && $_get['page'] == $nbpage) { echo '<a href="cadeaux.php?page=0">Début</a><a href="cadeaux.php?page=1">précédent</a>; } else { echo '<a href="cadeaux.php?page=0">début</a><a href="cadeaux.php?page='.$_get['page']-1.'">précédent</a> <a href="cadeaux.php?page='.$_get['page']+1.'">suivant</a><a href="cadeaux.php?page='.$nbpage.'">dernier</a>'; }]</p> </div> <? echo '</center>'; include('footer.php'); ?>
Photo de nours312 Message publié le vendredi 24 octobre 2008 à 19 h 54 par nours312. hé oui
Salut :

J'ai mis $_GET['page'] pensant que c'était ainsi que tu récupérez ta variable, mais ... pour la page 1, j'ai mis $page = 1, pensant que tu traitez les pages et la clause LIMIT différemment de actuellement, ... donc : testes ceci :

$result=mysql_query("select count(*) from boutique_commande WHERE etat='0'"); $nbpage=mysql_result($result, 0); if ($page <= $limit){ echo '<a href="cadeaux.php?page='.($page+$limit).'">suivant</a> <a href="cadeaux.php?page='.($nbpage-$limit).'">dernier</a>; } else if ($page >= $nbpage-$limit) { echo '<a href="cadeaux.php?page=0">Début</a> <a href="cadeaux.php?page='.$limit.'">précédent</a>; } else { echo '<a href="cadeaux.php?page=0">début</a> <a href="cadeaux.php?page='.($page-$limit).'">précédent</a> <a href="cadeaux.php?page='.($page+$limit).'">suivant</a> <a href="cadeaux.php?page='.($nbpage-$limit).'">dernier</a>'; }

tu constateras que le fait d'utiliser la variable $page non pas comme le numéro de la page demandé, mais comme le numéro de la premier résultat demandé ... t'obliges à inclure faire des calculs savant un peu partout ...
Contrairement à ce que t'avais fait plus haut !

Mais il est vrai que ça a pour avantage de pouvoir démarrer à l'enregistrement numéro 15, contrairement à ma précédente variable, et ça devrait te faciliter ceratines autres fonction ...
Bref, ça devrait aller mieux, tiens nous informé !

BonCode;)

liste des forums liste des discussions Participer à la discussion

Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.

Les 5 dernières discussions