Bonjour,

J’ai un problème de pagination sur une page de résultat de recherche.

J’ai une page formulaire de recherche à remplir la page de résultat à un affichage par colonne de type fiches users avec des infos.

Une première requête avec mysql_numrows m’affiche le nombre de fiches.

Ensuite viens une seconde requête avec un LIMIT qui m’affiche les résultats de plusieurs tables avec mysql_fetch_assoc afin de travailler en colonne correspondantes 2 colonnes et 6 fiches

Tout cela fonctionne très bien…

Au moment de mettre ma requête de pagination je reprends exactement la même requête et je mets un COUNT(*) et cela ne marche pas… il ne me trouve qu’un enregistrement donc une seule page.

J’ai tout essayé et je ne comprends pas d’où vient le problème… merci de votre aide.

* J’ai épuré le code pour ne pas être trop chiant… j’espère que cela vous suffira

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
 
<?php 				
$select02 = "SELECT coordonnes.refID,coordonnes.nom,coordonnes.prenom,coordonnes.genre,coordonnes.pays,coordonnes.ville,coordonnes.age,coordonnes.groupe,users_profils.taille,users_profils.searchingFor01,users.pseudo,users.active FROM coordonnes INNER JOIN users_profils ON coordonnes.refID=users_profils.id_users INNER JOIN users ON coordonnes.refID=users.userID WHERE users.active='1' AND coordonnes.genre='$genre_recherche' AND coordonnes.pays LIKE '%$countryLive%' AND users_profils.maritalStatus LIKE '%$maritalStatus%' AND users_profils.searchingFor01 LIKE '%$searchingFor01%' AND users_profils.searchingFor02 LIKE '%$searchingFor02%' AND users_profils.searchingFor03 LIKE '%$searchingFor03%' AND users_profils.searchingFor04 LIKE '%$searchingFor04%' AND users.pseudo LIKE '%$pseudo_rech%' AND coordonnes.age >= '$age_min' AND coordonnes.age <= '$age_max' ORDER BY coordonnes.groupe DESC "; 
$result02 = mysql_query($select02)or die(mysql_error());
$res02= mysql_numrows($result02);								
?>
 
<table width="100%" border="0" cellspacing="0" cellpadding="0">
                    <tr>
                      <td width="93%"><em><strong><font color="#333333" face="Verdana">
                        <?php if($res02>1){ ?>
                        <?php echo TXT_MOTEUR_RECHERCHE_TITRE2 ?>
                        <?php } else { ?>
                        <?php echo TXT_MOTEUR_RECHERCHE_TITRE ?>
                        <?php } ?>
                        &nbsp;(<?php echo $res02 ?>)</font></strong></em></td>
                      <td width="3%">&nbsp;</td>
                    </tr>
                    <tr>
                      <td>&nbsp;</td>
                      <td>&nbsp;</td>
                    </tr>
                  </table>
 
<?php				
// ***************************************************************************************************************
// Numero de page (1 par défaut)
if( isset($_GET['page']) && is_numeric($_GET['page']) )
    $page = $_GET['page'];
else
    $page = 1;
 
// Nombre d'infos par page
$pagination = "$nbr_fiche_liste"; // Corresponds a 6 fiches
// Numéro du 1er enregistrement à lire
$limit_start = ($page - 1) * $pagination;
//*****************************************************************************************************************					  
 
 
//requête de recherche 
$req ="SELECT coordonnes.refID,coordonnes.nom,coordonnes.prenom,coordonnes.genre,coordonnes.pays,coordonnes.ville,coordonnes.age,coordonnes.groupe,users_profils.taille,users_profils.searchingFor01,users.pseudo,users.active FROM coordonnes INNER JOIN users_profils ON coordonnes.refID=users_profils.id_users INNER JOIN users ON coordonnes.refID=users.userID WHERE users.active='1' AND coordonnes.genre='$genre_recherche' AND coordonnes.pays LIKE '%$countryLive%' AND users_profils.maritalStatus LIKE '%$maritalStatus%' AND users_profils.searchingFor01 LIKE '%$searchingFor01%' AND users_profils.searchingFor02 LIKE '%$searchingFor02%' AND users_profils.searchingFor03 LIKE '%$searchingFor03%' AND users_profils.searchingFor04 LIKE '%$searchingFor04%' AND users.pseudo LIKE '%$pseudo_rech%' AND coordonnes.age >= '$age_min' AND coordonnes.age <= '$age_max' ORDER BY coordonnes.groupe DESC LIMIT $limit_start, $pagination";
 
