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 !
A voir également:

8 réponses

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
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
bety
 
MERCIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII olalaaaaaaaaaaaa j'ai passe 12h sans trouver la solution main maintenant ca maaaaaaaarche
0
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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
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
bheadman Messages postés 105 Statut Membre
 
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
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