Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/12/2010, 21h31   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 57
Points : 11
Points : 11
Par défaut système de pagination

Bonjour à tous,

Souhaitant mettre une pagination sur ma page pour scinder mes articles, j'ai suivit le tuto http://antoine-herault.developpez.co...atique-en-php/

Tout à l'air de bien se passer, je n'ai pas d'erreur, par contre au niveau de la dernière boucle for, je n'arrive pas vraiment à comprendre comment l'adapter à mon site (j'utilise un système de template...)

Est ce quelqu'un pourrait m'éclairer s'il vous plait?

Voici mon code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<? $sql->DatabaseConnexion();
$messagesParPage=5; //Nous allons afficher 5 messages par page.
$cal_articles = $sql->query("SELECT COUNT(id) AS nb_articles FROM "._TARTICLE_)or die (mysql_error());
$donnees_total=mysql_fetch_assoc($cal_articles); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);
$sql->DatabaseClose();
 
if(isset($_GET['id'])) // Si la variable $_GET['page'] existe...
{
     $pageActuelle=intval($_GET['id']);
 
     if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
     {
          $pageActuelle=$nombreDePages;
     }
}
else // Sinon
{
     $pageActuelle=1; // La page actuelle est la n°1    
}
 
$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire				
 
 
$sql->DatabaseConnexion();
// La requête sql pour récupérer les messages de la page actuelle.
$aff_articles = $sql->query("SELECT * FROM "._TARTICLE_." ORDER by date DESC LIMIT ".$premiereEntree.", ".$messagesParPage)or die (mysql_error());
$sql->DatabaseClose();
 
while ($results = mysql_fetch_array($aff_articles,MYSQL_ASSOC)) {
 
					$tpl->assign_block_vars('articles', array(
					'TITRE' => $results['titre_art'],
					'DATE' => $results['date_art'],
					));
}
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
     //On va faire notre condition
     if($i==$pageActuelle) //Si il s'agit de la page actuelle...
     {
	 $tpl->assign_vars(array(
         'NUMPAGE' =>"[ ".$i." ]",
		 ));
     }	
     else //Sinon...
     {
	$tpl->assign_vars(array(
	 'NUMPAGE' => "<a href='index2.php?page=".$i."'>".$i."</a>",
	 ));
	 }
}
?>
Merci d'avance!
Vinuto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 21h37   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Sans savoir quelle est ton systeme actuel et ton probleme, on ne peut pas t'aider.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 21h49   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 57
Points : 11
Points : 11
Citation:
Envoyé par sabotage Voir le message
Sans savoir quelle est ton systeme actuel et ton probleme, on ne peut pas t'aider.
Euh... à vrai dire, c'est mon prof qui m'avait donné l'architecture.
Je peux donner le code HTML qui correspond, je ne sais pas si ça peut t'aider...

Code :
1
2
3
4
<!-- BEGIN articles -->
	{articles.TITRE}<br />{articles.DATE}
    <!-- END articles --><br />
	Page : {NUMPAGE}
Vinuto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2010, 08h27   #4
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 707
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

Informations professionnelles :
Activité : Développeur Web
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juillet 2006
Messages : 707
Points : 328
Points : 328
Quel est ton système? En regardant les variables dans le template, j'ai l'impression que c'est PhpBB2 template...
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2010, 10h22   #5
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 57
Points : 11
Points : 11
Citation:
Envoyé par okoweb Voir le message
Quel est ton système? En regardant les variables dans le template, j'ai l'impression que c'est PhpBB2 template...
Ça y ressemble beaucoup en effet, mon prof avait dû certainement partir de ça pour créer son système.

Je confirme, c'est bien ça!
Si quelqu'un pouvait m'aider... je pense que mon souci vient de la boucle for, je n'ai pas de message d'erreur mais rien ne s'affiche.

Merci!
Vinuto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2010, 15h18   #6
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 57
Points : 11
Points : 11
Je fais des testes, j'ai quelque peu modifié ma boucle for:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<? for($i=1; $i<=$nombreDePages; $i++) 
{
     if($i==$pageActuelle){ 
   $tpl->assign_block_vars('pagination', array(
      'NUMPAGE' =>"[ ".$i." ]",
   ));
}else{
	 $tpl->assign_block_vars('pagination', array(
	 'NUMPAGE' => "<a href='index2.php?page=".$i."'>".$i."</a>",
	 ));
	 }
}
?>
Au niveau rendu, je n'ai pas de message d'erreur, par contre à l'affichage, je n'ai qu'un seul article qui s'affiche.
Au niveau de mon code html, le contenu de:

Code :
1
2
3
4
	<!-- BEGIN pagination -->
	Page
	{pagination.NUMPAGE}
	<!-- END pagination -->
n'est plus visible...
Vinuto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2010, 15h30   #7
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 707
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

Informations professionnelles :
Activité : Développeur Web
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juillet 2006
Messages : 707
Points : 328
Points : 328
Lis bien ce tuto

$nombreDePages te retourne t'il quelque chose?
si oui essaies ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
$pagination = '';   
for($i=1; $i<=$nombreDePages; $i++) {
 
     if($i==$pageActuelle) $pagination .= '[ '.$i.' ]';
 
     else $pagination .=  '<a href="index2.php?page='.$i.'">'.$i.'</a>';
 
}
$tpl->assign_vars(array(
	 'NUMPAGE' => $pagination
	 ));
as tu cette variable dans ton template :
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2010, 15h59   #8
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 57
Points : 11
Points : 11
Citation:
Envoyé par okoweb Voir le message
Lis bien ce tuto

$nombreDePages te retourne t'il quelque chose?
si oui essaies ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
$pagination = '';   
for($i=1; $i<=$nombreDePages; $i++) {
 
     if($i==$pageActuelle) $pagination .= '[ '.$i.' ]';
 
     else $pagination .=  '<a href="index2.php?page='.$i.'">'.$i.'</a>';
 
}
$tpl->assign_vars(array(
	 'NUMPAGE' => $pagination
	 ));
as tu cette variable dans ton template :
Ça fonctionne!!!!!!!!!!!!!
Super!!!!!

Merci okoweb! j'avais zappé la partie du code où il y a le COUNT, pensant que la faute ne venait pas de là, et quand j'ai fait un echo, j'ai eu 0... parceque je n'avais pas attribué le même nom à la requête et à la variable ( ).
Vinuto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2010, 16h18   #9
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 57
Points : 11
Points : 11
J'ai parlé trop vite... Mes liens de pages s'affichent, par contre à l'affichage que je demande 5 ou 10 articles par page, j'en ai qu'un qui s'affiche...

Je vais regarder ça...
Vinuto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2010, 16h23   #10
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 707
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

Informations professionnelles :
Activité : Développeur Web
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juillet 2006
Messages : 707
Points : 328
Points : 328
Citation:
Envoyé par Vinuto Voir le message
Ça fonctionne!!!!!!!!!!!!!
Super!!!!!

Merci okoweb! j'avais zappé la partie du code où il y a le COUNT, pensant que la faute ne venait pas de là, et quand j'ai fait un echo, j'ai eu 0... parceque je n'avais pas attribué le même nom à la requête et à la variable ( ).
Bien, pour aller loin, quand tu auras beaucoup d'éléments dans ta table, tu risque avoir un nombre de pages trop élévé.
tu auras un truc de ce genre :
1, 2, 3.... interminable. Faut voir également ca.
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h34.


 
 
 
 
Partenaires

Hébergement Web