Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

php/MySql et récupération d'un select multiple

2 réponses
Avatar
Pascal G.
Bonjour les pros

Dans une page, j'ai un select avec possibilité de choix multiple :
<select multiple="multiple" name="periode[]">

Je traite ensuite la page avec php et j'enregistre les données saisies dans
une base mysql.

Voilà le schéma, et un exemple d'enregistrement dans la table de liaison
item_periode :

id|item|periode|
1|130|PERIODE3|
2|132|PERIODE3|
3|109|PERIODE3|
4|455|PERIODE5|
5|199|PERIODE5|
6|196|PERIODE5|
7|216|PERIODE5|
8|243|PERIODE3|
9|130|PERIODE2|

Certaines fois, j'ai besoin d'extraire les données de la table correspondant
à un item donné, sous la forme d'un tableau.

Actuellement, je le fais de cette façon :

$periode = array();
$requete = "SELECT periode FROM item_periode WHERE item='".$id_item."'";
$result = mysql_query($requete);
while($data = mysql_fetch_array($result)) {
foreach($data as $key => $value) {$periode[] = $value;}
}

et j'ai mon tableau :
Array ( [0] => PERIODE3 [1] => PERIODE3 [2] => PERIODE2 [3] => PERIODE2 )


Ma question : Est-ce propre, et n'y a t'il pas une fonction de MySql qui
m'éviterait de faire une boucle ?

@+
pascal

2 réponses

Avatar
CrazyCat
Bonjour,

Pascal G. wrote:
$periode = array();
$requete = "SELECT periode FROM item_periode WHERE item='".$id_item."'";
$result = mysql_query($requete);
while($data = mysql_fetch_array($result)) {
foreach($data as $key => $value) {$periode[] = $value;}
}
et j'ai mon tableau :
Array ( [0] => PERIODE3 [1] => PERIODE3 [2] => PERIODE2 [3] => PERIODE2 )

Ma question : Est-ce propre, et n'y a t'il pas une fonction de MySql qui
m'éviterait de faire une boucle ?



Tout d'abord, il n'y a pas de fonction MySQL qui peut te donner ça sans
une boucle, mais tu fais une petite erreur en imbriquant 2 boucles:

while ($data = mysql_fetch_assoc($result) {
$periode[] = $data['periode'];
}


--
Les axiomes sont des créations libres de l'esprit humain.
-+- Albert Einstein, La géométrie et l'expérience -+-
Avatar
Pascal G.
$periode = array();
$requete = "SELECT periode FROM item_periode WHERE item='".$id_item."'";
$result = mysql_query($requete);
while($data = mysql_fetch_array($result)) {
foreach($data as $key => $value) {$periode[] = $value;}
}
et j'ai mon tableau :
Array ( [0] => PERIODE3 [1] => PERIODE3 [2] => PERIODE2 [3] => PERIODE2 )



Ma question : Est-ce propre, et n'y a t'il pas une fonction de MySql qui
m'éviterait de faire une boucle ?



Tout d'abord, il n'y a pas de fonction MySQL qui peut te donner ça sans
une boucle, mais tu fais une petite erreur en imbriquant 2 boucles:

while ($data = mysql_fetch_assoc($result) {
$periode[] = $data['periode'];
}




Effectivement, c'est plus propre.

Voilà le résultat :
Array ( [0] => PERIODE3 [1] => PERIODE2 )

Merci de ta réponse et de la correction.