//----------------------------------------------------------------------
 
$result = mysql_query($req)or die(mysql_error());
 
 
//--- Résultat ---// 
$res = mysql_query($req);  
while($data = mysql_fetch_assoc($res))  
{  
 $tablo[]=$data; //--- mettre les données dans un tableau  
}  
$nbcol=2; //--- détermine le nombre de colonnes  
 
 
echo '<div align=\"center\"><table align=\"center\" width="100%">';  
$nb=count($tablo); 
for($i=0;$i<$nb;$i++){ 
 
//--- les valeurs que l'on souhaite afficher 
$valeur1=$tablo[$i]['refID'];  
$valeur2=$tablo[$i]['nom'];
$valeur3=$tablo[$i]['pseudo'];  
$valeur4=$tablo[$i]['pays'];    
$valeur5=$tablo[$i]['ville'];
$valeur6=$tablo[$i]['age'];
$valeur7=$tablo[$i]['groupe'];
$valeur8=$tablo[$i]['genre'];
$valeur9=$tablo[$i]['date_profil_visite'];
 
 
if($i%$nbcol==0) 
 
echo '<tr height="100">';  
echo '<td width="350" height="80" valign="top">'; 
 
 
// ***********ICI LE RESULTAT DES FICHES
 
 
echo'</td>';
 
if($i%$nbcol==($nbcol-1))  
echo '</tr>';  
 
}  
echo '</table></div>';  
 
}
//**********************************************************************************************
// Pagination
 
$nb_total = mysql_query("SELECT COUNT(*) AS nb_total FROM coordonnes,users_profils,users WHERE coordonnes.refID=users_profils.id_users AND coordonnes.refID=users.userID AND users.active='1' AND coordonnes.genre='$genre_recherche' AND coordonnes.pays LIKE '%$countryLive%' AND users_profils.maritalStatus LIKE '%$maritalStatus%' AND users_profils.searchingFor01 LIKE '%$searchingFor01%' AND users_profils.searchingFor02 LIKE '%$searchingFor02%' AND users_profils.searchingFor03 LIKE '%$searchingFor03%' AND users_profils.searchingFor04 LIKE '%$searchingFor04%' AND users.pseudo LIKE '%$pseudo_rech%' AND coordonnes.age >= '$age_min' AND coordonnes.age <= '$age_max'");
 
$nb_total = mysql_fetch_array($nb_total);
$nb_total = $nb_total['nb_total'];
 
$nb_pages = ceil($nb_total / $pagination);
 
?>
                  <table width="100%" border="0" cellpadding="0" cellspacing="0">
                    <tr>
                      <td height="10" colspan="3"></td>
                    </tr>
                    <tr>
                      <td width="2%" height="25" background="../images/fond_boite01.png"></td>
                      <td width="7%" background="../images/fond_boite01.png"><strong>Page :</strong></td>
                      <td width="91%" background="../images/fond_boite01.png"><?php // Boucle sur les pages
for ($i = 1 ; $i <= $nb_pages ; $i++) {
    if ($i == $page ) { ?>
                        <strong><font color="#666666" size="2" face="Verdana"><?php echo $i ?></font></strong>
                        <?php   } else { ?>
                        <a href="?lang=<?php echo $lang ?>&page=<?php echo $i ?>" class="lien09"><strong><font size="2" face="Verdana"><?php echo $i ?></font></strong></a>
                        <?php }} ?>
                      </td>
                    </tr>
                  </table>