Bonjour,
J'ai suivi le très bon tutoriel concernant la pagination en PHP. Je l'ai appliqué à mon moteur de recherche mais j'ai un soucis majeur : tout s'affiche bien sur la première page, mais lorsque je clique sur la page 2 par exemple, rien ne s'affiche...
J'avais tenté un autre tuto, et j'avais rencontré le même soucis. J'ai donc tout repris à 0 avec le tuto du site, mais c'est pareil. Quelqu'un a une idée ? Je désespère, c'est pour mon stage en plus donc j'aimerais réussir à faire fonctionner cette satanée pagination... Je vous poste tout de même mon code :
<span class="Texte-norm">Enter one or several keywords in the form below :</span><br/><br/>
<form action="search-alex.php" method="post">
<input type="text" name="requete" size="20">
<input type="submit" value="Ok">
</form>
<?php
/ ****SYSTEME DE PAGINATION**** /
if((!empty($_POST'requete']) && $_POST'requete'] != NULL)) { // Si POST existe et est non nul
$recherche = htmlspecialchars($_POST'requete']); // Variable qui correspont à la recherche
$sql = "SELECT COUNT(*) AS nbResults FROM prod WHERE prod_name LIKE '%$recherche%'";
$req = mysql_query($sql) or die(mysql_error());
$data = mysql_fetch_assoc($req);
$nbResults = $data'nbResults'];
$perPage = 8;
$nbPage = ceil($nbResults/$perPage);
$cPage = 1;
if(isset($_GET'p']) && $_GET'p']>0 && $_GET'p']<=$nbPage) {
$cPage = $_GET'p'];
} else {
$cPage = 1;
}
// Requête SQL pour afficher les résultats de la recherche
$query = mysql_query("SELECT * FROM prod WHERE prod_name LIKE '%$recherche%' ORDER BY prod_id DESC LIMIT ".(($cPage-1)*$perPage).",$perPage") or die (mysql_error());
if(strlen($recherche)<3 || is_numeric($recherche)) { // S'il y a moins de 3 caractères
echo "<span class='Texte-norm'>Your query doesn't contain enough characters. Please enter a keyword that contains more than 4 characters.</span>";
}
elseif($nbResults == 0) {
?>
<h3 class="Texte-norm" style="font-weight: bold;">No results</h3>
<p class="Texte-norm">No results for the following query : "<? echo htmlspecialchars($_POST'requete']); ?>". <a href="search-alex.php" class="Texte-norm">Try a new query</a>.</p>
<?php
} else {
?>
<h2 class="Texte-bigger">Search results</h2>
<p class="Texte-norm">We found <b><?php echo $nbResults; if($nbResults > 0){echo " results";}else{echo " result";}?></b> matching your query. Here are the products matching your query :
<br/>
<?php
$compteur = 1; // On va utiliser le modulo
while($donnees = mysql_fetch_array($query)) { // on affiche les données
?>
<table border="0" width="650">
<tr>
<td width="120">
<?php
if ($donnees'prod_photo1'] != "none") {
$photo = "$rep_photo_s/".$donnees"prod_photo1"];
} else {
$photo = "$rep_photo_s/none.jpg";
}
echo "<img src='$photo' border='0' style='border:#646627 1px solid' alt='".$donnees'prod_name']."'/>";
?>
</td>
<td valign="top" style="padding: 2px;">
<?php
echo "<a href='furnitures/view-product.php?prod_id=".$donnees'prod_id']."' class='Texte-norm'>".$donnees'prod_name']."</a><br/>";
echo "<span class='Texte-norm'>".substr($donnees'prod_comment'], 0, 120)."...</span>";
?>
</td>
<?php
if($compteur%3==1) { // Modulo pour revenir à la ligne
echo "</tr><tr>";
}
$compteur++;
}
?>
</tr>
</table>
<br/>
<a href="search-alex.php" class="Texte-norm">New search</a></p>
<?php
}
}
for ($i=1;$i<=$nbPage;$i++) {
if($i==$cPage){
echo " $i /";
} else {
echo " <a href='search-alex.php?p=$i'>$i</a> /";
}
}
?>
Merci beaucoup...
Quand tu redirige vers la page suivante $_POST est perdu :)
Je te laisse chercher comment solutionner ce problème
Indice : $_GET :)
Hello,
Merci beaucoup pour la réponse ! J'ai trouvé une solution à mon problème avant de lire ce message mais je pense que j'ai ce que tu as suggéré :)
J'ai remplacé la méthode du formulaire par un GET pour récupérer les données sur plusieurs pages. J'ai mis en champ caché la valeur "page" et j'ai remplacé mes $_POST'requete'] par des $_GET'requete']. Et ça fonctionne ! Je dois fignoler ça mais je suis contente d'avoir réussi :).
A bientôt pour d'autres problèmes ;) !
Bonjour,
Je vois que ce sujet date déjà de 3 mois.Mais ça fait quelques mois aussi que je suis bloqué sur ce point. SVP vous qui avait trouvé la solution vous pouvez m'expliquez un peu plus comment vous avez procéder.ET j’espère GRAFIKART que vous allez faire un tuto pour ça.car franchement on trouve pas grand chose sur le net concernant la "recherche+pagination".
Merci d'avance