Moteur de recherche PHP Mysql

yasean -  
JooS Messages postés 2705 Statut Membre -
Bonjour,

J'essaye de faire marcher un moteur de recherche mais je rencontre des problèmes concernant le Code.
ça serai sympa de bien vouloir jeter un coup d'oeil et me dire ou est la faute.

Je vous remercie d'avance .

<?php
mysql_connect("localhost","root","");
	mysql_select_db("SPIP");
// Récupère la variable
if(isset($_POST['ville']) || isset($_POST['theme']) || isset($_POST['type']) || isset($_POST['nomcat']) || isset($_POST['noment']))
	{
		if($_POST['ville']!=NULL || $_POST['theme']!=NULL || $_POST['type']!=NULL || $_POST['nomcat']!=NULL || $_POST['nomcat']!=NULL)
	{
	$ville=_request('$ville');
	$nomcat=_request('nomcat');
	$theme=_request('theme');
	$type=_request('type');
	$noment=_request('noment');
// la requete mysql
$sql = mysql_query(
"SELECT 'nomser' FROM 'entreprise' , 'service' , 'categorie'
WHERE entreprise.noment LIKE %$noment%" . " OR entreprise.ville LIKE %$ville%" . " 
OR service.theme LIKE %$theme%". " OR service.type LIKE %$type%" . " 
OR categorie.nomcat LIKE %$nomcat%
GROUP BY 'nomser'") or die (mysql_error());
}}
// affichage du résultat
while(list($nomser)=mysql_fetch_array($sql)){
echo 'Resultat de la recherche: '.$nomservice.',  <br />';
}
?>


2 réponses

  1. Utilisateur anonyme
     
    Bonjour,

    Dans vos tests vous mettez des || c'est à dire des ou, donc tous les champs ne sont pas forcément renseignés, voir définis donc ici
            $ville=_request('$ville');
    	$nomcat=_request('nomcat');
    	$theme=_request('theme');
    	$type=_request('type');
    	$noment=_request('noment');
    


    vous pouvez avoir un undefined index

    Ensuite ici
    LIKE %$noment%" . " OR entreprise.ville LIKE %$ville%" 
    


    A remplacer par ceci, il faut des cotes pour les chaînes de caractères

    LIKE '%$noment%' OR entreprise.ville LIKE '%$ville%' OR categorie.nomcat LIKE '%$nomcat%'
    


    0
  2. JooS Messages postés 2705 Statut Membre 228
     
    Salut ...
    Essaye ça ... Juste pour voir :)

    <?php
    mysql_connect("localhost","root","");
    mysql_select_db("SPIP");
    $nbre_champs = 5;
    if(empty()) {
        
    }
    if(empty($_POST['ville'])) {
        $ville = "";
        $nbre_champs--;
    }
    else $ville = $_POST['ville'];
    
    if(empty($_POST['theme'])) {
        $theme = "";
        $nbre_champs--;
    }
    else $theme = $_POST['theme'];
    
    if(empty($_POST['type'])) {
        $type = "";
        $nbre_champs--;
    }
    else $type = $_POST['type'];
    
    if(empty($_POST['nomcat'])) {
        $nomcat = "";
        $nbre_champs--;
    }
    else $nomcat = $_POST['nomcat'];
    
    if(empty($_POST['noment'])) {
        $noment = "";
        $nbre_champs--;
    }
    else $noment = $_POST['noment'];
    
    if($nbre_champs != 0) {
        $sql = mysql_query(
        "SELECT * FROM 'entreprise' , 'service' , 'categorie' WHERE
          entreprise.noment LIKE %$noment% " . 
          "OR entreprise.ville LIKE %$ville% " .
          "OR service.theme LIKE %$theme% " .
          "OR service.type LIKE %$type% ".
          "OR categorie.nomcat LIKE %$nomcat%")
        or die (mysql_error());
    
        // affichage du résultat
        while($donnees = mysql_fetch_array($sql)){
           if(isset($donnees['noment']))
               echo 'Entreprise (Nom) : '.$donnees['noment'].'<br>';
           if(isset($donnees['ville']))
               echo 'Entreprise (Ville) : '.$donnees['ville'].'<br>';
           if(isset($donnees['theme']))
               echo 'Service (Theme) : '.$donnees['theme'].'<br>';
           if(isset($donnees['type']))
               echo 'Service (Type) : '.$donnees['type'].'<br>';
           if(isset($donnees['nomcat']))
               echo 'Categorie (Nom) : '.$donnees['nomcat'].'<br>';
        }
    }
    
    0
    1. yassine
       
      Bonjour,

      Merci pour votre réponse mais ça me retourne beaucoup de résultats j'ai l'impression que la requête n'est pas correctement appliquée même d'elle est correcte .

      Sinon je vous propose de jeter un coup d'oeil sur ce code et me dire ou est le problème car ca me retourne aucune erreur mais aucun résultat non plus .
      0
    2. yassine
       
      <?php
      mysql_connect("localhost","root","");
      	mysql_select_db("SPIP");
      // Récupère la variable
      if( isset($_POST['theme']) || isset($_POST['type']))
      	{
      		if($_POST['theme']!=NULL || $_POST['type']!=NULL )
      	{
      $recherche = isset($_POST['theme']) AND !empty($_POST['theme']);
      // la requete mysql
      $sql = mysql_query(
      "SELECT 'nomser' FROM 'service'
      WHERE service.theme LIKE '%$theme%' 
      OR service.type LIKE '%$type%'
      GROUP BY 'nomser'") or die (mysql_error());
      
      
      // affichage du résultat
      
      echo 'Resultat de la recherche: '.$nomser.' <br />';
      
      }
      }
      ?>
      0
    3. yassine
       
      Voila j galère encore avec ce moteur de recherche Simple : ça ne me retourne pas ce que je veux ca me retourne la totalité des champs je ne sais pas pourquoi ?!

      <?php
      mysql_connect("localhost","root","");
      mysql_select_db("SPIP");
      $nbre_champs = 5;
      
      if(!empty($_POST['theme']) || !empty($_POST['type'])) {
         
      
      
         
      
      
      if($nbre_champs != 0) {
          $sql = mysql_query(
          "SELECT 'nomser' FROM 'service' 
      	WHERE service.theme LIKE '%$theme%' 
      	OR service.type LIKE '%$type%' 
      	  GROUP BY 'nomser'")
          or die (mysql_error());
      
          // affichage du résultat
          while($donnees = mysql_fetch_array($sql)){
             if(isset($donnees['nomser']))
                 echo 'Service (Nom) : '.$donnees['nomser'].'<br>';
          }
      }
      }
      ?>
      0
    4. JooS Messages postés 2705 Statut Membre 228
       
      Ton script n'a aucun sens, explique ce que tu veut faire !!!
      La syntaxe que t'utilise est vraiment bizarre ....
      Pourquoi créer la variable $recherche alors que tu ne l'utilise même pas ...

      A propos du script que j'ai créer, bien sure qu'il t'affiche pleins de résultats, c'est t'as requête qui est faite ainsi, d'ailleurs quand on dit un moteur de recherche, ce n'est pas obligatoire qu'il y ait qu'un seul résultat, mais aussi plusieurs ...
      0