Version complète: sur le forum Webmaster Hub : Organiser les pages résultant d'une recherche
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
william_dallas
Bonjour,

J'ai récupérer un petit script (https://confluence.cornell.edu/display/CUWEBFORUM/Using+PHP+to+wrap+Google+Search+Appliance+results+in+your+site%27s+template)pour afficher les résultats du moteur de recherche google appliance. Tout marche bien sauf que lorsqu'un mot clé est présent sur de nombreuses pages, voici ce qui s'affiche sur mon site :

Result page: 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

J'aimerai plutot présenter ca de la facon suivante :
Result page: < 1 2 3 ... 97 98 >.
Voici la fonction qui retourne les pages :

CODE
public function getResultsetLinks() {
        $links = array();
        for ($resultsPageNum = 1; $resultsPageNum <= $this->lastResultsPageNum; $resultsPageNum++) {
            if ($resultsPageNum == $this->resultsPageNum) {
                $links[] = $resultsPageNum;
            } else {
                $url = $this->baseQueryURL . "resultsPageNum=" . ($resultsPageNum);
                $links[] = "<a href=\"$url\">$resultsPageNum</a>";
            }
        }
        return $links;
    }


Si vous avez une idée, je suis preneur!
Merci
P.S: si vous voulez voir la totalité du code, télécharger le CUSD_Search.zip
captain_torche
Essaye avec ça (et dis-moi si ça ne marche pas, je n'ai pas pu le tester) :
CODE
public function getResultsetLinks() {
        $links = array();
        $autour = 2;
        $debut = $fin = false;
        $intervalle = '... ';
        $num_debut = $this->resultsPageNum-$autour;
        $num_fin = $this->resultsPageNum+$autour;
        $tab_autour = array();
        for($i = $num_debut; $i <= $num_fin; $i++)
            $tab_autour[] = $i;
        for ($resultsPageNum = 1; $resultsPageNum <= $this->lastResultsPageNum; $resultsPageNum++) {
            if($resultsPageNum == 1 || $resultsPageNum == $this->lastResultsPageNum || in_array($resultsPageNum, $tab_autour)) {
                if ($resultsPageNum == $this->resultsPageNum) {
                    $links[] = $resultsPageNum;
                } else {
                    $url = $this->baseQueryURL . "resultsPageNum=" . ($resultsPageNum);
                    $links[] = "<a href=\"$url\">$resultsPageNum</a>";
                }
            }
            elseif($resultsPageNum != $this->resultsPageNum && !$debut) {
                $links[] = $intervalle;
                $debut = true;
            }
            elseif($resultsPageNum != $this->resultsPageNum && !$fin) {
                $links[] = $intervalle;
                $fin = true;
            }        
        }
        return $links;
    }


Je viens de rédiger un article sur le sujet, si tu souhaites plus d'explications : Gestion d'un système de pagination.
william_dallas
Merci pour ta réponse mais ca ne marche pas tout à fait comme je le veux. Maintenant j'obtiens ceci :

Result page: 1 ... ... 98 >

Et si je clique sur suivant les pages ne change pas, c'est toujours la 1 et la 98.
Je voudrais que lorsqu'on clique sur "suivant" le Result page deviennent : 2 ... ... 98 >
Si tu as une idée pour corriger ca, ca serait parfait, moi je vais essayer aussi et je te tiens au courant.
++
captain_torche
Au temps pour moi, une petite erreur dans une ligne :
Juste après la première boucle, remplace "$tab_autour[] = $j;" par "$tab_autour[] = $i;"
william_dallas
Bien vu, je vois rien le matin moi!! tongue.gif
Eh ben merci beaucoup, et à la prochaine!

RESOLU
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.