Je viens de terminer le moteur de recherche de mon site, mais il y a encore un petit problème.
Le code est en faite identique sur chaque lieu que je recherche, seul la requete est modifiée ainsi que l'affichage du résultat.
Mon formulaire de recherche se situe dans la partie de code concernant la recherche au niveau du forum et s'applique si je n'ai aucune recherche de lancée.
Donc si je fais une recherche sur les forum, j'ai mes résultats qui s'affichent.
Par contre si je fais une recherche sur les membres, ou sur les nouvelles, j'ai en plus des résultats, le formulaire qui s'affiche, ce que je ne veux pas moi
Comment donc faire que si aucune recherche n'est lancée j'ai le formulaire, et si j'en lance plus, et quel que soit l'endroit de ma recherche, ce formulaire ne s'affiche pas.
Voici le code :
<?php
// Recherche au niveau du forum
if(isset($_POST['recherche']) && strlen(trim($_POST['recherche']))<3 && $_POST['lieu']=='forum') { echo'Le mot clé que vous recherchez doit avoir un minimum de 3 caractères.'; }
if(isset($_POST['recherche']) && strlen(trim($_POST['recherche']))>2 && $_POST['lieu']=='forum') { $recherche = $_POST['recherche']; $query = mysql_query("SELECT topic_id,tg_id,tg_name,topic_name,msg_message,usr_id,usr_name,msg_timestamp,topic_comment
FROM cb_messages
LEFT JOIN cb_users ON cb_users.usr_id=cb_messages.msg_userid
LEFT JOIN cb_topics ON cb_topics.topic_id=cb_messages.msg_topicid
LEFT JOIN cb_topicgroups ON cb_topicgroups.tg_id=cb_topics.topic_fromtopicgroup
WHERE topic_name LIKE '%$recherche%' OR msg_message LIKE '%$recherche%' OR topic_comment LIKE '%$recherche%' ORDER BY topic_id DESC") or die(mysql_error()); // la requête, que maintenant vous devez comprendre $nb_resultats = mysql_num_rows($query);
if($nb_resultats != 0) { // Affichage du nombre de résultats
echo'</tbody></table><p><a href="rechercher.php">Faire une nouvelle recherche</a></p>'; } // Aucuns résultats trouvés
else {
echo'<p>Pas de résultats</p>
<p>Nous n\'avons trouvé aucuns résultats comme mot clé '. $recherche . '.</p>
<p><a href="rechercher.php">Réessayez</a> avec autre chose.</p>';
}
}
// Formulaire de recherche
if(isset($_POST['recherche']) && strlen(trim($_POST['recherche']))<3 && $_POST['lieu']=='membres')
{
echo '<p>Le mot clé que vous recherchez doit avoir un minimum de 3 caractères.</p>';
}
if(isset($_POST['recherche']) && strlen(trim($_POST['recherche']))>2 && $_POST['lieu']=='membres')
{
$recherche = $_POST['recherche'];
$query = mysql_query("SELECT usr_id, usr_name, usr_registertime, usr_lastconnect, usr_nbmess FROM cb_users WHERE usr_name LIKE '%$recherche%' ORDER BY usr_id DESC") or die (mysql_error()); // la requête, que maintenant vous devez comprendre
$nb_resultats = mysql_num_rows($query);
if($nb_resultats != 0)
{
// Affichage du nombre de résultats
echo'</tbody></table><p><a href="rechercher.php">Faire une nouvelle recherche</a></p>'; }
// Aucuns résultats trouvés
else {
echo'<p>Pas de résultats</p>
<p>Nous n\'avons trouvé aucuns résultats comme mot clé '. $recherche . '.</p>
<p><a href="rechercher.php">Réessayez</a> avec autre chose.</p>';
}
}
// Recherche au niveau des téléchargements
if(isset($_POST['recherche']) && strlen(trim($_POST['recherche']))<3 && $_POST['lieu']=='telechargements')
{
echo '<p>Le mot clé que vous recherchez doit avoir un minimum de 3 caractères.</p>';
}
if(isset($_POST['recherche']) && strlen(trim($_POST['recherche']))>2 && $_POST['lieu']=='telechargements')
{
$recherche = $_POST['recherche'];
$query = mysql_query("SELECT id, nom, rubrique, sous_rubrique, description, DATE_FORMAT(date, '%d/%m/%Y') AS date FROM gestionnaire WHERE nom LIKE '%$recherche%' OR description LIKE '%$recherche%' ORDER BY id DESC") or die (mysql_error()); // la requête, que maintenant vous devez comprendre
$nb_resultats = mysql_num_rows($query);
if($nb_resultats != 0)
{
// Affichage du nombre de résultats
echo'</tbody></table><p><a href="rechercher.php">Faire une nouvelle recherche</a></p>'; } // Aucuns résultats trouvés
else {
echo'<p>Pas de résultats</p>
<p>Nous n\'avons trouvé aucuns résultats comme mot clé '. $recherche . '.</p>
<p><a href="rechercher.php">Réessayez</a> avec autre chose.</p>';
}
}
// Recherche au niveau des nouvelles
if(isset($_POST['recherche']) && strlen(trim($_POST['recherche']))<3 && $_POST['lieu']=='news')
{
echo '<p>Le mot clé que vous recherchez doit avoir un minimum de 3 caractères.</p>';
}
if(isset($_POST['recherche']) && strlen(trim($_POST['recherche']))>2 && $_POST['lieu']=='news')
{
$recherche = $_POST['recherche'];
$query = mysql_query("SELECT topic_id,tg_id,tg_name,topic_name,msg_message,usr_id,usr_name,msg_timestamp,topic_comment
FROM cb_messages
LEFT JOIN cb_users ON cb_users.usr_id=cb_messages.msg_userid
LEFT JOIN cb_topics ON cb_topics.topic_id=cb_messages.msg_topicid
LEFT JOIN cb_topicgroups ON cb_topicgroups.tg_id=cb_topics.topic_fromtopicgroup
WHERE tg_id=24
AND (topic_name LIKE '%$recherche%' OR msg_message LIKE '%$recherche%' OR topic_comment LIKE '%$recherche%') ORDER BY topic_id DESC") or die (mysql_error()); // la requête, que maintenant vous devez comprendre
$nb_resultats = mysql_num_rows($query);
if($nb_resultats != 0)
{
// Affichage du nombre de résultats
echo'</tbody></table><p><a href="rechercher.php">Faire une nouvelle recherche</a></p>'; } // Aucuns résultats trouvés
else {
echo'<p>Pas de résultats</p>
<p>Nous n\'avons trouvé aucuns résultats comme mot clé '. $recherche . '.</p>
<p><a href="rechercher.php">Réessayez</a> avec autre chose.</p>';
}
}
?>
Deuxième question : Est ce efficace tel que le code est, et est ce sécurisé ?
J'arrive pas à virer le formulaire quelqu'un à une idée ?
Optimisation de code et résolution de prob
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.