Un petit coup de main sur une requête sql ...svp!

  • Auteur de la discussion Auteur de la discussion tryan
  • Date de début Date de début
WRInaute passionné
Bonjour
J'ai une table nommé LOCALISATION comprenant 2 champs soit id et region . Je veux tout récupérer à partir du champ region mais ma requête ne veut pas fonctionner.
Je récupère le nom de la région par la méthode $_GET.
Code:
<?php
$la_region_transmit=$_GET["region"];
if (isset($_GET["region"]))
{

include("data_bd.php");

mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier data_bd.php.');

$query2 = mysql_query("SELECT * FROM LOCALISATION WHERE region = '.$la_region_transmit.'");

$lid_en_cour="";
$ma_region="";

while($localisation = mysql_fetch_array($query2))
 {
   $lid_en_cour = $localisation['id'];
   $lid_en_cour.="$id";

   $ma_region = $localisation['region'];
   $ma_region.="$region";

echo ''.$lid_en_cour.'-'.$ma_region.'<br>';
 }
}
?>
Un petit coup de main svp..
merci
 
WRInaute occasionnel
fait ca peut etre qu'il y a un problème de " ' "



Code:
$query2 = mysql_query("SELECT * FROM LOCALISATION WHERE region = \"$la_region_transmit\" ");
 
WRInaute accro
Salut, tu t'es juste gouré dans la concaténation:

Code:
$query2 = mysql_query("SELECT * FROM LOCALISATION WHERE region = '".$la_region_transmit."'");
 
WRInaute passionné
Yep, grand merci à vous :D .

Par contre je ne pige pas l'histoire du simple quote doublé du double juste après ... :?:
Jusqu'à présent, la variable telle quelle était amplement suffisant. Une petite explication svp.
Merci
 
WRInaute accro
Salut, alors déjà les côtes sont obligatoires dans les requêtes sql quand tu manipules une chaine de caractères. Et facultatives quand ce sont des nombres.

Ensuite, faut faire la différence entre ces deux syntaxes, une sans concaténation et une avec.

Code:
$query2 = mysql_query("SELECT * FROM LOCALISATION WHERE region = '$la_region_transmit'");
$query2 = mysql_query("SELECT * FROM LOCALISATION WHERE region = '".$la_region_transmit."'");

Les guillemets (ou côtes) extérieures sont obligatoires puisque mysql_query veut en paramètre un chaine de caractères. C'est bien d'avoir choisi les guillemets car si tu avais mis des côtes, tu aurais du échapper comme ceci pour éviter un conflit: \'$la_region_transmit\'

Dans la première solution, la variable est invisible à première vue, le parser php va avoir un travail supplémentaire à accomplir, retrouver les variables dans ta chaine de caractères.

Dans la deuxième, grâce à la concaténation, il sait tout de suite ou se trouvent les variables, il n'a pas besoin de les chercher.

Voila, après si tu comprends pas, c'est surement au niveau de la concaténation non ? En gros tu as un morceau de chaine de caractère "blablabla".$mavariable."fin de requête". Sauf qu'ici "fin de requête" = "'" car la côte fait parti de la chaine de caractère, donc doit être délimitée par des guillemets puisqu'on a choisi les guillemets pour délimiter une chaine de caractères dans notre exemple.

Faut penser que les variables vont être transformées en chaine de caractères, puis seulement les fonctions vont être exécutées :)

Voila, capito ? :D
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut