Page 1 sur 1

requete avec valeurs multiples

Posté : 19 juil. 2008, 14:56
par nebil
Bonjour ,
CREATE TABLE

quelqu'un pourrais me dire comment on extrait d'une colonne des valeurs precises et multiple
car avec la requete comme cela j'ai pas de resultat il me repond uniquement si $liste_option contient
un seul chiffre !!!
je fait le test directement dans la console myadmin

Code : Tout sélectionner

$liste_option=(1,2,3,4); $sql=("select * from options_nom where id='$liste_option' ");

Code : Tout sélectionner

echo "sql"; == select * from options_nom where id='1,2,3,4'

Posté : 19 juil. 2008, 15:07
par albat
Modération :
Merci d'utiliser un titre clair et qui correspond bien à ta demande.
Les titres contenant "HELP", "Aidez-moi !" n'apportent rien à la compréhension de ton problème.
Par ailleurs, nous savons déjà par ton message que tu as besoin d'aide.

Tu peux corriger ton titre en éditant ton premier message.

Merci de prendre le temps de lire les règlements.

Posté : 19 juil. 2008, 15:16
par albat
Personnellement, je partirai sur cette base.
Ce n'est pas la seule méthode, mais c'est la mienne. :lol:
$liste_option = array(1, 2, 3, 4);
$sql = 'SELECT champ1, champ2 FROM options_nom WHERE id IN (';
foreach ($liste_option as $value)
         { $sql .= $value.', ';
         }
$sql .= ')';
$sql = str_replace( ', )', ')', $sql); // Pas top élégant, mais j'ai fait ça en 12 secondes. À optimiser donc...
Précisions :
- Interdiction formelle d'utiliser ce script sans l'avoir compris ! :twisted:
- Le SELECT * est à proscrire.

Posté : 19 juil. 2008, 15:51
par zeus
Encore mieux :
$liste_option = array(1, 2, 3, 4);
$sql = 'SELECT champ1, champ2 FROM options_nom WHERE id IN ('. implode(',', $liste_option) .')';
L'avantage du implode(), c'est qu'il ne met pas la fameuse virgule en trop à la fin :p

Posté : 19 juil. 2008, 15:52
par albat
Et dire que je le connaissais, ce implode() !
Mais... dormi que 4 heures par nuit toute cette semaine...
:oops:

Posté : 19 juil. 2008, 16:36
par nebil
Merci mais j'ai une petite erreur
voila de facon un peu plus precise comme je recupere ma variable
$liste_option

Code : Tout sélectionner

if(isset($_POST['option'])) { $options = $_POST['option']; foreach($options as $option_auto) $liste_option .= $option_auto . ','; // je construit le IN $liste_option = substr($liste_option,0, -1); // je retire la derniere virgule }
le echo $liste_option 14,23,29


la requete

Code : Tout sélectionner

$sql = "SELECT id, nom_option FROM options_nom WHERE id IN ".implode($liste_option);
l'erreur
Warning: implode() [function.implode]: Argument to implode must be an array. in

le echo "$sql";
SELECT id, nom_option FROM options_nom WHERE id IN You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1