Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/12/2010, 22h34   #1
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Par défaut gestion de checkbox

Bonsoir,

dans un formulaire, j'ai ça :
Code :
1
2
3
4
5
  <input name="dispojour[]" value="2" type="checkbox">2/02<br>
  <input name="dispojour[]" value="3" type="checkbox">3/02<br>
  <input name="dispojour[]" value="4" type="checkbox">4/02<br>
  <input name="dispojour[]" value="5" type="checkbox">5/02<br>
  <input name="dispojour[]" value="6" type="checkbox">6/02<br>
et dans le traitement, ça :
Code :
1
2
3
4
5
$dispojour0=$_POST["dispojour"][0];
$dispojour1=$_POST["dispojour"][1];
$dispojour2=$_POST["dispojour"][2];
$dispojour3=$_POST["dispojour"][3];
$dispojour4=$_POST["dispojour"][4];
Et le problème, c'est que si je coche "3", $dispojour0 vaut "3" et pas $dispojour1 et si je coche une deuxième valeur (par exemple "5"), $dispojour1 prend la valeur "5", alors que ce que j'attends est que $dispojour_i prenne la valeur "i+2" si le case est cochée.
Qu'est-ce qui ne va pas ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 23h14   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
C'est une mauvaise idée d'utiliser des variables avec des numéros.

Les cases cochées existent déjà dans le tableau $_POST["dispojour"] dans quel but cherches-tu a les passer dans une autre variable ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 23h43   #3
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
C'était dans le but d'améliorer la lisibilité du code ; j'ai donc supprimé ça, mais c'est toujours le même problème.

Formulaire :
Code :
1
2
3
4
5
  <input name="dispojour[]" value="2" type="checkbox">2/02<br>
  <input name="dispojour[]" value="3" type="checkbox">3/02<br>
  <input name="dispojour[]" value="4" type="checkbox">4/02<br>
  <input name="dispojour[]" value="5" type="checkbox">5/02<br>
  <input name="dispojour[]" value="6" type="checkbox">6/02<br>
Action :
Code :
1
2
3
4
5
6
7
$nbjour=0;
echo "dispo0=".$_POST["dispojour"][0]." dispo1=".$_POST["dispojour"][1]."<br>";
if ($_POST["dispojour"][0]=="2") {if (!$nbjour) echo "Les jours de dispo sont : "; echo "2"; $nbjour++;}
if ($_POST["dispojour"][1]=="3") {if (!$nbjour) echo "Les jours de dispo sont : "; if ($nbjour) echo (","); echo "3"; $nbjour++;}
if ($_POST["dispojour"][2]=="4") { if (!$nbjour) echo "Les jours de dispo sont : "; if ($nbjour) echo (",");  echo "4"; $nbjour++;}
if ($_POST["dispojour"][3]=="5") { if (!$nbjour) echo "Les jours de dispo sont : "; if ($nbjour) echo (","); echo "5"; $nbjour++;}
if ($_POST["dispojour"][4]=="6") { if (!$nbjour) echo "Les jours de dispo sont : "; if ($nbjour) echo (","); echo "6"; $nbjour++;}
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 23h56   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Un truc comme ça :

Code :
1
2
3
4
 
for ($jour = 2, $jour < 7, $jour++) {
 echo '<input name="dispojour[]" value="' . $jour .'" type="checkbox">' . $jour . '/02<br>';
}
Code :
1
2
echo 'les jours de dispo sont : ' . implode(', ', $_POST['dispojour']);
$nbjour = count($_POST['dispojour']);
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 00h07   #5
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Super, ça marche bien.
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 12h33   #6
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
J'ai essayé de m'inspirer du truc un peu plus loin, mais ça ne colle pas, et je ne vois pas le problème :
Code :
1
2
3
4
5
6
7
Vous pouvez faire de l'interpr&eacute;tariat dans la langue :<br>
<?php 
$langues=array("anglais","allemand","italien","russe","japonais","tch&egrave;que","su&eacute;dois","espagnol","finlandais");
for ($interp = 0; $interp < 10; $interp++) {
 echo '<input name="langue[]" value="' . $interp .'" type="checkbox"> '. $langues.'[\''.$interp .'\']<br>';
}
?>
Au lieu de "anglais", par exemple, il affiche "Array['0']"...
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 13h27   #7
Membre habitué
 
Avatar de Vicrabb
 
Femme Vinciane
Développeur Web
Inscription : novembre 2010
Messages : 66
Détails du profil
Informations personnelles :
Nom : Femme Vinciane
Âge : 29
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2010
Messages : 66
Points : 100
Points : 100
Code :
1
2
3
4
5
6
 
$langues=array("anglais","allemand","italien","russe","japonais","tch&egrave;que","su&eacute;dois","espagnol","finlandais");
 
for ($interp = 0; $interp < sizeof($langues); $interp++) {
 echo '<input name="langue[]" value="' . $interp .'" type="checkbox"> '. $langues[$interp].'<br>';
}
Ca marchera mieux ainsi:
- sizeof($langues) te permet de faire une boucle sans une erreur à la fin (puisque il n'y a que 9 éléments dans ton tableau et qu'il commence à l'indice 0 => sizeof permet de ne pas se tromper)

-$langes[$interp]: pas besoin de '..' puisqu'il s'agit d'un chiffre (l'indice du tableau) et non ce qui se trouve à l'intérieur.
__________________

Symfony par une débutante - Elgg - PHP

Je suis peut-être diplômée en archéologie mais je ne fouille pas le net pour décrypter le langage SMS, pour lire du code sans la balise du même nom..
"The cake is lie" - Doug Rattman, Portal
Vicrabb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 14h41   #8
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Merci pour le truc du sizeof ; j'avais bien vu qu'il n'y avait que 9 éléments, mais m'étais trompé dans la taille de la boucle.
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h08.


 
 
 
 
Partenaires

Hébergement Web