Valeurs checkbox dans une requête mysql du type IN()

Laurent V.
Invité n'ayant pas de compte PHPfrance

16 juil. 2014, 22:55

Bonjour,

Je cherche à prendre les valeurs des checkbox pour les mettre dans une requête mysql du type WHERE ... IN($array)...
J'ai essayé avec
$in_clause = array();
foreach($_GET['check_list'] as $v)...

Si je vais un var_dump($_GET['check_list']), j'ai: array(2) { [0]=> string(3) "one" [1]=> string(3) "two" }

Code : Tout sélectionner

<form action="index2.php" method="get"> <input type="checkbox" name="check_list[]" alt="Checkbox" value="one">One <input type="checkbox" name="check_list[]" alt="Checkbox" value="two">Two <input type="checkbox" name="check_list[]" alt="Checkbox" value="three">Three <input type="submit" value="Submit">
    if(!empty($_GET['check_list'])) 
    {
    foreach($_GET['check_list'] as $check) 
    {  
    $ids = implode(',', $check); 
    echo $ids;
    }
    }

    $sql="SELECT * FROM table WHERE activity IN($ids)";

    I've tried with array(), implode(), explode()...
    Nothing works.
    this is a simplified code: I did not put the code against injection.
    Can anybody be of help. Thanks :)
    

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

17 juil. 2014, 01:09

salut,

une chaîne de caractères est forcément délimité par des '.

or si tu affiche la requête que tu génère tu verra que ce n'est pas le cas.

c'est aussi réalisable avec implode et deux concaténations ;)

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 1338 Messages

17 juil. 2014, 10:33

L'ayant utilisé tous les jours depuis 2 semaines voici comment je fais :
$sql="SELECT * FROM table WHERE activity IN('".implode("', '", $_GET['check_list'])."')";
Modifié en dernier par Elie le 17 juil. 2014, 10:45, modifié 2 fois.
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

17 juil. 2014, 10:41

@Elie : en dehors de l'erreur de syntaxe ce que tu propose ne fonctionne que pour des entiers.
or la il semble que ce ne soit pas le cas (vue ce qu'il y a dans les value des checkbox ;) )


@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 1338 Messages

17 juil. 2014, 10:44

Bon ca va :)
J'ai corrigé !
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

17 juil. 2014, 11:08

Modération :
Si ta question est résolue, pense à l'indiquer pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.
Tu peux réaliser cette opération toi-même en cliquant sur le bouton vert "Mettre le sujet en tant que Résolu" situé en haut de la page à côté du titre du sujet.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.