Les Allergies
Alimentaires
Posez votre question Signaler

Variable php / requête SQL dynamique [Résolu]

vanzielle 8Messages postés 20 octobre 2010Date d'inscription 20 janvier 2012Dernière intervention - Dernière réponse le 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.
Lire la suite 

Variable php / requête SQL dynamique »

4 réponses
Réponse
+1
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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();
dariumis- 20 oct. 2010 à 15:18
Elle doit etre par là: http://php.net/manual/fr/book.strings.php
vanzielle- 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
Ajouter un commentaire
Ce document intitulé « Variable php / requête SQL dynamique » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?