[RESOLU] Récupération des valeurs d' une checkbox

  • Auteur de la discussion kamerleon
  • Date de début

kamerleon

Nouveau membre
Bonjour à tous.
J'ai essayé de trouver une réponse avant de venir vous embêter mais en vain...
J'ai lu quelque part sur ce forum que les valeurs sélectionnées via une checkbox étaient récupérées dans un tableau.
Et effectivement hier encore c'était le cas. Aujourd'hui je ne récupère au mieux que la première valeur de ce tableau et le plus beau c'est que la variable en question (censée être un tableau) passe outre mon test avec is_array(var)...
_______________________________________________________________________________________________
MA CHECKBOX (alimentée grace à une base de données):
[cpp]
<FORM method="POST" action="./edition/editer_table.php">
<?php
$query = "SHOW TABLES";
$result = mysql_query($query) or die("Query failed");
while ($line = mysql_fetch_assoc($result)) {
foreach ($line as $col_value) {
echo "<INPUT type='checkbox' name='tables_presentes'
onclick='boutonAppears(\"bouton_OK\");' // code js pour
//rendre le bouton_OK utilisable
value='$col_value'>$col_value</OPTION><BR>";
}
}
?>
<SELECT id="tables" name="action">
<OPTION value='supprimer'>Supprimer la sélection</OPTION>
<OPTION value='modifier'>Modifier la sélection</OPTION>
</SELECT>
<INPUT id="bouton_OK" disabled="true" type="submit" value="Ok">
</FORM>
[/cpp]
_______________________________________________________________________________________________
_______________________________________________________________________________________________
ET MA PAGE OU JE RECUPERE LES VALEURS SELECTIONNEES (editer_table.php) :
[cpp]
$table=$_POST["tables_presentes"];
$action=$_POST["action"];

switch ($action) {
case "supprimer":{
$query= "DROP TABLE `".$table."`";
if(is_array($table)){
// le programme ne va jamais jusqu'ici!!
for ($i=1; isset($table[$i]); $i++){
echo $table[$i];
$query.=", `".$table[$i]."`";
}
}
echo $query;// affichage de la requête
$result = mysql_query($query) or die("Query failed");// envoie de la requete à mysql
break;
}
case "modifier":{
// il n'y a rien ici c'est normal je le programmerai plus tard, il faut que le cas "supprimer" fonctionne...
break;
}
}
[/cpp]
_______________________________________________________________________________________________

Je le reprécise, hier encore ça marchait parfaitement... j'ai fait des changements depuis (j'ai ajouté du javascript pour faire apparaitre un bouton) mais rien ne qui concerne la récupération des valeurs sélectionnées par checkbox.

Je vous remercie par avance!
 

kamerleon

Nouveau membre
Encore une chose pour préciser : le problème vient du seul fait que ma variable "$table" qui récupère les données d'un $_POST n'est PAS UN TABLEAU alors que je lis partout que c'en est un quand plusieurs valeurs doivent être récupérées...
voilà j'ai ré-écris mon sujet j'espère qu'il convient maintenant.
J'espère que vous saurez éclairer ma lanterne.
 

marsien

Grand Maître
Si ils ont tous le meme name c'est mort :o
+1 :merci:

La valeur de name sert de clé à ton tableau de récupération des checkbox. SI tous les names sont identiques, tu n'auras qu'une clé (1 seule ligne dans ton tableau), et toutes les valeurs récupérées par $_POST seront écrasées sauf la dernière...
 

kamerleon

Nouveau membre
Effectivement cela explique beaucoup de chose. Mais ça ne me dit pas comment ça se fait que ça marchait avant, alors que j'avais laissé les mêmes noms pour tous.
En tout cas merci bien je considère mon problème comme résolu puisque vous m'en avez donné la cause. Faut-il que je contacte qu'elqu'un pour signaler ce problème comme résolu?
 

marsien

Grand Maître
Fais déjà des tests pour contrôler que ça vient bien de là.

Ensuite, tu peux éditer ton premier message (2e icône en partant de la gauche au-dessus de ton message) et tu change le titre en mettant [résolu]. C'est cool ce forum, tu peux tout faire tout seul :D
 

kamerleon

Nouveau membre
Dans mon cas, j'étais contraint de mettre le même "name" à toutes les checkbox.
Pour gérer cela, il suffit de déclarer la checkbox comme suit (sans oublier les crochets):
[cpp]
echo"<INPUT type='checkbox' name='nom_checkbox[]' value='$valeur'>$valeur"
[/cpp]Et de récupérer les valeurs sélectionnées en faisant :
[cpp]
$valeurs_selectionnees = $_POST['nom_checkbox'];// "$valeurs_selectionnees" sera dans TOUS les cas un tableau
[/cpp]Si vous voulez afficher le tout :
[cpp]
if(isset($valeurs_selectionnees)){// il y a au moins une valeur sélectionnée
$afficher= "`".$valeurs_selectionnees[0]."`<BR>";
for ($i=1; isset($valeurs_selectionnees[$i]); $i++){// On teste si plusieurs valeurs sont sélectionnées
$query .= "`".$valeurs_selectionnees[$i]."`<BR>";
}
echo $query;// On affiche le tout
}else {// Aucune valeur n'a été sélectionnée
echo "Veulliez sélectionner une valeur!<BR>";// On en avertit l'utilisateur
}
[/cpp]J'espère ne rien avoir oublié.
Encore merci à vous!
 

zeb

Modérateur
(Merci à toi, kamerleon. Malgré un début difficile, aujourd'hui tu es un exemple : [Résolu] dans le titre, publication de ta solution, état d'esprit excellent. :merci: )
 

marsien

Grand Maître
Merci pour la solution. En plus je sens que je vais pas tarder à m'en servir :D
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 059
Membres
1 586 394
Dernier membre
Manoushk
Partager cette page
Haut