Page 1 sur 1

affichage de liens

Posté : 13 oct. 2005, 13:40
par fersayn
bonjour,

j'ai créer moteur de recherche qui permet de recherche des données mysql...

le moteur affiche bien des résultats mais je le limite à 6 résultats par page et lui demande de faire des liens vers d'autres pages pour afficher les résulats suivants.

il semblerai qu'il y ait un probleme dans ma requete: lorsque je clique sur le lien suivant la page qui s'affiche est celle de recherche alors qu'il devrait afficher les résultats suivants.

Voici le code:

Code : Tout sélectionner

// AFFICHAGE DU LIEN PRECEDENT SI BESOIN EST // (LA PREMIERE PAGES EST 0) if ($page>0) { $precedent=$page-1; print "<a href=\"$script_name?page=$precedent&mot=$mot\">PRECEDENT</a>&nbsp;\n"; } // AFFICHAGE DES NUMEROS DE PAGE $i=0;$j=1; if($nb_total>$limit) { while($i<($nb_total/$limit)) { if($i!=$page){echo "(<a href=\"$script_name?page=$i&mot=$mot\">$j</a>)&nbsp;";} else {echo "<b>($j)</b>&nbsp;";} $i++;$j++; } } // AFFICHAGE DU LIEN SUIVANT SI BESOIN EST if($debut+$limit<$nb_total) { $suivant=$page+1; echo "<a href=\"$script_name?page=$suivant&mot=$mot\">SUIVANT</a>"; } }
données: $limit =6

merci pour votra aide

Posté : 13 oct. 2005, 13:44
par Truc
Salut, si tu pense que le probleme vient de la requete pourquoi ne pas nous la montrer :wink:

Posté : 13 oct. 2005, 13:45
par heddicmi
Si tu penses qu'il y a un soucis dans la requête, ce serais bien de l'afficher :lol:

Décidement... Spéciale pagination depuis 2 jours !

Posté : 13 oct. 2005, 14:32
par fersayn

Code : Tout sélectionner

$db_link = mysql_connect("$sql_serveur","$sql_user","$sql_passwd"); $mot = isset($_POST['mot']) ? $_POST['mot'] : ""; $mot=strtolower($mot); $mots=split(" ",$mot); $nombre_mots=count($mots); $z=1; $texte="Pages contenant <b>"$mots[0]"</b>"; $phrase="'%$mots[0]%'"; while($z<$nombre_mots) { $phrase.=" ".$et_ou." mots like '%$mots[$z]%'"; $texte.=" "; if($et_ou=="or"){$texte.="et";}else{$texte.="ou";} $texte.=" <b>"$mots[$z]"</b>"; $z++; } if(!isset($debut)) { $debut=0; } if(!isset($page)) { $page=0; } $debut=$page*$limit; // NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE $requete=mysql_db_query("$sql_bdd","select count(*) from recherche where mots like $phrase order by id",$db_link); $nb_total=mysql_result($requete,0,"count(*)"); $requete=mysql_db_query("$sql_bdd","select * from recherche where mots like $phrase limit $debut,$limit",$db_link); $num=mysql_num_rows($requete); // DEFINITION DU MESSAGE A AFFICHER if ($num==0) {echo "Désolé, aucune page de ce site ne contient <b>$mot</b>...";} else if ($mot=="") {echo "Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur 'OK' !";} else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2 caractères.";} // AFFICHAGE DES RESULTATS else { echo "<b>$nb_total</b> r&eacute;ponse"; if ($nb_total>1) {echo "s";} echo "<br>$texte"; $i=0; while($i<$num) { $url=mysql_result($requete,$i,"url"); $Labo=mysql_result($requete,$i,"Nom"); $Adresse=mysql_result($requete,$i,"Adresse"); $Tel=mysql_result($requete,$i,"Tel"); $Fax=mysql_result($requete,$i,"Fax"); $Site=mysql_result($requete,$i,"Site web"); echo "<br><br><a href=\"$url\"><b>$Labo</b></a><br>$Adresse<br><br>$Tel<br><br>$Fax<br><br>$Site<br><font size=1>$url</font>\n"; $i++; } echo "<br><br>"; // AFFICHAGE DU LIEN PRECEDENT SI BESOIN EST // (LA PREMIERE PAGES EST 0) if ($page>0) { $precedent=$page-1; print "<a href=\"$script_name?page=$precedent&mot=$mot\">PRECEDENT</a>&nbsp;\n"; } // AFFICHAGE DES NUMEROS DE PAGE $i=0;$j=1; if($nb_total>$limit) { while($i<($nb_total/$limit)) { if($i!=$page){echo "(<a href=\"$script_name?page=$i&mot=$mot\">$j</a>)&nbsp;";} else {echo "<b>($j)</b>&nbsp;";} $i++;$j++; } } // AFFICHAGE DU LIEN SUIVANT SI BESOIN EST if($debut+$limit<$nb_total) { $suivant=$page+1; echo "<a href=\"$script_name?page=$suivant&mot=$mot\">SUIVANT</a>"; } } // DECONNEXION DE LA BASE DE DONNEE
voici le code du moteur

Désolé :?

Posté : 13 oct. 2005, 15:24
par Truc
tu ne récupère pas la variable des pages:
$page = isset($_POST['page']) ? $_POST['page'] : 0;

Posté : 13 oct. 2005, 17:42
par fersayn
j'ai bien essayé de placer cette requete mais ca ne marche toujours pas...

comment faire?

Posté : 13 oct. 2005, 17:51
par Truc
c'est de ma faute, remplace
$page = isset($_POST['page']) ? $_POST['page'] : 0;
par
$page = isset($_GET['page']) ? $_GET['page'] : 0;

Posté : 13 oct. 2005, 18:04
par fersayn
elle m'affiche 6 résutats sur un page...et au bas j'ai des numeros qui sont des liens vers les résultats suivants
Lorsque je clique dessus je reviens à la page de départ

Posté : 13 oct. 2005, 18:09
par Truc
meme avec GET ??
si oui montre la requete génrèrée.

Posté : 13 oct. 2005, 18:14
par fersayn
je n'arrive pas a tout suivre, je suis débutant. je dois la placer l'inititialisation de page avec GET?

Posté : 13 oct. 2005, 18:24
par Truc
comme tu l'a fait avec la vriable mot, au tout début.
apres un lien il faut récupèrer les valeurs:lien.php?var=truc
dans ce cas on récupère le contenu de la variable "var" par $_GET['var']
$db_link = mysql_connect("$sql_serveur","$sql_user","$sql_passwd");

//si un lien a été cliqué la variable $_GET['page'] existe donc on affecte son contenu a $page dans le cas contraire on affecte une valeur par défaut, ici 0.
$page = isset($_GET['page']) ? $_GET['page'] : 0;

//j'ai un peu changé
//sur la 1ere page tu récupère les mot grace a un champ text d'un formulaire (=>POST) si tu clique sur un lien tu récupère grace a GET
$mot = isset($_POST['mot']) ? $_POST['mot'] : (isset($_GET['mot']) ? $_GET['mot'] : "");

$mot=strtolower($mot);
$mots=split(" ",$mot);
$nombre_mots=count($mots); 
...
...

Posté : 13 oct. 2005, 19:54
par Invité
YEPI............ca marche :)
merci beaucoup