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 :

Boutons radio non cochés


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut Boutons radio non cochés
    Bonjour.

    Contexte : Quand une personne a complété un dossier et qu'elle veut le modifier, j'affiche dans un formulaire tout ce qu'elle a saisi auparavant.
    J'ai un petit problème avec le checked des boutons radio.
    Quand je récupère la valeur d'un champ, je veux mettre sur le bouton radio correspondant la valeur checked.
    Voici la struture de ma page.
    j'ai commencé par écrire la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //vérifie s'il s'agit d'une entreprise ou d'un établissement scolaire
    function est_selectionne_etabl($option) {
        if (!isset($_POST['etabl_type'])) {
                return FALSE;
        }
        for ($i = 0, $c = count($_POST['etabl_type']); $i < $c; $i++) {
            if ($_POST['etabl_type'][$i] == $option) {
                return TRUE;
            }
        }
        return FALSE;
    }
    ensuite je teste quel bouton est "checké"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $etabl_type = "";
    if (isset($_POST['etabl_type'])){
        for ($i = 0, $c = count($_POST['etabl_type']); $i < $c; $i++) {
            $etabl_type = "" . $_POST['etabl_type'][$i] . "";
        }
    }
    Récupération des champs de la table
    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
    if (isset($_REQUEST['id_etablist'])){
    	$id_etablist = $_REQUEST['id_etablist'];
    	$sql = mysql_query("SELECT * FROM etablissement WHERE id_etablist = $id_etablist");
    	if (mysql_num_rows($sql) > 0){
    		$res = mysql_fetch_array($sql);
    		$id_etablist_table = $res['id_etablist'];
    		$type_etablist_table = stripslashes(htmlentities(trim($res['type_etablist'])));
    		$nom_etablist_table = stripslashes(htmlentities(trim($res['nom_etablist'])));
    		$adresse_etablist_table = stripslashes(htmlentities(trim($res['adresse_etablist'])));
    		$cp_etablist_table = $res['cp_etablist'];
    		$ville_etablist_table = stripslashes(htmlentities(trim($res['ville_etablist'])));
    		$tel_etablist_table = $res['tel_etablist'];
    		$fax_etablist_table = $res['fax_etablist'];
    		$email_etablist_table = $res['email_etablist'];
    		$effectif_etablist_table = $res['effectif_etablist'];
    	}
    }
    et enfin le formulaire (je ne mets ici que la partie qui me pose problème)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="radio" name="etabl_type[]" value="Entreprise" <?php if(est_selectionne_etabl("Entreprise")) { echo 'checked'; } else if($type_etablist_table == "Entreprise"){ echo 'checked';} ?>/>Une entreprise 
    <input type="radio" name="etabl_type[]" value="Scolaire" <?php if(est_selectionne_etabl("Scolaire")) { echo 'checked'; } else if($type_etablist_table == "Scolaire"){ echo 'checked';} ?>style="margin-left:60px"/>Un établissement scolaire
    Merci donc de me dire pourquoi un bouton radio n'est pas "checked" alors que j'ai bien une valeur dans le champ.

  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
    Fais un var_dump($type_etablist_table) et un print_r($_POST['etabl_type']) avant ton test de condition et tu sauras ce qu'ils valent puisque ce n'est ni "Entreprise" ni "Scolaire".

    Par contre tu as un if et un elseif qui font la meme action donc autant les rassembler.

    Pour parcourir le tableau $_POST['etabl_type'] tu peux utiliser foreach() plutot que de faire une une boucle for.

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    merci.

    j'ai modifié le code de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function est_selectionne_type($option) {
    var_dump($type_etablist_table)
    print_r($_POST['etabl_type'])
        if (!isset($_POST['etabl_type'])) {
                return FALSE;
        }
        for ($i = 0, $c = count($_POST['etabl_type']); $i < $c; $i++) {
            if ($_POST['etabl_type'][$i] == $option) {
                return TRUE;
            }
        }
        return FALSE;
     
    }
    j'ai un message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: parse error in c:\weblocal\sites\clubeuropeendelasante\prix_sante\appels\dossier_candidature.php on line 10

  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
    Tu n'as pas mis le ; a la fin de la commande var_dump

    Sinon c'est avant "if($type_etablist_table" qu'il faut le mettre.
    $type_etablist_table n'existe pas a l'interieur de ta fonction.

  5. #5
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    merci.
    J'avoue que j'ai un peu de mal
    donc j'ai ajouté var_dump ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="radio" name="etabl_type[]" value="Entreprise" <?php var_dump($type_etablist_table); print_r($_POST['etabl_type']); if(est_selectionne_type("Entreprise")) { echo 'checked'; } elseif($type_etablist_table == "Entreprise"){ echo 'checked';} ?>/>Une entreprise
    <input type="radio" name="etabl_type[]" value="Scolaire" <?php var_dump($type_etablist_table); print_r($_POST['etabl_type']); if(est_selectionne_type("Scolaire")) { echo 'checked'; } elseif($type_etablist_table == "Scolaire"){ echo 'checked';} ?>style="margin-left:60px"/>Un établissement scolaire
    et maintenant j'ai cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Notice: Undefined index: etabl_type in c:\weblocal\sites\clubeuropeendelasante\prix_sante\appels\formulaire_candidature.php on line 31
    />Une entreprise  Notice: Undefined index: etabl_type in c:\weblocal\sites\clubeuropeendelasante\prix_sante\appels\formulaire_candidature.php on line 32
    checkedstyle="margin-left:60px"/>Un établissement scolaire
    les 31 et 32 correspondent au 2 lignes de code.
    Info complémentaire j'ai scindé la page en 2
    La page candidature où j'ai tout le code php avec un include pour afficher la page qui contient le formulaire.
    J'espère que l'erreur ne vient pas de là !!

  6. #6
    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
    Fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <? 
    echo '<p>POST etabl_type contient : </p>' . var_dump($_POST['etabl_type']);
    echo '<p>type_etablist_table contient : </p> . var_dump($type_etablist_table);
    ?>
     
    <input type="radio" name="etabl_type[]" value="Entreprise" />Une entreprise 
    <input type="radio" name="etabl_type[]" value="Scolaire" />Un établissement scolaire
    Comme ca on verra precisemment ou on en est.

    ----------

    Mais sinon sur le fond je comprends mal ce que tu fais

    Si le choix n'apparait qu'une seul fois dans ton formulaire, tu appelles juste ton champ radio "etabl_type" et ensuite au traitement soit
    $_POST["etabl_type"] = "Entreprise" ou $_POST["etabl_type"]="Scolaire" selon la case cochée.

  7. #7
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Merci j'ai testé et voilà ce que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Notice: Undefined index: etablist in c:\weblocal\sites\clubeuropeendelasante\prix_sante\appels\dossier_candidature.php on line 17
    NULL POST etabl_type contient : 
    string(0) "" type_etablist_table contient
    Comme j'ai tout refais les noms sont un peu changés.
    Mais je ne comprends pas pourquoi ça ne marche pas pour "etablist" alors que ça marche pour "concertation"
    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
    function est_selectionne_etablist($option) {
        if (!isset($_POST['etablist'])) {
                return FALSE;
        }
        for ($i = 0, $c = count($_POST['etablist']); $i < $c; $i++) {
            if ($_POST['etablist'][$i] == $option) {
                return TRUE;
            }
        }
        return FALSE;
    }
     
    $etablist = "";
    if (isset($_POST['etablist'])){
        for ($i = 0, $c = count($_POST['etablist']); $i < $c; $i++) {
            $etablist = "" . $_POST['etablist'][$i] . "";
        }
    }
     
    <input type="radio" name="etablist[]" value="Entreprise" <?php if(est_selectionne_etablist("Entreprise")) { echo 'checked'; } else if ($etablist == "Entreprise"){ echo 'checked';} ?>/>Une entreprise 
    <input type="radio" name="etablist[]" value="Scolaire" <?php if(est_selectionne_etablist("Scolaire")) { echo 'checked';}  else if ($etablist == "Scolaire"){ echo 'checked';} ?>style="margin-left:60px"/>Un établissement scolaire
    et pour ça ça marche
    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
    function est_selectionne_concertation($option) {
        if (!isset($_POST['concertation'])) {
                return FALSE;
        }
        for ($i = 0, $c = count($_POST['concertation']); $i < $c; $i++) {
            if ($_POST['concertation'][$i] == $option) {
                return TRUE;
            }
        }
        return FALSE;
    }
     
    $concertation = "";
    if (isset($_POST['concertation'])){
        for ($i = 0, $c = count($_POST['concertation']); $i < $c; $i++) {
            $concertation = "" . $_POST['concertation'][$i] . "";
        }
    }
     
    <input type="radio" name="concertation[]" value="Oui" <?php if(est_selectionne_concertation("Oui")) { echo 'checked'; } else if($concertation == "Oui"){ echo 'checked';} ?> style="margin-left:90px" />Oui
    <input type="radio" name="concertation[]" value="Non" <?php if(est_selectionne_concertation("Non")) { echo 'checked'; } else if($concertation == "Non"){ echo 'checked';} ?> style="margin-left:90px" />Non</span>
    Quand je fais echo $etablist; qui provient de la table, j'ai bien dans ce cas là : Scolaire

    Ce qui m'étonne c'est que la même chose marche sur un site que j'ai déjà fais.
    Très bizarre

  8. #8
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Encore plus bizarre

    Si etablist = Entreprise, le bouton est coché
    mais pas si etablist = Scolaire


  9. #9
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Bon je sais pas pourquoi mais maintenant ça marche.

    Merci encore à Sabotage

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

Discussions similaires

  1. Savoir si un bouton Radio est coché
    Par bullrot dans le forum Langage
    Réponses: 4
    Dernier message: 23/09/2008, 12h30
  2. alerte boutons radio non coché
    Par i_need_to_know dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/09/2007, 17h05
  3. Réponses: 4
    Dernier message: 17/04/2007, 15h24
  4. [XHTML] Bouton radio non coché sous IE
    Par navis84 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 02/08/2006, 14h03
  5. Valeur d'un groupe de boutons radio non sélectionnés ??
    Par michaelbob dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 04/11/2005, 16h27

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