Version complète: sur le forum Webmaster Hub : [Résolu] Insérer une variable dans une requête sql
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
EcliptuX
Bonjour,

J'ai un petit soucis dont je ne parviens pas à venir à bout.

Dans un formulaire de recherche, je demande à l'utilisateur de taper un ou plusieurs mots clés, et facultativement, de sélectionner un département (le cas échéant, la recherche se fera dans tous les département).

Voici le code PHP qui teste si le département a été renseigné, ou non :
CODE
$departement = $_REQUEST["departement"];

if ($departement == "Tous") {
 $req_departement = "";
}
else {
 $req_departement = "AND s.departement = $departement";
}


En fait, et c'est peut-être maladroit de ma part, je mets dans la variable $req_departement le bout de requête à ajouter à la requête globale que voici :
CODE
$sql_sites = "SELECT s.* FROM annuaire_adresses AS s $req_departement AND s.activation = 1";

Si le département n'est pas renseigné, la requête globale ne filtre pas sur le département en ajoutant une chaîne vide.
Si par contre le département est 75 par ex., la chaîne "AND s.departement = 75" est ajouté à la requête globale.

Le problème, c'est que j'ai des erreurs pas forcément explicites et surtout, ça me met en vrac la fonction recherche...
Je me doute bien que cette méthode n'est pas très élégante mais débutant en php/mysql, je n'ai pas été fichu de trouver mieux !

Merci pour vos bonnes idées smile.gif
MS-DOS_1991
Salut EcliptuX

CITATION
CODE
$departement = $_REQUEST["departement"];

if ($departement == "Tous") {
$req_departement = "";
}
else {
$req_departement = "AND s.departement = $departement";
}


Tu devrais éviter d'utiliser $_REQUEST['...'] qui crée une faille dans ton script... Utilise plutôt $_GET['...'] si ton formulaire est en GET ou $_POST['...'] s'il est en POST ^_^

et n'oublie pas: qu'est-ce qui empêche un utilisateur malveillant de taper <script>function code_malveillant() {......}</script> dans ton formulaire ??
Sans protection, ça devient une porte ouverte aux pirates :o
EcliptuX
Merci pour le conseil, je vais voir ce que je peux faire wink.gif
Sinon pas d'idée pour mon problème ?
WewEB
Essaye de remplacer $req_departement par ceci, je pense que cela devrait régler le problème:

$req_departement = "AND `s.departement` = '{$departement}'";

(le probléme vient à mon avis du fait que tu n'as pas entouré la valeur $departement de ' et ')

Et puis c'est aussi plus propre biggrin.gif

N'oublie pas de protéger un petit peu tes variables récupérées depuis un formulaire !
EcliptuX
Ca à l'air de marche smile.gif
Je dis que ça à l'air, car j'ai d'autres erreurs maintenant IMSTP6.gif
Merci en attendant pour votre aide smile.gif
MS-DOS_1991
CITATION
Je dis que ça à l'air, car j'ai d'autres erreurs maintenant

tongue.gif met ton code ici si tu as besoin d'aide wink.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.