william_dallas Posté 2 Octobre 2008 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 2 Octobre 2008 Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
william_dallas Posté 3 Octobre 2008 Auteur Partager 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. ++ Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 3 Octobre 2008 Partager 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;" Lien vers le commentaire Partager sur d’autres sites More sharing options...
william_dallas Posté 3 Octobre 2008 Auteur Partager Posté 3 Octobre 2008 Bien vu, je vois rien le matin moi!! Eh ben merci beaucoup, et à la prochaine! RESOLU Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant