Partage
  • Partager sur Facebook
  • Partager sur Twitter

Optimisation de code et résolution de prob

    2 décembre 2006 à 17:13:31

    Salut à tous ! :p

    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 :o

    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 '<p>Résultats de votre recherche</p>
                                                      <p>Vous recherchez : <span class="recherche_requete">'
    . $recherche . '</span></p>
                                                      <p><span class="recherche_requete">'
    . $nb_resultats . '</span>' ;
                           
                            if($nb_resultats > 1)
                                    {
                                            echo ' résultats trouvés ';
                                    }
                           
                            else
                                    {
                                            echo ' résultat trouvé ';
                                    }

                                            echo 'en ';
    // Temps d'éxécution de la recherche

                    $temps = microtime();
                    $temps = explode(' ', $temps);
                    $fin = $temps[1] + $temps[0];

                                            echo round(($fin - $debut),3).' s.</p>';
    // Affichage des résultats
                                           
                                            echo '<table class="liste_recherche">
                                                    <tbody>
                                                            <tr>
                                                                    <th>Titre</th>
                                                                    <th>Par</th>
                                                                    <th>Dernier message</th>
                                                                    <th>Catégorie</th>
                                                            </tr>'
    ;
                            while($donnees = mysql_fetch_array($query))
                                    {
                                            echo '  <tr>
                                                            <td>                       
                                                            <a href="forum/forum-t'
    .$donnees['topic_id'].','.rewrite_words($donnees['topic_name']).'.html">' . $donnees['topic_name'] . '</a><br>
                                                            '
    . $donnees['topic_comment'] . '</td>
                                                            <td class="liste_recherche_divers"><a href="forum/forum-m'
    . $donnees['usr_id'] . ',' . $donnees['usr_name'] . '.html">' . $donnees['usr_name'] . '</a></td>
                                                            <td>'
    . dateFormat($donnees['msg_timestamp'],1,true) . '</td>
                                                            <td class="liste_recherche_divers"><a href="forum/forum-tg'
    . $donnees['tg_id'] . ',' . rewrite_words($donnees['tg_name']) . '.html">' . $donnees['tg_name'] . '</a></td>
                                                    </tr>'

                                            ;
                                    }

                                            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
                           
                            else
                                    {
                                            echo '
    Vous recherchez : <form action="rechercher.php" method="Post">
                                                            <input type="text" name="recherche" size="30"><br/>
                                                            Dans :   <select name="lieu">
                        <option value="dossiers">Dossiers</option>
                                                        <option value="forum">Forum</option>
                                                        <option value="membres">Membres</option>
                        <option value="news">Nouvelles</option>
                                                                    <option value="telechargements">Téléchargements</option>
                                                               </select>
                                                            <input type="submit" value="Chercher">
                                                      </form>';
                                    }

                                    // Recherche au niveau des membres           
                           
                            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 '
    <p>Résultats de votre recherche</p>
                                                      <p>Vous recherchez : <span class="recherche_requete">' . $recherche . '</span></p>
                                                      <p><span class="recherche_requete">' . $nb_resultats . '</span>' ;
                           
                            if($nb_resultats > 1)
                                    {
                                            echo '
    résultats trouvés ';
                                    }
                           
                            else
                                    {
                                            echo '
    résultat trouvé ';
                                    }

                                            echo '
    en ';
    // Temps d'
    éxécution de la recherche

                    $temps = microtime();
                    $temps = explode(' ', $temps);
                    $fin = $temps[1] + $temps[0];

                                            echo round(($fin - $debut),3).' s.</p>';
    // Affichage des résultats                 
                   
                                            echo '<table class="liste_recherche">
                                                    <tbody>
                                                            <tr>
                                                                    <th>Pseudo</th>
                                                                    <th>Inscrit le</th>
                                                                    <th>Dernière visite le</th>
                                                                    <th>Nombre de messages</th>
                                                            </tr>'
    ;

                            while($donnees = mysql_fetch_array($query))
                                    {
                                                                            echo '  <tr>
                                                            <td><a href="forum/forum-m'
    . $donnees['usr_id'] . ',' . $donnees['usr_name'] . '.html">' . $donnees['usr_name'] . '</a></td>
                                                            <td>'
    . dateFormat($donnees['usr_registertime'],1,true) . '</td>
                                                            <td>'
    . dateFormat($donnees['usr_lastconnect'],1,true) . '</td>
                                                            <td>'
    . $donnees['usr_nbmess'] . '</td>
                                                    </tr>'

                                            ;
                                    }

                                            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 '
    <p>Résultats de votre recherche</p>
                                                      <p>Vous recherchez : <span class="recherche_requete">' . $recherche . '</span></p>
                                                      <p><span class="recherche_requete">' . $nb_resultats . '</span>' ;
                           
                            if($nb_resultats > 1)
                                    {
                                            echo '
    résultats trouvés ';
                                    }
                           
                            else
                                    {
                                            echo '
    résultat trouvé ';
                                    }

                                            echo '
    en ';
    // Temps d'
    éxécution de la recherche

                    $temps = microtime();
                    $temps = explode(' ', $temps);
                    $fin = $temps[1] + $temps[0];

                                            echo round(($fin - $debut),3).' s.</p>';
    // Affichage des résultats
                                           
                                            echo '<table class="liste_recherche">
                                                    <tbody>
                                                            <tr>
                                                                    <th>Nom</th>
                                                                    <th>Catégorie</th>
                                                                    <th>Sous catégorie</th>
                                                                    <th>Ajouté le </th>
                                                            </tr>'
    ;

                            while($donnees = mysql_fetch_array($query))
                                    {
                                            echo '  <tr>
                                                                    <td><a href="fiche.php?id='
    . $donnees['id'] . '">' . $donnees['nom'] . '</a></td>
                                                                    <td class="liste_recherche_divers"><a href="'
    . $donnees['rubrique'] . '.php">'. $donnees['rubrique'] . '</a></td>
                                                                    <td>'
    . $donnees['sous_rubrique'] . '</td>
                                                                    <td>'
    . $donnees['date'] . '</td>
                                                    </tr>'
    ;
                                    }

                                            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 '
    <p>Résultats de votre recherche</p>
                                                      <p>Vous recherchez : <span class="recherche_requete">' . $recherche . '</span></p>
                                                      <p><span class="recherche_requete">' . $nb_resultats . '</span>' ;
                           
                            if($nb_resultats > 1)
                                    {
                                            echo '
    résultats trouvés ';
                                    }
                           
                            else
                                    {
                                            echo '
    résultat trouvé ';
                                    }

                                            echo '
    en ';
    // Temps d'
    éxécution de la recherche

                    $temps = microtime();
                    $temps = explode(' ', $temps);
                    $fin = $temps[1] + $temps[0];

                                            echo round(($fin - $debut),3).' s.</p>';
    // Affichage des résultats
                                           
                                                                                    echo '<table class="liste_recherche">
                                                    <tbody>
                                                            <tr>
                                                                    <th>Titre</th>
                                                                    <th>Par</th>
                                                                    <th>Dernier message</th>
                                                                    <th>Catégorie</th>
                                                            </tr>'
    ;
                            while($donnees = mysql_fetch_array($query))
                                    {
                                            echo '  <tr>
                                                            <td>                       
                                                            <a href="forum/forum-t'
    .$donnees['topic_id'].','.rewrite_words($donnees['topic_name']).'.html">' . $donnees['topic_name'] . '</a><br>
                                                            '
    . $donnees['topic_comment'] . '</td>
                                                            <td class="liste_recherche_divers"><a href="forum/forum-m'
    . $donnees['usr_id'] . ',' . $donnees['usr_name'] . '.html">' . $donnees['usr_name'] . '</a></td>
                                                            <td>'
    . dateFormat($donnees['msg_timestamp'],1,true) . '</td>
                                                            <td class="liste_recherche_divers"><a href="forum/forum-tg'
    . $donnees['tg_id'] . ',' . rewrite_words($donnees['tg_name']) . '.html">' . $donnees['tg_name'] . '</a></td>
                                                    </tr>'

                                            ;
                                    }

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

    Merci d'avance ^^
    • Partager sur Facebook
    • Partager sur Twitter
      3 décembre 2006 à 10:21:01

      J'arrive pas à virer le formulaire :o quelqu'un à une idée ?
      • Partager sur Facebook
      • Partager sur Twitter

      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.
      • Editeur
      • Markdown