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 06/03/2010, 22h58   #1
Candidat au titre de Membre du Club
 
Inscription : septembre 2009
Messages : 79
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 79
Points : 12
Points : 12
Par défaut pagination de mes résultats

bonsoir a tous
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 
 
<?.................................................................
 
$messagesParPage=4; //Nous allons afficher 5 messages par page.
 
$retour_total= mysql_query ("SELECT COUNT(*) AS total from membre WHERE  metier like '%$metier%' AND departement like '%$departement%' AND codepostal like '%$codepostal%' AND lieu like '%$lieu%'") or die (mysql_error()); //Nous r&eacute;cup&eacute;rons le contenu de la requete dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On r&eacute;cupere le total pour le placer dans la variable $total.
 
//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);
 
if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
     $pageActuelle=intval($_GET['page']);
 
     if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le num&eacute;ro de la page) est plus grande que $nombreDePages...
     {
          $pageActuelle=$nombreDePages;
     }
}
else // Sinon
{
     $pageActuelle=1; // La page actuelle est la n&deg;1    
}
 
$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la premiere entr&eacute;e a lire
 
// La requete sql pour r&eacute;cup&eacute;rer les messages de la page actuelle.
$retour_messages=mysql_query("select * from membre where metier like '%$metier%' AND departement like '%$departement%' AND codepostal like '%$codepostal%' AND lieu like '%$lieu%' ORDER BY id DESC LIMIT ".$premiereEntree.', '.$messagesParPage.'');
$metier=$_POST['metier'];
$departement=$_POST['departement'];
$codepostal=$_POST['codepostal'];
$lieu=$_POST['lieu']; 
while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entr&eacute;es une a une gr&acirc;ce a une boucle
{
     //Je vais afficher les messages dans des petits tableaux. C'est a vous d'adapter pour votre design...
     //De plus j'ajoute aussi un nl2br pour prendre en compte les sauts a la ligne dans le message.
    echo '<table width="606" border="1" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="148" height="37" bgcolor="#FFFF99"><strong>&nbsp;'.stripslashes($donnees_messages['login']).' </strong></td>
    <td width="95"><strong>&nbsp; CP:&nbsp; '.stripslashes($donnees_messages['codepostal']).'</strong></td>
    <td width="175"><strong>&nbsp; Ville :&nbsp;'.nl2br(stripslashes($donnees_messages['ville'])).'</strong></td>
    <td width="178" rowspan="2"><div align="center"><a href="traitementchoixresultat.php?id='.stripslashes($donnees_messages['id']).'" TARGET="_blank"><img src="images/Icone_loupe.png" width="40" height="40" alt="" border="0" ></a></div></td>
  </tr>
  <tr>
    <td height="32" colspan="2"><strong>&nbsp;Type de r&eacute;sidence :&nbsp;'.stripslashes($donnees_messages['lieu']).'</strong></td>
    <td height="32">&nbsp;<strong>&nbsp; Exp :&nbsp;'.stripslashes($donnees_messages['experience']).'</strong></td>
    </tr>
  <tr>
    <td height="36" colspan="3"><strong>&nbsp;<u></u>&nbsp;</strong></td>
    <td bgcolor="#FFFFCC"><div align="center"><strong>&nbsp;<strong>'.stripslashes($donnees_messages['disponibilite']).'</strong></td>
  </tr>
 
  </table><br /><br />';
    //J'ai rajout&eacute; des sauts a la ligne pour espacer les messages.   
}
 
echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
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...
     {
         echo ' [ '.$i.' ] '; 
     }	
     else //Sinon...
     {
          echo ' <a href="rechercheresultat.php?page='.$i.'">'.$i.'</a> ';
     }
}
}
echo '</p>';
 
?>
et voici mon problème :
dans ma base de donnée j'ai 10 résultats qui conviendront a ma recherche

lorsque je fais une recherche sur mon site j'obtiens les 4 premiers résultat sur la première page de la pagination, ensuite lorsque que je clic sur le lien de la 2 éme page, j'ai aussi 4 bons résultats mais lors du clic sur la 3 éme page qui est censé me donner les 2 derniers résultats , je n'obtiens rien et effacement des 3 liens

de plus lorsque je suis sur la page 2 et que je veux revenir sur la page 1 je n'obtiens plus que 2 résultats sur la page 1..
voila j'espére avoir été clair et j'ai essayé de détailler le plus possible..

je suis bloquer depuis 3 jours sur ce code et j'en perd mon latin ^^

bon courage
hades33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2010, 23h49   #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
Tu devrais controler ce que vaut $nombreDePages.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2010, 00h05   #3
Candidat au titre de Membre du Club
 
Inscription : septembre 2009
Messages : 79
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 79
Points : 12
Points : 12
j'ai donc essayer echo $nombreDePages;
et cela m'indique le bon nombre de page
je viens de remarquer que

si je met le nombre de résultat par page a 4
j' obtiens 3 pages dont deux ok et la 3 eme plus rien , même plus la pagination

si je met le nombre de résultat par page a 9

