IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

gestion de checkbox


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut gestion de checkbox
    Bonsoir,

    dans un formulaire, j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    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 ?

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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++;}

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for ($jour = 2, $jour < 7, $jour++) {
     echo '<input name="dispojour[]" value="' . $jour .'" type="checkbox">' . $jour . '/02<br>';
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo 'les jours de dispo sont : ' . implode(', ', $_POST['dispojour']);
    $nbjour = count($_POST['dispojour']);

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Super, ça marche bien.

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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']"...

  7. #7
    Membre régulier Avatar de Vicrabb
    Femme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 66
    Points : 102
    Points
    102
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. gestion des checkbox , debutant
    Par Mobistar dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 14/04/2008, 14h54
  2. Création et gestion de checkbox en dynamique
    Par davinout dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 15/01/2007, 15h47
  3. la gestion de checkbox
    Par way66 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/11/2006, 13h06
  4. Gestion des checkbox en API32 ?
    Par pj69100 dans le forum MFC
    Réponses: 2
    Dernier message: 01/05/2006, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo