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...

3 réponses


Grafikart
Réponse acceptée

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