termi-zzz
Messages postés63Date d'inscriptionmardi 18 décembre 2007StatutMembreDernière intervention12 mai 2009
-
20 déc. 2007 à 11:37
Dalida
Messages postés6728Date d'inscriptionmardi 14 mai 2002StatutContributeurDernière intervention11 janvier 2016
-
24 déc. 2007 à 17:24
Bonjour,
je viens de créer un mini-moteur de recherche sur mon site (depuis une table/base de données) et je rencontre un petit problème pour afficher les résultats sur plusieurs pages...
Déjà, avec tous les " if " et " else " présent au sein du moteur, pas facile de trouver les bons endroits où placer les " limites ". Mais le principal problème, c'est qu'avec tous ces " if " et " else " quand je clique sur pages suivantes, il affiche la page avec le GET " ?page=$suivant " sauf que là, la page " recherche.php " se réactualise et du coup il recommence la recherche avec un formulaire vide donc tout foire littéralement dès qu'il y a une page supplémentaire dans la recherche. Un autre problème, c'est pour rajouter les " limites " à l'intérieur de certaine requête aussi bien surchargée. J'ai mis des // avec des explications, je vous laisse voire le code ci-dessous pour mieux comprendre...
Ma page actuelle (qui fonctionne) :
//si pas de mots-clés supérieurs à 3 chiffres on demande une nouvelle recherche
// problème avec les plusieurs pages quand ça réactualise
if (($_POST["text"] == "")||($_POST["text"] == "%")||(strlen($_POST["text"])<=3)) {
echo '<font class="mini"><font class="gris">Recherche - Il y a 0 résultat pour : '.$_POST["text"].'</font></font><br><hr><br>';
echo '<font class="letter">V</font>euillez reformuler votre recherche plus clairement s\'il vous plaît, pas assez précis pour trouver un truc !<br><br>';
}
//sinon on commence la requête
else {
$req = mysql_query("SELECT * from recherche where recherche_motscles LIKE '%$_POST[text]%' ORDER BY recherche_priority ASC ")
or die ("erreur req ".mysql_error());
$res= mysql_num_rows($req);
//si les résultats sont supérieurs à 27 on demande une nouvelle recherche
if ($res>27) {
echo '<font class="mini"><font class="gris">Recherche - Il y a '.$res.' résultats pour : '.$_POST["text"].'</font></font><br><hr><br>';
echo '<font class="letter">V</font>euillez reformuler votre recherche plus clairement s\'il vous plaît, trop de résultats !<br><br>';
}
//sinon
else {
//si les résultats sont supérieurs à 0 on affiche la recherche
if ($res>0) {
echo '<font class="mini"><font class="gris">Recherche - Il y a '.$res.' résultat(s) pour : '.$_POST["text"].'</font></font><br><hr><br>';
$result = mysql_query("SELECT * from recherche where recherche_motscles LIKE '%$_POST[text]%' ORDER BY recherche_priority ASC");
while( $sortie = mysql_fetch_array($result))
{
echo '<font class="titre"><a href="'.$sortie['recherche_url'].'">'.$sortie['recherche_titre'].'</a></font><br / >';
echo $sortie['recherche_description'].'<br /><br />';
echo '<b><a href="'.$sortie['recherche_url'].'"><img src="images/picto-noir.gif"> Voire la page'.'</b></a><br /><hr>';
}
}
//sinon si aucun résultat on affiche la recherche avec d'autres critères plus softs
else {
$array_chaine=explode(" ",$_POST[text]);
//problème ici pour gérer les limites
$query="SELECT * FROM recherche WHERE ";
for($i=0;$i<sizeof($array_chaine);$i++){
if(strlen($array_chaine[$i])>3){
if($i>0){$query.=" OR ";}
$query.="recherche_motscles LIKE '%$array_chaine[$i]%'";
}
}
$query.= " ORDER BY recherche_priority ASC ";
$reqx = mysql_query($query)
or die ("erreur req ".mysql_error());
$res= mysql_num_rows($reqx);
echo '<font class="mini"><font class="gris">Recherche - Il y a '.$res.' résultat(s) pour : '.$_POST["text"].'</font></font><br><hr><br>';
//au début des requêtes
$page = isset($_GET['page']) ? $_GET['page'] : '';
$limit=7;
if($debut==""){$debut=0;}
$debut=$page*$limit;
// Compte du nombre de champs
$nb_total=mysql_num_rows($ret);
// Requête
$limite=mysql_query("$requete limit $debut,$limit");
//avant les requêtes principales
$limit_str = "LIMIT ". $page * $limit .",$limit";
Est-ce que quelqu'un pourrait m'aider ? Et jeter un coup d'oeil à tous ces scripts pour me conseiller quelques changements ? Où placer les " limites " ? Comment gérer les " if " ? Comment éviter les bugs à la réactualisation de la page ? Comment gérer la seconde requête avec les limites ?
Trouvez des réponses à vos questions sur la création de sites web, le référencement et les meilleures pratiques pour gérer un site. Échangez avec d'autres webmasters passionnés pour améliorer vos compétences en ligne et optimiser vos projets de site web.