PHP, variable dans une clause WHERE MySql

bivouak Messages postés 189 Date d'inscription   Statut Membre Dernière intervention   -  
 bety -
Salut tout le monde !

Voila je débute un peu en PHP.
J'ai fait un petit site pour répertorier des voitures avec un petit moteur de recherche.

J'ai une page HTML avec des <input typre = "text" ... > qui est un formulaire. Sur cette page on choisit la marque du véhicule et cette page appelle une page PHP pour la lecture dans une base Mysql. Le tout est hébergé cher Free.

Ma requête renvoie cette erreur :
erreur req Unknown column 'Renault' in 'where clause'

voila le code :
<?php
$marque3 = $_POST['marque2'];

$mysql_host = 'sql.free.fr'; 
$mysql_user = '*****'; 
$mysql_password = '*****'; 
$mysql_base = 'auto';

$db = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die ("erreur de connexion");
mysql_select_db($mysql_base,$db) or die ("erreur de connexion base"); 

$req = mysql_query("SELECT * FROM auto WHERE marque=$marque3") or die ("erreur req ".mysql_error());
while( $sortie = mysql_fetch_array($req))
{	print ($sortie[marque].' ');
	print ($sortie[model].'<br>');
 }


Mysql_close();
?>


Voila, lorsque dans la requête je met 'Renault' à la place $marque3 ca marche sans problème.
Si je met '$marque3' ça ne me revoie aucun résultat.

Est ce que j'ai une erreur dans mon code ?

Le champ dans ma base est de type varchar(30).

Merci à tous !

--
++ Biv
Toujours à votre Service

8 réponses

  1. FataL_KilleR
     
    Bonjour,
    Oui, tu dois seulent modifier le fichier styl.css en y ajoutant le code pour que la première lettre soit une majuscule :).

    ++
    2
  2. StreM Messages postés 515 Statut Membre 124
     
    Ah pardon j'avais pas compris ca... lundi matin...
    Et ca ?
    $req = mysql_query("SELECT * FROM auto WHERE marque='".$marque3."'") or die ("erreur req ".mysql_error());

    Sinon :
    $str = "SELECT * FROM auto WHERE marque='$marque3'";
    $req = mysql_query($str) or die ("erreur req ".mysql_error());
    1
    1. bety
       
      MERCIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII olalaaaaaaaaaaaa j'ai passe 12h sans trouver la solution main maintenant ca maaaaaaaarche
      0
  3. StreM Messages postés 515 Statut Membre 124
     
    Essaie
    $req = mysql_query("SELECT * FROM auto WHERE marque='$marque3'") or die ("erreur req ".mysql_error());
    Pour voir...
    0
  4. bivouak Messages postés 189 Date d'inscription   Statut Membre Dernière intervention   33
     
    Salut !

    Comme je le dis dans mon message ca ne me renvoie aucun résultat car il cherche $marque3 dans ma base au lieu de la valeur qu'elle contient avec ce code.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. bivouak Messages postés 189 Date d'inscription   Statut Membre Dernière intervention   33
     
    Ok je viens de tester

    Le permier ne me renvoie rien alors que ma base est pleine

    Le deuxième ne me renvoie rien non plus.
    0
    1. StreM Messages postés 515 Statut Membre 124
       
      Fais un echo $str;
      copie la requete, execute la dans phpmyadmin et regarde la différence entre cette requête et celle que lui exécuterais pour afficher ce que tu veux.
      C'est étrange tout de même...
      0
  7. bivouak Messages postés 189 Date d'inscription   Statut Membre Dernière intervention   33
     
    Ok c'est bon pas la peine d'aller plus loin !

    Je viens de trouver l'erreur.

    Dans ma base j'ai mis les nom des marques en Varchar(30) avec la 1ère lettre en majuscule, comme sur ma page HTML de mon formulaire.

    Je viens de remplacer la majuscule par un minuscule et ca marche impec.

    Seulement la majuscule a disparu lors de l'affichage du résultat.
    Est ce qu'il est possible de remplacer l'Interclassement ou le type pour conserver cette majuscule ?

    Merci de ton aide, c'est sympa de ta part
    0
  8. bheadman Messages postés 105 Statut Membre 1
     
    Bon le topic est une peu vieux mais voici ce que moi j'ai fait pour intégrer des variables dans une requette sql (Base MySql5 et PHP5)

    <?php
    
    $Compagnie = $_GET['Compagnie'];
    $Table = "listes";
    $Collone = "Jours, Total_Messages, Total_Messages_Size, Warning_Threshold, Prohibit_Send_Threshold, Prohibit_Receive_Threshold, Above_Below_Warning_Threshold, FirstName, LastName";
    $Orderby = "LastName";
    if (empty($Compagnie))
    {
       $sql = "SELECT $Collone FROM $Table Order By $Orderby";
       $Compagnie = "TOUTES";
    }
    else
    {
       $Where = "WHERE Company = '$Compagnie'";
       $sql = "SELECT $Collone FROM $Table $Where Order By $Orderby";
    }
    $db = new PDO('mysql:host=localhost;dbname=liste_quotat', 'root', '');
    $select_messages = $db->prepare($sql);
    $select_messages->setFetchMode(PDO::FETCH_ASSOC);
    $select_messages->execute();
    
    echo "Utilisateurs de la compagnie : ".$Compagnie.'<BR>'.'<BR>'.'<BR>';
    
    foreach($select_messages->fetchAll() as $i => $message)
    {
    
        echo $i." - ".$message['LastName']." ".$message['FirstName'];
    }
    
    ?>
    
    


    Pour info cette base est en local donc aucun risque, pour ça que Userdb = root et Passdb = 'rien' :D
    Pour ceux qui connaisse, cette structure est très très fortement inspiré des cours PHP,pages "7 - Manipulation de données", du site développez.com (j'ai commencé le PHP la semaine dernière :P)
    0
  9. paul
     
    regarde le tableau _post [''marque2''] la variable dans laquelle tu rentres la valeur n'est pas la meme ke l'entree du formulaire. change l'entree en _post [''marque3'']
    0