snarky | la compagnie.
Je me retrouve face a un petit dilemme et je n'arrive pas a trouver d'où peut bien venir le problème. J'ai codé un petit moteur de recherche(il marchai correctement) puis j'ai cherché a l'améliorer de maniere a ce qu'il puisse prendre :
Une expression -> "expression"
Un mot commencant par DebutDuMot -> DebutDuMot*
Un mot finissant par FinDuMot ->*FinDuMot
Plusieurs mot -> Mot1 Mot2
Après récuperation de mon champ ($search) issu de mon formulaire, j'effectue une série de test pour définir le type de recherche souhaité (cf ci-dessus). Jusque là tout marche. Mais une fois que je lui demande de m'afficher les résultats piouf! il se met a m'affichais n'importe quoi ou du moins un résultat completement faux.
si quelqu'un pouvait eclairer ma lanterne, cela me permettrais de corriger mon erreur
le site est donc http://snarky.free.fr
Il suffit d'effectué une recherche sur l'un des mots présents dans les news (titre, article, auteur)
et voici mon code.
Code :
- <?php
- if($search)
- {
- include('./sql.php');
- $search = trim($search); // on retire les espaces
- $expression = explode(addslashes('"'), $search);
- echo '<p><b>Premier test :</b><br /> $expression[0] :', $expression[0] ,'<br />$expression[1] :', $expression[1] ,'<br />$search :', $search , '</p>';
- if($expression[0] === '') //test expression
- {
- $go = "SELECT title_article, text_article, author_article, date_article FROM Articles WHERE title_article OR text_article OR author_article LIKE '$expression[1]'";
- echo '<p><b>Premiere test reussi: on recherche une expression.</b><br />$go = ', $go ,'<br />', $test ,'</p>';
- }
- else
- {
- $expression = explode(chr(42), $expression[0]);
- echo '<p><b>Deuxieme test :</b><br /> $expression[0] :', $expression[0] ,'<br /> $expression[1] :', $expression[1] ,'<br />$search :', $search , '</p>';
- if($expression[0] === '') //test *mot
- {
- $go = "SELECT title_article, text_article, author_article, date_article FROM Articles WHERE title_article OR text_article OR author_article LIKE '%$expression[1]'";
- echo '<p>Deuxieme test reussi : on recherche *mot.<br />$go = ', $go ,'/<p>';
- }
- else
- {
- $expression = explode(chr(42), $expression[0]);
- echo '<p><b>Troisieme test :</b><br /> $expression[0] :', $expression[0] ,'<br /> $expression[1] :', $expression[1] ,'<br />$search :', $search , '<p/>';
- if($expression[1] === '') //test mot*
- {
- $go = "SELECT title_article, text_article, author_article, date_article FROM Articles WHERE title_article OR text_article OR author_article LIKE '$expression[0]%'";
- echo '<p>Troisieme test reussi : on recherche mot*.<br />$go = ', $go ,'</p>';
- }
- else
- {
- $expression = explode(' ' , $expression[0]); // on sépare les mots dans un tableau pour faire une recherche sur chaque mot
- $count_words = count($expression); // on compte le nombre de mots que comporte le tableau(expression)
- for($i = 0; $i < $count_words; $i++) // on effectue une recherche pour chaque mot en partant du [0] jusqu'a [$count_words]
- {
- $go = "SELECT title_article, text_article, author_article, date_article FROM Articles WHERE title_article OR text_article OR author_article LIKE '$expression[$i]'";
- }
- echo '<p><b>On effectue une recherche sur plusieurs mots.</b><br />$go = ', $go ,'</p>';
- }
- }
- }
- echo '<p><b>Type de recherche validé : </b><br />$go = ', $go ,'<br />$search :', $search , '</p>';
- $requete = mysql_query($go) or die(echec);
- $num_requete = mysql_num_rows($requete); // on cherche a connaitre le nombre de resultats
- if($requete)
- {
- if($num_requete === 0)
- {
- echo'Aucuns resultats.';
- }
- else
- {
- echo '
- <p><b>Résultat de votre recherche a propos de : <span class="italic">', $search ,'</spans><br />
- Il y a ', $num_requete ,' résultat(s).</b> </p>';
- while($result = mysql_fetch_array($requete))
- {
- echo 'Actu | ', $result['date_article'] ,' | <span class="bold">', $result['title_article'] ,'</span> <br />'; // on affiche les resultats
- }
- }
- }
- else
- {
- echo'bla';
- }
- }
- else
- {
- echo 'pas de mot clés';
- }
- ?>
|
Si vous trouvez qu'il n'y a pas assez de commentaires, je peux éditer et commenter chaqu'unes des lignes Message édité par snarky le 18-06-2005 à 03:00:43
|