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 :

Checkbox toujours checked apres submit php_self


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 19
    Points : 8
    Points
    8
    Par défaut Checkbox toujours checked apres submit php_self
    Bonjour,

    J'ai un formulaire (action=PHP_self) ou je demande a l'utilisateur de remplir les champs et plus particulierement de choisir son sexe (checkbox) et son age (select).
    Une fois tous les champs rempli, il clique sur le bouton submit, si il a fait une erreur de saisie il est averti et les champs gardent leur valeur grace a une variable (que l'utilisateur changera si elle est fausse), ça ok, sa marche.
    Par contre la valeur du "checkbox checked" a bien l'aire d'etre prise en compte mais il n'est plus checked. Pareil pour le select. Alors que j'aimerai que le choix checked ou selected de l'utilisateur "reste" ou "revienne" checked ou selected.

    En gros je veux garder les champs selectionnés apres le submit

    J'ai essayé avec if, array, for, foreach, $_session, des tats de solutions sur le web, sans succès. (je debute en php)

    Avec mon cerveau j'ai imaginé un code simple, je ne pense pas etre loin de la solution, je pense que l'erreur viens du fait qu'une variable est crée dans true ou false et que sa, php ne doit pas aimé (je connais pas assez encore) ou alors une autre condition que je devrai utilise :

    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
     
    <FORM action=<?php $PHP_SELF;?>>
    INPUT type=RADIO id=sexe <?php echo ("$checked1"); ?>name="sexe" value="homme" class=radio>homme<br>
    INPUT type=RADIO id=sexe <?php echo ("$checked2"); ?>name="sexe" value="femme" class=radio>femme<br>
    <SELECT id=age name=age class=age>
    <option value=></option>
    <option value=18<?php echo ("$selected18"); ?>>18 </option>
    <option value=19<?php echo ("$selected19"); ?>>19 </option>  
    </SELECT> ans
    <br>
     
     
    <?php
    if(isset($_POST['sexe']))      
    {$sexe=$_POST['sexe'];}
    else      
    {$sexe="";}
     
    if ($sexe="homme")
     {$checked1 = "checked";}
    else
    {$selected1 = "";}
     
    if ($sexe="femme")
     {$checked2 = "checked";}
    else
    {$selected1 = "";}
     
     
    if(isset($_POST['age']))     
    {$sexe=$_POST['age];}
    else      
    {$age="";}
    
    if ($age=18)
     {$selected1 = "selected";}
    else
    {$selected1 = "";}
    
    if ($age=19)
     {$selected2 = "selected";}
    else
    {$selected1 = "";}
    
    ?>

    Je sais aussi que ce code n'est pas terrible, car il faudra que je fasse chaque age de 18 a 70 ans mais si vous avez une solution plus propres, un lien, un tutorial avec la bonne solution je suis prenneur.

  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
    Bonjour,

    tu devrais commencer par ecrire ton HTML correctement, en particulier en mettant des guillemets aux valeurs, apres cela on pourra voir réellement ou on en est de ton problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input type="radio" id="sexe" <?php echo $checked1; ?>
    Sinon est-ce normal que tu donnes la valeur de $checked1 apres l'avoir utilisé ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué Avatar de zugolin
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 267
    Points : 164
    Points
    164
    Par défaut
    pour tes valeurs de 18 a 70 ans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $age=$_POST['age']
    $i=18;
    while ($i < 71) {
    echo '<option value="'.$i.'"';
    	if ($i==$age) 
    	{ $selected="selected";} 
    	else { $selected="";} 
    	echo '>'.$i.'</option>';
    $i++;
    	}
    tu répètes ton option value et si l'age correspond, il sera sélectionné
    (code a contrôler... j'ai fait rapidement...)

  4. #4
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    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
     
    <select name="age">
    <?php
    $age = $_POST['age'];
     
    for($i = 18; $i < 71; $i++){
     
      $sel = "";
      if($i == $age){$sel = "selected='selected'";}
     
    echo "<option value = '" . $i . "' " . $sel . ">" . $i . "</option>";
     
    }
    ?>
    </select>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
    $sexe = $_POST['sexe'];
     
    $sx1 = ""; $sx2 = "";
    switch($sexe){
    case "homme" : $sx1 = "checked='checked'"; break;
    case "femme" : $sx2 = "checked='checked'"; break;
    }
    ?>
     
    <input type="radio" name="sexe" value="homme" <?php echo $sx1; ?> />
    <input type="radio" name="sexe" value="femme" <?php echo $sx2; ?> />

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Merci a vous deux, j'avoue ne pas avoir penser au sens de lecture.


    Solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php 
    if ($sexe=="homme") $checked = "checked"; else $checked = "";
    if ($sexe=="femme") $checked = "checked"; else $checked = "";
    ?>
     
     
    <INPUT type=RADIO id=sexe name="sexe" <?php echo $checked;?> value="homme" class=radio>un homme
    <br>			
    <INPUT type=RADIO id=sexe name="sexe" <?php echo $checked;?> value="femme" class=radio>une femme
    Il meste plus qu'a jeter un coup d'oeil sur le code de Zugolin pour les SELECT age.

    Merci !

  6. #6
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    la bonne syntaxe c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $checked = "checked='checked'";

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Merci N1bus

    Si j'utilise la syntaxe "checked='checked'" ce la ne fonctionne pas si j'utilise la meme variable ou alors j'ai mal fait quelque chose
    Bref...
    En utilisant donc la bonne syntaxe "checked='checked'" conseiller par N1bu, il suffit de faire comme dans son code, utiliser 2 variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    if ($sexe=="homme") $checked1 = "checked='checked'"; else $checked1 = "";
    if ($sexe=="femme") $checked2 = "checked='checked'"; else $checked2 = "";
    ?>
     
    <INPUT type="radio" id="sexe" name="sexe" <?php echo $checked1;?> value="homme" class="radio">Homme
    <br>
    <INPUT type="radio" id="sexe" name="sexe" <?php echo $checked2;?> value="femme" class="radio">Femme
    Ca marche nikel.
    Merci encore !

  8. #8
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    De rien .

    Tous les attributs des balises devraient être écrits en minuscule du type : attribut="valeur"

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="checkbox" name="nom" value="valeur" id="id" class="classe" />

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    ok je m'en souviendrai a l'avenir

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/01/2015, 22h38
  2. Checkbox reste checked après fermeture popup
    Par jules_diedhiou dans le forum jQuery
    Réponses: 9
    Dernier message: 19/09/2014, 14h43
  3. Garder la selection des checkbox apres submit
    Par etoileDesNeiges dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/06/2007, 13h39
  4. Tester si fenêtre existe après submit
    Par ronald dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/01/2005, 16h36
  5. Réponses: 5
    Dernier message: 25/11/2004, 09h11

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