Rechercher : dans
Par :

[php] explication d'un script de pagination

Dernière réponse le 26 oct 2005 à 23:41:39 tonguim, le 26 oct 2005 à 21:00:13 
 Signaler ce message aux modérateurs

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>

Meilleures réponses pour « [php] explication d'un script de pagination » dans :
Introduction à PHP VoirQu'est-ce que PHP? PHP est un langage interprété (un langage de script) exécuté du côté serveur (comme les scripts CGI, ASP, ...) et non du côté client (un script écrit en Javascript ou une applet Java s'exécute sur votre ordinateur...). La...
Implantation du code Php VoirL'interprétation du code par le serveur Un script PHP est un simple fichier texte contenant des instructions écrites à l'aide de caractères ASCII 7 bits (des caractères non accentués) incluses dans un code HTML à l'aide de balises spéciales et...
PHP - Créer un moteur de recherche VoirIdée générale Le moteur de recherche ci-dessous ne correspond qu'à une idée possible de moteur de recherche simple, ne gérant qu'un seul mot clé. Le concept du fonctionnement de ce moteur est de créer une base de donnée contenant les mots clés de...

1

wiwimagique, le 26 oct 2005 à 22:15:18
  • +1

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

 tonguim, le 26 oct 2005 à 23:41:39
  • +1

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