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 :

[Tableaux] Pb : bouton pré coché


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Par défaut [Tableaux] Pb : bouton pré coché
    Voila j'ai un probléme, je suis en train de faire un formulaire de modification de session. Je dois choisir le numéro de session, de valider et ensuite d'arriver sur mon formulaire avec mes cases à cocher déja cocher grâce à la base.


    Voici le formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    <br>Mardi matin<br>
    <input type="radio" name="mardimatin" value="txt">txt
    <input type="radio" name="mardimatin" value="tab">tab
    <input type="radio" name="mardimatin" value="internet">internet
    <input type="radio" name="mardimatin" value="photo">photo
    <input type="radio" name="mardimatin" value="creationsite">creation site
    <input type="radio" name="mardimatin" value="informatique">informatique
    <input type="radio" name="mardimatin" value="video">video
    <input type="radio" name="mardimatin" value="projet">projet
    <input type="radio" name="mardimatin" value="decouverte">decouverte
    <input type="radio" name="mardimatin" value="flash">flash
    <input type="radio" name="mardimatin" value="divers">divers<br>
     
     
    <br>Mercredi matin<br>
    <input type="radio" name="mercredimatin" value="txt">txt
    <input type="radio" name="mercredimatin" value="tab">tab
    <input type="radio" name="mercredimatin" value="internet">internet
    <input type="radio" name="mercredimatin" value="photo">photo
    <input type="radio" name="mercredimatin" value="creationsite">creation site
    <input type="radio" name="mercredimatin" value="informatique">informatique
    <input type="radio" name="mercredimatin" value="video">video
    <input type="radio" name="mercredimatin" value="projet">projet
    <input type="radio" name="mercredimatin" value="decouverte">decouverte
    <input type="radio" name="mercredimatin" value="flash">flash
    <input type="radio" name="mercredimatin" value="divers">divers<br>
     
     
     
     
    <br>Mercredi apres-midi<br>
    <input type="radio" name="mercrediaprem" value="txt">txt
    <input type="radio" name="mercrediaprem" value="tab">tab
    <input type="radio" name="mercrediaprem" value="internet">internet
    <input type="radio" name="mercrediaprem" value="photo">photo
    <input type="radio" name="mercrediaprem" value="creationsite">creation site
    <input type="radio" name="mercrediaprem" value="informatique">informatique
    <input type="radio" name="mercrediaprem" value="video">video
    <input type="radio" name="mercrediaprem" value="projet">projet
    <input type="radio" name="mercrediaprem" value="decouverte">decouverte
    <input type="radio" name="mercrediaprem" value="flash">flash
    <input type="radio" name="mercrediaprem" value="divers">divers<br>
     
     
     
     
    <br>Vendredi soir<br>
    <input type="radio" name="vendredisoir" value="txt">txt
    <input type="radio" name="vendredisoir" value="tab">tab
    <input type="radio" name="vendredisoir" value="internet">internet
    <input type="radio" name="vendredisoir" value="photo">photo
    <input type="radio" name="vendredisoir" value="creationsite">creation site
    <input type="radio" name="vendredisoir" value="informatique">informatique
    <input type="radio" name="vendredisoir" value="video">video
    <input type="radio" name="vendredisoir" value="projet">projet
    <input type="radio" name="vendredisoir" value="decouverte">decouverte
    <input type="radio" name="vendredisoir" value="flash">flash
    <input type="radio" name="vendredisoir" value="divers">divers<br>
     
     
     
    <br>Samedi matin<br>
    <input type="radio" name="samedimatin" value="txt">txt
    <input type="radio" name="samedimatin" value="tab">tab
    <input type="radio" name="samedimatin" value="internet">internet
    <input type="radio" name="samedimatin" value="photo">photo
    <input type="radio" name="samedimatin" value="creationsite">creation site
    <input type="radio" name="samedimatin" value="informatique">informatique
    <input type="radio" name="samedimatin" value="video">video
    <input type="radio" name="samedimatin" value="projet">projet
    <input type="radio" name="samedimatin" value="decouverte">decouverte
    <input type="radio" name="samedimatin" value="flash">flash
    <input type="radio" name="samedimatin" value="divers">divers<br>
     
     
    <br>Samedi apres-midi<br>
    <input type="radio" name="samediaprem" value="txt">txt
    <input type="radio" name="samediaprem" value="tab">tab
    <input type="radio" name="samediaprem" value="internet">internet
    <input type="radio" name="samediaprem" value="photo">photo
    <input type="radio" name="samediaprem" value="creationsite">creation site
    <input type="radio" name="samediaprem" value="informatique">informatique
    <input type="radio" name="samediaprem" value="video">video
    <input type="radio" name="samediaprem" value="projet">projet
    <input type="radio" name="samediaprem" value="decouverte">decouverte
    <input type="radio" name="samediaprem" value="flash">flash
    <input type="radio" name="samediaprem" value="divers">divers<br>
     
     
     
    <input type="submit" value="Envoyer" name="envoyer">
    Je sais que je peux faire un truc du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if($row['samediaprem']==informatique){
    echo '<input type="radio" name="samediaprem" value="informatique" checked>informatique';
    }
    else{
    echo '<input type="radio" name="samediaprem" value="informatique">informatique';
    }
    Mais voila comme vous constaté, j'ai pas fini si je fais comme ca j'aurai alors tous les cases a cocher a faire comme ça.

    Est ce qu'il serait possible d'utiliser quelque chose de plus propre au niveau du code et plus rapide.
    Merci de votre aide.

    ps:row est mon tableau qui a la valeur désirée pour chaque jour

  2. #2
    Membre émérite Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Par défaut
    Citation Envoyé par cyberdevelopment
    Mais voila comme vous constaté, j'ai pas fini si je fais comme ca j'aurai alors tous les cases a cocher a faire comme ça.
    Salut,
    comment tu l'écris ton formulaire ? tu as une boucle ou tu le remplis champ par champ ?
    Si tu as une boucle : tu inclus ton test dans la boucle (pour savoir si coché ou non).
    Si tu n'as pas de boucle, ben ... vas falloir que tu fasse le test à chaque fois !
    a+

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 129
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if($row['samediaprem']==informatique){
    echo '<input type="radio" name="samediaprem" value="informatique" checked>informatique';
    }
    else{
    echo '<input type="radio" name="samediaprem" value="informatique">informatique';
    }
    plus court...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo '<input type="radio" name="samediaprem" value="informatique" '.($row['samediaprem']==informatique?) 'checked':''.' >informatique';
    }
    mais pas plus rapide :p ...

  4. #4
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    A la limite ça mais ça donne pas grand chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo '<input type="radio" name="samediaprem" value="informatique"';
    if($row['samediaprem']=="informatique")
     echo ' checked';
    echo '>informatique</input>';
    Ca simplifie juste un peu en enlevant la redondance de code...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Par défaut
    J'ai un tableau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $row['mardiMatin'];
    		$row['mercrediMatin'];
    		$row['mercrediAprem'];
    		$row['vendrediSoir'];
    		$row['samediMatin'];
    		$row['samediAprem'];
    Y a t'il une possibilité de regarder a quoi est = par exemple $row['mardiMatin'] et donc de mettre un checked en dynamique sur le bouton du groupe (name) mardiMatin dont la valeur est = a $row['mardiMatin'].
    Je voudrai faire le test seulement une fois, cad regardé la valeur du tabeau pour le jour donné.

    Merci de votre aide et de vos conseils

  6. #6
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Citation Envoyé par cyberdevelopment
    J'ai un tableau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $row['mardiMatin'];
    		$row['mercrediMatin'];
    		$row['mercrediAprem'];
    		$row['vendrediSoir'];
    		$row['samediMatin'];
    		$row['samediAprem'];
    Y a t'il une possibilité de regarder a quoi est = par exemple $row['mardiMatin'] et donc de mettre un checked en dynamique sur le bouton du groupe (name) mardiMatin dont la valeur est = a $row['mardiMatin'].
    Je voudrai faire le test seulement une fois, cad regardé la valeur du tabeau pour le jour donné.

    Merci de votre aide et de vos conseils
    Ca doit se faire en JS je pense.

  7. #7
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    Je pense que dans ton cas, une petite définition de formulaire et un
    mini moteur de rendu te feront gagner du temps, voici une piste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    function buildRadioField($name, $value, $checked) {
      $value = htmlentities($value, ENT_QUOTES);
      $c = $checked ? " checked='checked'" : '';
      return "<input type='radio' name='$name' value='$value'$c />";
    }
     
    function buildSession($name, $values, $currentvalue) {
      $html = '';
      foreach($values as $value) {
        $html .= buildRadioField($name, $value, $value==$currentvalue);
      }
      return $html;
    }
     
    $mer_matin = explode(',', 'txt,internet,photo,...');
    $v = // valeur actuellement sélectionnée pour cette session
    echo buildSession('mercredimatin', $mer_matin, $v);

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Par défaut
    Merci Marcha je vais essayer de piger comment marche ton mini moteur, je vois pas trop, mais ça à l'air en tout cas moin long et moins lourd. Si tu peux expliquer un ptit peu plus, ce serai bien sympa.
    merci de votre aide.

  9. #9
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Citation Envoyé par cyberdevelopment
    Merci Marcha je vais essayer de piger comment marche ton mini moteur, je vois pas trop, mais ça à l'air en tout cas moin long et moins lourd. Si tu peux expliquer un ptit peu plus, ce serai bien sympa.
    Salut,

    La fonction buildRadioField construit une chaine de caractères
    représentant le code html à produire pour faire un bouton radio.

    Ce qui change d'un bouton radio à un autre dans ton code c'est
    le nom (attribut name), la valeur (attribut value), et son état (checked ou pas)

    C'est pourquoi ces trois informations sont transmises en paramètre à la
    fonction.

    Tu peux tester la fonction pour mieux la comprendre en faisant

    echo buildRadioField('toto', 'titi', true);

    tu obtiendra

    <input type='radio' name='toto' value='titi' checked='checked' />

    La fonction buildSession produit le code html représentant
    une série de boutons radio, qui ont tous le même nom (attribut name)
    qui ont tous une valeur propre et dont un seul (ou aucun) est checké.

    Elle reçoit trois paramètres, le nom communs aux boutons, un tableau
    (liste) des valeurs propres à chacun, et une valeur identifiant le bouton
    qui doit être checké.

    La boucle foreach permet de parcourir le tableau des valeurs, et
    à chaque passage de boucle, une valeur est placée dans la variable $value.

    On appel alors la fonction buildRadioField pour produire un bouton
    radio. On lui transmet $name (qui est le nom de tous les bouton d'une
    même session) puis $value qui change à chaque tour de boucle. Et enfin
    un comparaison entre $value et $currentvalue qui vaut soit true
    si la valeur $currentvalue est bien égal à $value, sinon ça vaut false

    le résultat produit par buildRadioField est appondu à la valeur
    contenue dans $html (concaténé pour être exacte) grace à l'opérateur .=

    enfin, elle retourne $html a l'appelant.

    Lors de l'appel de la fonction buildSession il faut transmettre
    en paramètre le tableau des valeurs possibles.

    Pour créer ce tableau, j'ai utilisé explode

    explode(',', 'txt,internet,photo,...');

    Cela crée un tableau depuis une chaine en séparant les élément autour
    d'un séparateur (ici une virgule)

    Je crois que dans ton cas, toutes les session ont les mêmes valeurs possibles.
    Tu peux donc créer ce tableau qu'une seule fois.

    J'espère que c'est plus clair ainsi :-)

Discussions similaires

  1. [PHP-JS] récupérer un bouton radio coché
    Par kluck3000 dans le forum Langage
    Réponses: 4
    Dernier message: 20/04/2007, 16h19
  2. bouton radio coché ou pas?
    Par franfr57 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/04/2007, 14h59
  3. [CGI] bouton radio coché non désiré
    Par gerald2545 dans le forum Web
    Réponses: 4
    Dernier message: 12/09/2006, 13h19
  4. [Tableaux] récupération de valeurs cochées
    Par juanelcalor dans le forum Langage
    Réponses: 7
    Dernier message: 20/09/2005, 13h46
  5. annuler un bouton radio coché
    Par allowen dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 30/05/2005, 12h41

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