OVH Cloud OVH Cloud

formulaire et checkboxs

5 réponses
Avatar
jérôme hervé
J'ai écrit, il y a un moment, un script qui permettait de sélectionner
des lignes d'un tableau html par checkbox. Mon code html (générer par
php) était quelque chose comme:
<input type=checkbox name=k[] value=10>

php récupérait sans problème les différentes valeurs par un :
foreach($_POST['k'] as $k) faisquelquechose($k);

Maintenant (php 4.3.4), j'ai un message d'erreur
Warning: Invalid argument supplied for foreach() in /var/www/html/...
mais faisquelquechose($k) est correctement executée!?!

Avez vous une autre méthode plus propre pour faire à cette sélection
multiple?

5 réponses

Avatar
Guillaume Bouchard
jérôme hervé wrote:
J'ai écrit, il y a un moment, un script qui permettait de sélectionner
des lignes d'un tableau html par checkbox. Mon code html (générer par
php) était quelque chose comme:

<input type=checkbox name=k[] value>


<input type="checkbox" name="k[]" value="10" />
De plus, je comence à etre contre les k[] et j'utiliserais plutot
quelque chose comme k1, k2, k3 quitte à regenerer un tableau par la
suite. C'est moche, mais ont est certain que cela fonctione.

php récupérait sans problème les différentes valeurs par un :
foreach($_POST['k'] as $k) faisquelquechose($k);


foreach($_POST['k'] as $k ){
truc($k);
}

Par pitié, les parentheses sont plus lisibles...


Maintenant (php 4.3.4), j'ai un message d'erreur
Warning: Invalid argument supplied for foreach() in /var/www/html/...
mais faisquelquechose($k) est correctement executée!?


Surement que tu n'a pas $_POST de definit ?
A vrai dire, je n'en sais trop rien.

--
Guillaume.

Avatar
jerome herve
Guillaume Bouchard wrote:
jérôme hervé wrote:

J'ai écrit, il y a un moment, un script qui permettait de sélectionner
des lignes d'un tableau html par checkbox. Mon code html (générer par
php) était quelque chose comme:



<input type=checkbox name=k[] value>



<input type="checkbox" name="k[]" value="10" />
De plus, je comence à etre contre les k[] et j'utiliserais plutot
quelque chose comme k1, k2, k3 quitte à regenerer un tableau par la
suite. C'est moche, mais ont est certain que cela fonctione.


oui bien sur, j'ai pensé à cette solution. mais je préfère trouver un
raccourci..

php récupérait sans problème les différentes valeurs par un :
foreach($_POST['k'] as $k) faisquelquechose($k);



foreach($_POST['k'] as $k ){
truc($k);
}

Par pitié, les parentheses sont plus lisibles...


je ne trouve pas que les parentheses améliorent la lisibilité.
signé : un fan de python :)



Maintenant (php 4.3.4), j'ai un message d'erreur Warning: Invalid
argument supplied for foreach() in /var/www/html/...
mais faisquelquechose($k) est correctement executée!?



Surement que tu n'a pas $_POST de definit ?


Mon $_POST est bien défini. Les valeurs du tableau sont reçues. la
preuve le script faisquelquechose() modifie la table sql.

A vrai dire, je n'en sais trop rien.




Avatar
Pozzo
Et ça, ça ne marcherait pas, par hasard ?

<input type="checkbox" name="k[]" value="10" />

Et en php

$arrK = $_POST["k"];
foreach($arrK as $value) {
faisquelquechose($value);
}

et si ça ne fonctionne pas, un petit print_r($arrK) peut aussi être
interessant pour comprendre ...
Avatar
jerome herve
Pozzo wrote:
Et ça, ça ne marcherait pas, par hasard ?

<input type="checkbox" name="k[]" value="10" />

Et en php

$arrK = $_POST["k"];
foreach($arrK as $value) {
faisquelquechose($value);
}

et si ça ne fonctionne pas, un petit print_r($arrK) peut aussi être
interessant pour comprendre ...


déjà fait. j'ai quelque chose comme :
print_r($_POST); ~> array(... 'k' => Array)
print_r($_POST['k']); ~> Array sans parenthèses

hum! je crois que je vais faire autrement ! :/

Avatar
Pozzo
Pozzo wrote:

Et ça, ça ne marcherait pas, par hasard ?

<input type="checkbox" name="k[]" value="10" />

Et en php

$arrK = $_POST["k"];
foreach($arrK as $value) {
faisquelquechose($value);
}

et si ça ne fonctionne pas, un petit print_r($arrK) peut aussi être
interessant pour comprendre ...



déjà fait. j'ai quelque chose comme :
print_r($_POST); ~> array(... 'k' => Array)
print_r($_POST['k']); ~> Array sans parenthèses

hum! je crois que je vais faire autrement ! :/


Chez moi ça fonctionne sans problème... Vous êtes sur que l'erreur ne
vient pas d'un autre endroit du code source ? D'autant plus que
print_r($POST['k']) affiche bien Array... ce qui indique que le script
récupere bien un tableau dans $_POST['k']...

Vous avez essayé de récuperer $_POST['k'] dans une variable
intermédiaire $arrK comme dans mon exemple plutot que de faire la boucle
foreach directement sur $_POST['k'] ? Vous avez essayé de faire un test
avec is_array($arrK) pour vérifier que vous récuperez bien un array ?
Vous avez essayé de vérifier la taille de l'array (avec count($arrK)
pour vérifier que le tableau que vous retourne $_POST['k'] n'est pas
vide... Bcp de piste à suivre avant d'abandonner...