Variable php / requête SQL dynamique

Résolu/Fermé
vanzielle Messages postés 16 Date d'inscription mercredi 20 octobre 2010 Statut Membre Dernière intervention 19 janvier 2013 - Modifié par vanzielle le 20/10/2010 à 14:50
vanzielle Messages postés 16 Date d'inscription mercredi 20 octobre 2010 Statut Membre Dernière intervention 19 janvier 2013 - 20 oct. 2010 à 15:25
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

dariumis Messages postés 571 Date d'inscription mardi 16 mars 2010 Statut Membre Dernière intervention 18 avril 2018 62
Modifié par dariumis le 20/10/2010 à 15:17
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
vanzielle Messages postés 16 Date d'inscription mercredi 20 octobre 2010 Statut Membre Dernière intervention 19 janvier 2013 1
Modifié par vanzielle le 20/10/2010 à 15:22
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();
0
dariumis Messages postés 571 Date d'inscription mardi 16 mars 2010 Statut Membre Dernière intervention 18 avril 2018 62
20 oct. 2010 à 15:18
0
vanzielle Messages postés 16 Date d'inscription mercredi 20 octobre 2010 Statut Membre Dernière intervention 19 janvier 2013 1
20 oct. 2010 à 15:25
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
0