begin process at 2012 05 31 20:14:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

Systeme de recherche


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Systeme de recherche

vendredi 27 mai 2005 à 12:12:14 | Systeme de recherche

neji_44

Bonjour, je suis un petit nouveau en PHP (je m'y suis mis il y a seulement 3 semaine) et je suis en train de faire un systeme de recherche pour un site que je suis en train de faire, malheureusement lorsque je tape un mot existant, la recherche me renvoie un message me disant qu'aucun film ne correspond dans la base de données qui, elle, contient ce mot j'en suis sur! Pouvez-vous m'aider Question
Le code est le suivant:

Code:


<? session_start();?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Gregobois</title>
<link href="css/style.css" rel="stylesheet" type="text/css">
<?
echo'<body background="images/planche.jpg">';
?>

<?
   //include("connexion.inc.php");
   include("fonction.php");
   connection();
   headerG();
?>
<div align="center">
<P class="titre"><strong>Section recherche</strong></P>
<table border="0" cellspacing="2" cellpadding="1"><span class="edito">
   <tr>
          <td class="actualites" align="center" >
<?

   if ($_POST['sujet']=="")
      {
         echo '<P class="titre">Aucun mot n\'a été tapé, veuillez en rentrer un.</P>';
      }
   else
       {
          $sujet = htmlentities(addslashes($_POST['sujet']));
         if (strlen($sujet)<3)
         {
            echo '<P class="texte">Veuillez entrez plus de 3 lettres svp.</P>';
         }
         
         else
         {
            $sql = "SELECT acceuil.accueil, materiel.Description_materiel, pieces.Description_piece FROM acceuil, materiel, pieces WHERE acceuil.accueil LIKE %".$sujet."% OR materiel.Description_materiel LIKE %".$sujet."% OR pieces.Description_piece LIKE %".$sujet."%";
            @$result = mysql_query($sql);
            
            if(!$sql)
            {
               echo '<P class="texte">Erreur lors de l\'execution de la requete</P>';
            }
            
            else
            {
                  @$test = mysql_num_rows($sql);
                  if ($test >0)
                  {
                     while ($donnees = mysql_fetch_array($sql))
                     {
                  
                        echo '<tr>';
                        echo '<td>';
                        echo '</tr>';
                        echo '<tr>';
                        echo '<td>'.result.'</td>';
                        echo '</tr>';
                     }
                  }
                  
                  else
                     {
                     echo'<p align="center"><span class="texte">Aucun résultat n\' a été trouvé.</span></p>';
                     }
            }
             }
         }


?>
      </td>
   </tr>
</table>

</div>
</body>
</html>
<?
   footer();
?>
vendredi 27 mai 2005 à 13:04:48 | Re : Systeme de recherche

vince1415

Bonjour,
deja ta requéte n'est pas super il faudrait ke tu fasse les jointures entre les tables que tu inclu sinon ca renvoie pas forcement ce qu'on souhaite et c'est un peu génant.
Tu peut également enlever les guillemet et les points pour la concatenation, les variables sont interprété dans le texte.
sinon le principe a l'air pas mal.
bonne continuation

vendredi 27 mai 2005 à 14:53:54 | Re : Systeme de recherche

Anthomicro

Salut,

remplace <? par <?php et if ($_POST['sujet']=="")  par if(!isset($_POST['sujet']) OR empty($_POST['sujet']))

Ensuite je vois ça :

                        echo '<tr>';
                        echo '<td>';
                        echo '</tr>';
                        echo '<tr>';
                        echo '<td>'.result.'</td>';
                        echo '</tr>';

tu peux le remplacer par ça :

echo '<tr></tr>
         <tr><td>',$result,'</td>
         </tr>';


Ensuite ton mot à rechercher contient des accents ou des mots html ? si oui sous quel format est-il stocké dans la base de données (ton mot est encodé en HTML ou est sous forme brute avec les accents ?)

Ensuite vince je vois pas en quoi mettre une jointure dans la requête va te donner plus de résultats...


    vendredi 27 mai 2005 à 16:24:36 | Re : Systeme de recherche

    neji_44

    C'est sympa les gars mes vos deux reponses ne resolvent pas mon probleme, malgré tout ca, il me dit qu'il ne trouve pas le mot....

    Dans la base, les champs sont remplie avec du texte qui sont aux format text.


    samedi 28 mai 2005 à 11:14:53 | Re : Systeme de recherche

    malalam

    Administrateur CodeS-SourceS
    Hello,

    une jointure, pourquoi faire en effet...? Il recherche juste un mot dans 3 tables differentes, on se fiche des jointures.

    Tu fais un htmlentities et un addslashes sur ta variable post : bref, tu y ajoutes des \ et tu transformes les entites en leur code. Est-ce que tes textes sont enregistres ainsi dans ta base ?

    mysql_real_escape-string() est a privilegier dans des cas d'insertions dans une base mysql, au passage.

    Et, cela m'etonne qu'Antho n'en ai pas parle, mais les index FULLTEXT de mysql sont plus adaptes a des recherches.

    samedi 28 mai 2005 à 13:37:01 | Re : Systeme de recherche

    vince1415

    Bein la jointure permet de ne pas récupérer des résultats qui n'ont aucun rapport, il fait une requéte sur 3 tables et affiche un attribut de chaque table. Si il n'y a pas de jointure le SGBD fait tous les assemblages possibles ce qui risque de ramener des informations entre les 3 tables qui n'on aucun rapport.
    enfin bon si vous dites que ca sert a rien tant mieux moi je pense autre choses. Je dois dire que je conné mal mysql j'ai l'habitude de travailler sous oracle bien plus puissant !!

    samedi 28 mai 2005 à 13:56:25 | Re : Systeme de recherche

    Anthomicro

    " Et, cela m'etonne qu'Antho n'en ai pas parle, mais les index FULLTEXT de mysql sont plus adaptes a des recherches."

    A force de le dire, on oublie... (lol)

    Bah les indexs FULLTEXT sont meilleurs si ta table contient beaucoup d'enregistrements (ils permettent aussi une meilleure précision que les LIKE pourris). Le problème des indexs FULLTEXT est qu'ils prennent énormément de place dans la base.




      Cette discussion est classée dans : sql, recherche, echo, sujet, materiel


      Répondre à ce message

      Sujets en rapport avec ce message

      recherche d'editeur sql [ par elvis78 ] bonjour a tout les developpeurs.je debute en programmation et j'aimerais savoir ou je pourrais trouver un editeur sql gratuit.Un grand merci a celui q undefined variable notice ?! [ par jimmy69 ] Salut a tous,Voila je debute en php et je me suis amuse a faire un p'tit site tout simple avec une base mysql...sous easyphp 1.4Je suis passe sous ea formulaire [ par poloute ] Bonjour"undelivered message"c'est ce qui accompagne chaque fois lemail que je reçoit dans ma boite via mon site.Voici le script:$MailTo = "monadresse@ UPDATE de plusieurs enregistrements dans une boucle [ par kd ] Bonjour à tous, j'essaie depuis un bout de temps de modifier un ensemble d'enregistrement dans une base à l'intérieur d'une boucle mais j'ai une erreu PB bouton inpuit file et separation du resultat [php/SQL] [ par albatorhc59 ] Bonjour a vous. jai fait un script avec un input files pour recuperer un nom de fichier sur le reseaux. mon bouton fonctionne bien, mais je voudrai sa recherche d'une table SQL conportant CODE DEPARTEMENT , VILLE ... [ par valva ] recherche d'une table SQL conportant CODE DEPARTEMENT , VILLE REGION ....en fonction de plusieur pays si possibleet mieux encore si vous avé la dist Probleme plusieurs requetes imbriquées [ par romagnoli64 ] Bonjour, bon j'ai un petit souci...Dans une page PHP, j'ai deux requetes imbriquées, une va chercher des valeurs et la deuxieme va chercher, à partir pb sql est les listes box [ par herveguedj ] bonjour,j'ai un site auto avec un formulaire de rech par marque un combo box qui liste toutes les marques je voudrais que quand la personne clique sur Erreur Mysql [ par FearBlue ] Slt a tous!!!!jai une erreur mysql :je v vous montrer mon code c en rapport avec LIKEif(isset($HTTP_POST_VARS['recherche'])){$db = mysql_connect('loca UPDATE ou replace [ par kd ] Bonjour à tous, je suis en train de modifier l'affichage des auteurs de ma base mysql avec un script que j'ai testé et qui fonctionne très bien. Seule


      Nos sponsors


      Sondage...

      CalendriCode

      Mai 2012
      LMMJVSD
       123456
      78910111213
      14151617181920
      21222324252627
      28293031   

      Consulter la suite du CalendriCode

      Photothèque

      A découvrir



       
      Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
      CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
      CodeS-SourceS.com© est une marque déposée tous droits réservés

      Google Coop CodeS-SourceS Google Coop CodeS-SourceS
      Temps d'éxécution de la page : 0,842 sec (4)

      Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales