requete avec valeurs multiples

Eléphant du PHP | 72 Messages

19 juil. 2008, 14:56

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'
Modifié en dernier par nebil le 19 juil. 2008, 15:10, modifié 1 fois.
@++

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

19 juil. 2008, 15:07

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.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

19 juil. 2008, 15:16

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.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 juil. 2008, 15:51

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

19 juil. 2008, 15:52

Et dire que je le connaissais, ce implode() !
Mais... dormi que 4 heures par nuit toute cette semaine...
:oops:

Eléphant du PHP | 72 Messages

19 juil. 2008, 16:36

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
@++