Modérateur PHPfrance |
10684 Messages
20 mars 2008, 09:38
Le problème vient surtout du fait que quand tu ajoutes des crochets dans le nom d'un champ de formulaire, php interprète celui-ci comme un tableau. Donc à moins qu'une seule case n'ait été cochée, ta variable $_POST['dvd_acces'] est un tableau que tu ne peux donc pas utiliser telle quel dans une requête.
Selon le besoin tu peux utiliser des fonctions comme implode() pour transformer le tableau en chaine, ou parcourir les éléments du tableau avec un for, voire encore plus simplement avec un foreach. (En l'occurence, lorsque tu as une relation 1..N, c'est à dire qu'un enregistrement de ta table peut être associé à N autres élément, plutôt qu'un champ texte dans lequel tu ne retrouveras rien de manière relationnelle, il vaut mieux faire une nouvelle table ou chaque enregistrement correspondra à une association).
@Patriboom : en fait seules les cases qui ont été cochées sont envoyées au serveur. La numérotation (qui n'est pas spécifique à IE) est un bête tableau indexé, donc qui commence à 0 et qui contient uniquement les cases cochées. Pour savoir si une case est cochée il suffit donc de tester sa présence avec isSet().
Pour en faire un tableau associatif, il faut mettre un identifiant entre les crochets du formulaire :
Code : Tout sélectionner
<input type="checkbox" name="banane[1]" value="valeur1">Choix 1 (sélectionné)
<input type="checkbox" name="banane[2]" value="valeur2">Choix 2
<input type="checkbox" name="banane[3]" value="valeur3">Choix 3
<input type="checkbox" name="banane[4]" value="valeur4">Choix 4 (sélectionné)
<input type="checkbox" name="banane[5]" value="valeur5">Choix 5
<input type="checkbox" name="banane[6]" value="valeur6">Choix 6 (sélectionné)
<input type="checkbox" name="banane[7]" value="valeur7">Choix 7
Tu récupères alors le tableau :
$_POST["banane"] = array (
1 => valeur1,
4 => valeur4,
6 => valeur6
)
la valeur n'ayant pas réellement d'intérêt, seule la présence compte
Quant à la boucle, il vaut mieux utiliser un foreach qui traitera chacun des éléments du tableau (et uniquement ceux là), plutôt qu'un for de 0 à 7, qui va tenter d'accéder à tous les index sans se soucier de savoir s'ils existent ou non, provoquant à chaque fois des avertissement. (Bon, c'est vrai qu'on peut les planquer sous le tapis pour ne pas les voir, mais c'est pas ce qu'on appelle développer proprement

)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...