Variable php / requête SQL dynamique

[Résolu/Fermé]
Signaler
Messages postés
16
Date d'inscription
mercredi 20 octobre 2010
Statut
Membre
Dernière intervention
19 janvier 2013
-
Messages postés
16
Date d'inscription
mercredi 20 octobre 2010
Statut
Membre
Dernière intervention
19 janvier 2013
-
Bonjour,

Voila j'ai un peu de temps libre et je me suis dit que j'allais réinventer la roue. (oui je sais ça sert pas a grand chose hormis se prendre la tête et faire travailler les ptits neurones) Seulement il y a un hic...

Je cherche a créée une requête SQL dynamique. Pour cela j'utilise des variables php qui changent de valeur en fonction du choix de l'utilisateur, ce qui aura pour effet de modifier la requête SQL.

Les exemples étant souvent plus parlant voici ce que j'aimerai obtenir:

SELECT nom FROM bluray WHERE nom LIKE 'A%' ORDER BY nom ASC
SELECT nom FROM bluray WHERE nom LIKE 'B%' ORDER BY nom ASC
SELECT nom FROM bluray WHERE nom LIKE 'C%' ORDER BY nom ASC
....

Voici ce que j'obtient:
SELECT nom FROM bluray WHERE nom LIKE \'A%\' ORDER BY nom ASC

Je n'arrive pas (et c'est pas faute d'avoir chercher) à supprimer ces fichus '\' qui empêchent ma requête de fonctionner normalement. A tout les coups ça doit être un truc de base que j'ai zappée ou que je ne connais pas encore.

Voici mon bout de code qui s'occupe de cela:


if ($_POST['like'])  
 {  
  $fsql = $_POST['like'];  
 }  


[...]  


$val = "WHERE nom LIKE '" . $foo[$i] . "%'";  
        ?>  
 <input type="hidden" name="like" value="<?php echo $val ?>"/>  
 <?php  


[...]  


$sql = "SELECT nom FROM bluray " . $fsql . " ORDER BY nom ASC";  



Voila pour le bout de code concernée.

Merci par avance pour votre aide.

2 réponses

Messages postés
571
Date d'inscription
mardi 16 mars 2010
Statut
Membre
Dernière intervention
18 avril 2018
61
Salut, je pense que c'est parce que ta variable est envoyé via un formulaire, je pensais que ça faisait ça en get mais en post aussi apparement. Y a une fonction qui enleve les caracteres d'échappement, mais j'ai plus le nom en tête mais ça reviens a faire ça dans ton isset:
if ($_POST['like'])    
 {    
  $fsql = str_replace('\\','',$_POST['like']);    
 }    


Mais au lieu str_replace il faudrait utiliser la fonction adéquate.

Edit: Mais c'est pas un isset lol.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
16
Date d'inscription
mercredi 20 octobre 2010
Statut
Membre
Dernière intervention
19 janvier 2013
1
Merci pour ta réponse je vais essayer de retrouver cette fameuse fonction.

Edit:
Ta solution marche très bien.
Pour la fonction je l'ai retrouvée, il s'agit de stripslashes();
Messages postés
571
Date d'inscription
mardi 16 mars 2010
Statut
Membre
Dernière intervention
18 avril 2018
61
Messages postés
16
Date d'inscription
mercredi 20 octobre 2010
Statut
Membre
Dernière intervention
19 janvier 2013
1
En effet je viens juste de relevée ce n'est pas un isset xD ça fait 8h que je code je devrais ptet aller manger un morceau xD