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> \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>) ";}
else {echo "<b>($j)</b> ";}
$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

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
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é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> \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>) ";}
else {echo "<b>($j)</b> ";}
$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