j'obtiens 2 pages et la première a bien 9 résultats et la dernière est vide

voila si cela peut t'aider a m'aider ^^
ps:je viens de voir qu'en faite quelques soit la quantite de résultat je n'arrive pas a visualiser plus de deux pages max

Dernière modification par hades33 ; 07/03/2010 à 00h22.
hades33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2010, 00h24   #4
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
Je vois un problème de logique dans ton code : les paramètres metier, departement, code postal et lieu ne sont pas transmis de page en page.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2010, 00h32   #5
Candidat au titre de Membre du Club
 
Inscription : septembre 2009
Messages : 79
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 79
Points : 12
Points : 12
oui ...c'est vrai , c'est ca ca explique aussi pourquoi quand je reveins en arriere ca disparaisse bien joué,mais comment les transmettre alors partir de cette pagination...dans le lien ?

Code :
 echo ' <a href="rechercheresultat.php?page='.$i.'">'.$i.'</a> ';
hades33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2010, 05h29   #6
Membre expérimenté
 
Avatar de nsanabi
 
Homme nabil nayd
Inscription : septembre 2003
Messages : 566
Détails du profil
Informations personnelles :
Nom : Homme nabil nayd

Informations forums :
Inscription : septembre 2003
Messages : 566
Points : 596
Points : 596
Envoyer un message via MSN à nsanabi
tu peut les stocker (ou toute ta requête sql) comme variables de session ($_SESSION) dés la première réception pour réutilisation, sauf si tu prefere la corvée de les renvoyer dans chacun de tes liens
nsanabi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2010, 09h22   #7
Candidat au titre de Membre du Club
 
Inscription : septembre 2009
Messages : 79
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 79
Points : 12
Points : 12
le debut de mon code est
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$login=htmlentities(trim($_SESSION['login']));
 
if(isset($_POST['metier'])&&isset($_POST['departement'])&&isset($_POST['codepostal'])&&isset($_POST['lieu']))
{
$_SESSION['metier'] = $_POST['metier'];
$_SESSION['departement'] = $_POST['departement']; 
$_SESSION['codepostal'] = $_POST['codepostal']; 
$_SESSION['lieu'] = $_POST['lieu'];
}
if(isset($_SESSION['metier'])&&isset($_SESSION['departement'])&&isset($_SESSION['codepostal'])&&isset($_SESSION['lieu']))
{
$connect = mysql_connect($host, $user,
$password)
or die('Impossible de se connecter : ' . mysql_error());
// sélection de la base de données
mysql_select_db($database, $connect);
 
$metier=$_SESSION['metier'];
$departement=$_SESSION['departement'];
$codepostal=$_SESSION['codepostal'];
$lieu=$_SESSION['lieu'];
$messagesParPage=4; //Nous allons afficher 5 messages par page.
j'ai déjà mes variable de session ,je pense au début ,ou alors elle sont mal placé ....et ne se transmette pas d'une page à l'autre .
hades33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2010, 12h18   #8
Membre expérimenté
 
Avatar de nsanabi
 
Homme nabil nayd
Inscription : septembre 2003
Messages : 566
Détails du profil
Informations personnelles :
Nom : Homme nabil nayd

Informations forums :
Inscription : septembre 2003
Messages : 566
Points : 596
Points : 596
Envoyer un message via MSN à nsanabi
je ne vois rien d'anormal, sauf les affectations qui ne servent à rien ici :
Code :
1
2
3
4
5
6
7
 
$retour_messages=mysql_query("select * from membre where metier like '%$metier%' AND departement like '%$departement%' AND codepostal like '%$codepostal%' AND lieu like '%$lieu%' ORDER BY id DESC LIMIT ".$premiereEntree.', '.$messagesParPage.'');
//ci-dessous
$metier=$_POST['metier'];
$departement=$_POST['departement'];
$codepostal=$_POST['codepostal'];
$lieu=$_POST['lieu'];
mais je ne pense pas que cela soit la cause de ton probleme

essai d'afficher ta variable $premiereEntree pour voir ce qu'elle contient à chaque fois
nsanabi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2010, 12h21   #9
Candidat au titre de Membre du Club
 
Inscription : septembre 2009
Messages : 79
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 79
Points : 12
Points : 12
En surfant et en allant sur le "site du zéro" j'ai trouver ma réponse et cela fonctionne
merci pour votre aider , vous êtes très sympa..

a bientôt pour une nouvelle aventure ^^
hades33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2010, 13h01   #10
Membre expérimenté
 
Avatar de nsanabi
 
Homme nabil nayd
Inscription : septembre 2003
Messages : 566
Détails du profil
Informations personnelles :
Nom : Homme nabil nayd

Informations forums :
Inscription : septembre 2003
Messages : 566
Points : 596
Points : 596
Envoyer un message via MSN à nsanabi
et c'est quoi la reponse?? un jour, d'autre gens auront peut etre le meme probleme et voudrons profiter de ta solution
nsanabi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 08h24.


 
 
 
 
Partenaires

Hébergement Web