Erreur de syntaxe Mysql

Ayreon Messages postés 6 Statut Membre -  
Ayreon Messages postés 6 Statut Membre -
Bonjour,

Je suis en train de réaliser un moteur de recherche en php avec résultat s'appuyant sur une base de donnée.
Lors de l'affichage des données je reçois ceci :

Erreur de syntaxe près de '' à la ligne 1

Je ne comprend pas de quoi cela peut venir...

voici mes codes :

HTML
<form id="form1" name="form1" method="post" action="search2.php">
  <label>type
  <select name="type" id="type">
    <option value="Achat">achat</option>
    <option value="location">location</option>
  </select>
  </label>
  <label>submit
  <input type="submit" name="submit" id="submit" value="Envoyer" />
  </label>
</form>


PHP

<?php

$SQL="Select * from biens where ";
if ($_POST['type']=="type")
{
$SQL=$SQL."type LIKE '%" . $_POST['type'] . "%'";
}

else 
{ 
echo" Ce bien n'existe pas"; 

} 

$result = mysql_query($SQL, $maconnexion) or die(mysql_error());

while ($row=mysql_fetch_array($result)){ 

echo $row["type"];  
echo $row["typedepropriete"]; 
echo $row["pays"]; 

}
?>


Je ne m'y connais pas des masses en php et mysql...
Quelqu'un pour m'aider ?

4 réponses

  1. Alain_42 Messages postés 5413 Statut Membre 904
     
    Bonsoir,

    if ($_POST['type']=="type")
    {
    $SQL=$SQL."type LIKE '%" . $_POST['type'] . "%'";
    }


    comment fais tu pour avoir $_POST['type']=="type" ?? a partir d'une liste déroulante qui a deux valeurs "achat" et "location"

    mets plutôt:

    <?php
    
    	$SQL="SELECT * FROM biens WHERE ";
    if (!empty($_POST['type']){//si pas vide
    	$SQL.="type LIKE '%".$_POST['type']."%'";
    
    	$result = mysql_query($SQL, $maconnexion) or die(mysql_error());
    	if(mysql_num_rows($result) >0){
    		while ($row=mysql_fetch_array($result)){ 
    
    			echo $row["type"];  
    			echo $row["typedepropriete"]; 
    			echo $row["pays"]; 
    		}	
    	}else{
    		echo "Acun bien ne correspond a votre demande";
    	}
    }
    
    1
    1. Ayreon Messages postés 6 Statut Membre
       
      Merci beaucoup pour votre réponse !
      Ceci dit, maintenant j'ai une parse error à hauteur de la ligne 19

      18. $SQL="SELECT * FROM biens WHERE ";
      19. if (!empty($_POST['type']){//si pas vide
      20. $SQL.="type LIKE '%".$_POST['type']."%'";

      Tout me parait correct pourtant...
      0
      1. Alain_42 Messages postés 5413 Statut Membre 904 > Ayreon Messages postés 6 Statut Membre
         
        j'ai encore oublié une )

        19. if (!empty($_POST['type'])){//si pas vide 
        0
      2. Ayreon Messages postés 6 Statut Membre > Alain_42 Messages postés 5413 Statut Membre
         
        Super ça marche niquel merci beaucoup !

        J'aurais encore une petite question si je peux abuser de ta bonté :

        Je souhaiterais que mon moteur de recherche soit multicritère, à savoir :

        le type (comme dans le code plus haut)
        le pays
        le prix

        à quoi doit ressembler ma requete sql ?

        a ca ?

        
        $SQL="SELECT * FROM biens WHERE ";
        if (!empty($_POST['type'])){//si pas vide 
        	$SQL.="type LIKE '%".$_POST['type']."%'";
        
        if (!empty($_POST['pays'])){//si pas vide 
        	$SQL.="pays LIKE '%".$_POST['pays']."%'";
        
        if (!empty($_POST['prix'])){//si pas vide 
        	$SQL.="prix LIKE '%".$_POST['prix']."%'";


        Merci encore
        0
  2. Alain_42 Messages postés 5413 Statut Membre 904
     
    Il faut mettre des AND entre chaque condition

    $SQL="SELECT * FROM biens WHERE ";
    if (!empty($_POST['type'])){//si pas vide 
    	$SQL.="type LIKE '%".$_POST['type']."%'";
    
    if (!empty($_POST['pays'])){//si pas vide 
    	$SQL.=" AND pays LIKE '%".$_POST['pays']."%'";
    
    if (!empty($_POST['prix'])){//si pas vide 
    	$SQL.="AND prix LIKE '%".$_POST['prix']."%'";
    


    mais attention il faut que type soit obligatoire

    et LIKE '%".$_POST['prix']."%' va te sortir des trucs inattendus ! car % veut dire n'importe quoi avant ou après

    si 125 demandé ça va te sortir tous les enregistrements 21250 1212569 etc
    1
    1. Ayreon Messages postés 6 Statut Membre
       
      Ok ! Donc ce n'est peut-être pas la meilleure méthode à cause du prix...
      Mais dans ce cas, quelle autre méthode utiliser ?

      En tout cas merci pour ton aide plus que précieuse !
      0
      1. Alain_42 Messages postés 5413 Statut Membre 904 > Ayreon Messages postés 6 Statut Membre
         
        ben pour le prix tu mets

        prix <= '".$_POST['prix']."'
        0
      2. Ayreon Messages postés 6 Statut Membre > Alain_42 Messages postés 5413 Statut Membre
         
        ah ben oui ! Ca fait toute la journée que je suis là dessus, j'ai plus les idées très claires :D

        Merci beaucoup en tout cas !
        Passe une très bonne soirée !
        0
  3. baptiste01800 Messages postés 39 Statut Membre 17
     
    Bon courage et bonne chance!! =P
    0
  4. baptiste01800 Messages postés 39 Statut Membre 17
     
    Bravo ^^
    0