william_dallas Posté 2 Octobre 2008 Posté 2 Octobre 2008 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 : 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 Posté 2 Octobre 2008 Posté 2 Octobre 2008 Essaye avec ça (et dis-moi si ça ne marche pas, je n'ai pas pu le tester) : 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 Posté 3 Octobre 2008 Auteur Posté 3 Octobre 2008 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 Posté 3 Octobre 2008 Posté 3 Octobre 2008 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 Posté 3 Octobre 2008 Auteur Posté 3 Octobre 2008 Bien vu, je vois rien le matin moi!! Eh ben merci beaucoup, et à la prochaine! RESOLU
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant