Aller au contenu

[Résolu] Insérer une variable dans une requête sql


Sujets conseillés

Posté (modifié)

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 :

$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 :

$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 :)

Modifié par EcliptuX
Posté (modifié)

Salut EcliptuX

$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

Modifié par MS-DOS_1991
Posté (modifié)

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 :D

N'oublie pas de protéger un petit peu tes variables récupérées depuis un formulaire !

Modifié par WewEB

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...