affichage de liens

Eléphant du PHP | 101 Messages

13 oct. 2005, 13:40

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

13 oct. 2005, 13:44

Salut, si tu pense que le probleme vient de la requete pourquoi ne pas nous la montrer :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 568 Messages

13 oct. 2005, 13:45

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 !
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Eléphant du PHP | 101 Messages

13 oct. 2005, 14:32

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é :?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

13 oct. 2005, 15:24

tu ne récupère pas la variable des pages:
$page = isset($_POST['page']) ? $_POST['page'] : 0;

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 101 Messages

13 oct. 2005, 17:42

j'ai bien essayé de placer cette requete mais ca ne marche toujours pas...

comment faire?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

13 oct. 2005, 17:51

c'est de ma faute, remplace
$page = isset($_POST['page']) ? $_POST['page'] : 0;
par
$page = isset($_GET['page']) ? $_GET['page'] : 0;

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 101 Messages

13 oct. 2005, 18:04

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

13 oct. 2005, 18:09

meme avec GET ??
si oui montre la requete génrèrée.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 101 Messages

13 oct. 2005, 18:14

je n'arrive pas a tout suivre, je suis débutant. je dois la placer l'inititialisation de page avec GET?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

13 oct. 2005, 18:24

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

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

13 oct. 2005, 19:54

YEPI............ca marche :)
merci beaucoup