rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[php] explication d'un script de pagination

Posté par tonguim, le mercredi 26 octobre 2005 à 21:00:13
Bonsoir,

j'ai télécharge un script php, qui doit me permettre de paginer, lors de l'affichage, une liste d'articles stockes dans une base de donnees.

Je ne comprend pas totalement le fonctionnement du script. J'ai pu modifier quelques instructions qui sont me sont simples à comprendre, mais pour modifier le reste, il me faut le comprendre parfaitement. Est ce quelqu'un voudrait bien me le commenter? Merci.

Ci-dessous, le script:

<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
	<head>
       <title>Title here!</title>
	</head>	
	<body>
		<?php
			include("connexion.php");	
		
			$query="select * from articles";
			$result = mysql_query($query);

			$nombMaxPage=0;
			//$nombMaxPage = 10; //nombre par page
			$numPageCour = 0; //n° de la fiche courante

			$Ndeb=@$_GET["num"]; //1ère fiche transmise par l'URL

			// tant qu'il y a des fiches
			while (($val = mysql_fetch_array($result)) && ($numPageCour<$nombMaxPage+$Ndeb)) 
			{
   				if($numPageCour>=$Ndeb) 
				{
      				// affiche un champ
      				echo $val["champ"]."<br>";
   				}
   			// une de plus
   			$numPageCour++;
		} ?>

	<br>

	<table cellpadding=3><tr>
	<?php 
	// Navigation: Des fiches avant ?
	if($Ndeb > 0) { ?>
   <td valign=top>
      <A href="?num=<? echo $Ndeb-$nombMaxPage; ?>"
         >Retour</A>
   </td>
<? } ?>
   <td>   
<? // N° des pages
$Npag = ceil(mysql_numrows($result)/$nombMaxPage);
for($i = 1;$i<=$Npag;$i++) {
   // Page courante ?
   if($Ndeb == ($i-1)*$nombMaxPage) { ?>
      Page <? echo $i; ?>
   <? } else { ?>
      <A href="?num=<? echo ($i-1)*$nombMaxPage; ?>"
      > <? echo $i; ?> </A>
   <? }
} ?>
   </td>   
<? // Des fiches après ?
if($val) { ?>
   <td valign=top>
      <A href="?num=<? echo $numPageCour; ?>">Suite</A>
   </td>
<? } ?>
</tr></table>

</body></html>
<? mysql_close(); ?>
?>
</body>
</html>
Répondre à tonguim  Signaler ce message aux modérateurs Aller au dernier message

1


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
wiwimagique, le mercredi 26 octobre 2005 à 22:15:18
ben son code est commenté ...

En gros, c'est un gros bourrin. Il sélectionne toute la table et parcourt depuis le début jusqu'à tomber sur son numéro.

Imagine que tu veux afficher tes articles de 50 à 59

Ben tu récupères la page courante (50), puis tu parcours la requête jusqu'à arriver à 50 et la tu affiches tant que 50+ nombre par page (10 dans exemple) n'est pas atteint.

résultat, ben tu a les articles de 50 à 59

Ensuite, si tu n'es pas sur le premier article, tu fait un lien qui va vers l'article courant - le nombre d'article. (Donc 50 -10 = 40) Et qui sera la page précédente. Tout en oubliant de vérifier que le nombre ne devient pas négatif

Puis il affiche toutes les pages suivantes (donc, 10 par 10) jusqu'à épuisement.

etc...



Bref, si tu veux mon avis. C'est bourrin et mal fait.
Imagine que tu as 500 000 articles et que tu vas à la 400 000e. Ben le con de script va parcourir les 399 999 avant d'afficher un truc.

Avec un Limit dans la requête, ça t'épargnera déjà quelques longueurs ...

Dans sa voiture rouge et jaune
Répondre à wiwimagique

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 tonguim, le mercredi 26 octobre 2005 à 23:41:39
Merci pour ta reponse wiwimagique,
ce que je voudrais en fait, c'est afficher tout le contenu de ma base de données par page (10 articles par page), avec en bas des pages des numeros 1, 2, 3 etc (autant de numeros qu'il doit y avoir de pages) hyperactifs, renvoyant respectivement à la 1ere, 2e, 3e, etc page des artciles affichés. Mon pb se situe au niveau de l'algorithme en fait:

debut

Je fixe le nombre d'articles par page

A l'aide de la commande limite je recupere les articles de ma base de donnees par paquets de 10 et je les affiche dans des pages, jusqu'a ce que tous les articles soient affiches ...

fin
Répondre à tonguim
Logiciels pertinents trouvés dans les téléchargements
Télécharger All In One Video Script 1.0All In One Video Script - All In One Video Script est un script pour l'extension GreaseMonkey pour le navigateur Firefox permettant de détecter la...Catégorie: Vidéo
Licence: Freeware/gratuit
Télécharger PHP Edit 0.6PHP Edit - PHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de...Catégorie: PHP
Licence: Freeware/gratuit
Télécharger WAMP Server 2.0cWAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de...Catégorie: Serveurs
Licence: Freeware/gratuit
Télécharger easyPHP 2.0b1easyPHP - EasyPHP est un environnement de travail packagé comprenant le serveur web Apache, le système de gestion de bases de données...Catégorie: Serveurs
Licence: Open Source
Plus de logiciels gratuits sur « [php] explication d'un script de pagination »