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

PHP & Base de données Discussion :

Formulaire valeur bouton radio à PHP


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Formulaire valeur bouton radio à PHP
    Bonjour,

    Pour appeler une fonction PHP, j’ai besoin de connaître la valeur du bouton radio sélectionné.


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <! -- Radios --> 
    <input class="form-check-input" type="radio" name="choix1" id="SQLA" value="option1">
    <input class="form-check-input" type="radio" name="choix1" id="SQLB" value="option2">
    <input class="form-check-input" type="radio" name="choix1" id="SQLC" value="option3">
    <! -- Btn Valid--> 
    <a class="btn btn-light" type="submit" name="valider" value="valider1" id="ValidChoix_1">
    Valider
    </a>


    Problème, le test ci-après ne renvoie ni erreur ni résultat.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    if(isset($_POST['valider1'])) {
      print $_POST['name'];
    }
    ?>



    J’ai bien dû faire une bonne vingtaine de test. Une correction serait la bienvenue.

    Merci d’avance
    Si vous êtes un (ou une) professionnel : souhaitant mettre en place une assistance par Email vous pouvez me contacter.

  2. #2
    Membre régulier
    Salut,

    Essaye plutôt :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    if(isset($_POST['valider1'])) {
      print $_POST['choix1'];
    }
    ?>

  3. #3
    Candidat au Club
    hélas
    Bonjour et merci de ta réponse

    Hélas même résultat : ni erreur ni affichage

  4. #4
    Expert éminent sénior
    salut,

    à la lecture de ton bout de code : la valeur sélectionnée se trouve dans $_POST['choix1'] et c'est if (isset($_POST['valider'])) et pas if(isset($_POST['valider1']))

  5. #5
    Modératrice

    Et sinon, un var_dump($_POST); en début de script pourrait t'aider à débugger.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Candidat au Club
    D’abord merci pour vos réponses

    Pour le 'valider1' j’ai cru bien faire dans la mesure ou plus bas j’ai
    - 'valider2'
    - 'valider3'
    - 'valider4'
    qui appel 2 autres scripts JS (affichage) et 2 fonctions PHP différentes… lorsque la 1ère serra opérationnelle.

    Ceci étant même avec :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    if(isset($_POST['valider'])) {
      print $_POST['choix1'];
    }
    ?>

    toujours le même résultat*: ni erreur ni affichage du print

    Pour ce qui est de var_dump je ne connaissais pas et je m'en vais de ce pas voir de quoi il retourne.

    Reviens vers vous des nouvelles connaissances acquises.

    Cordialement

  7. #7
    Membre actif
    Salut,
    Effectivement var_dump, c'est la base du debug en PHP, car cela va te retourner le contenu de la variable que tu lui fournis. Si tu lui passes un tableau il te retournera les clé et valeurs du tableau.
    Si tu l'englobe dans des balises (HTML) <PRE> tu verra le résultat du tableau de manière indenté. C'est vraiment l'un des éléments les plus pratique qu'il y ai en PHP. N'hésite donc pas à l'utiliser quand tu veux vérifier le contenu de ta variable.
    [ var_dump($_POST) var_dump($_GET) var_dump($_SESSION) var_dump($_SERVER) ] test ces var_dump différent pour un peu plus découvrir la facilité de récupération des données contenu par les tableaux.

  8. #8
    Candidat au Club
    Celira... désolé

    Même avec 2 var_dump :
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    if(isset($_POST['valider'])) {
      var_dump($_POST['valider']);
      var_dump($_POST['choix1']);
    }
    ?>

    ... aucun changement : ni erreur, ni affichage, même :
    - en bloquant les JS
    - en passant le PHP avant, après le formulaire, dans le formulaire en tête en pied.

    Ne sais plus quoi faire... si au moins il y avait une erreur.

  9. #9
    Modératrice

    Relis bien :
    Citation Envoyé par Celira Voir le message
    Et sinon, un var_dump($_POST); en début de script pourrait t'aider à débugger.
    Tu mets le var_dump($_POST); en dehors de toutes les conditions pour savoir ce que tu reçois. Et ensuite tu corriges tes conditions en fonction de ce que tu as vu dans le résultat.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  10. #10
    Candidat au Club
    Sparky95 pas vu ta contribution avant de poster.
    Merci à toi.

  11. #11
    Candidat au Club
    Celira

    «En dehors de toutes les conditions» c’est à dire ?

    A par ceux dans le <head></head> ce script PHP est le 1er de la page

    Par contre il y a en d’autres en fin de page et dans le <body></body> je tente de les supprimer ?

  12. #12
    Invité
    Invité(e)
    Bonjour,

    Et avec des LUNETTES, ça n'irait pas mieux ?
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    <a ..... type="submit"........>...</a>



    Il te faut un minimum de LECTURE de tutos si tu veux apprendre à coder...


    Merci de CLIQUER sur les liens...

  13. #13
    Candidat au Club
    Bonjour jreaux62

    Merci de ton intervention, mais promis, juré... j’avais déjà lu et même copier pour pouvoir les annoter ces 3 documents.
    J’y reviens d’ailleurs régulièrement au fur à mesure de mes besoins.

    Ma problématique est simple*:
    - le traitement ce faisant sur le même page,
    - sauf erreur et/ou distraction de ma part,
    - je n’ai pas trouvé dans ces documents comment appeler le ou les scripts (selon exemple) PHP de validation.

    Le seule début de piste que j’ai trouvé cette nuit, dans un PDF de 419 pages édité par wikibooks.org est*:

    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
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
    Nom : <input type="text" nom="fnom">
    <input type="soumettre"> Valider
    </form>
    <?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // collecte la valeur du champ de saisie
    $nom = $_REQUEST['fnom'];
    if (empty($nom)) {
    echo "Le nom est vide";
    } else {
    echo $nom;
    }
    }
    ?>



    Hélas, l’exemple ci-dessus (page 61 du PDF), s’il ne génère pas d’erreur ne génère aucun résultat avec
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    <input type="soumettre">Valider

    En génère une avec
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    <input type="submit">

    Ce qui me semble normal mais que je ne sais traiter :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    The requested URL /adminlte/test.php was not found on this server.


    S'il y a eu erreur et/ou distraction de ma part l’usage de la règle est autorisé
    Si non un début de réponse serait le bienvenu.
    Cordialement

  14. #14
    Candidat au Club
    Rectification

    J'ai trouvé !
    Je mets au propre et je reviens poster la solution.


    Par contre jreaux62 je reste en attente de savoir ou je pouvais trouver la solution dans l'un de tes 3 documents.

    Notre échange n'aura pas été totalement inutile.

  15. #15
    Invité
    Invité(e)
    Citation Envoyé par debutant13 Voir le message
    ...le traitement ce faisant sur le même page...


    N.B. Quand on voit que tu mets une balise <a> au lieu d'un <input type="submit">, on est en droit de se dire que tu as peut-être "VU" les documents/tutos, mais que tu ne les as pas "LU".

  16. #16
    Candidat au Club
    Comment appeler la validation d'un formulaire dans la page du formulaire :

    Il faut remplacer le classique :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    <form method="POST" action="page.php">

    - par la variable variable superglobale "$_SERVER"
    - complété de "'PHP_SELF'" qui spécifie à PHP que nous restons dans la même page


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
        Bouton radio à sélectionner :
        <input type="radio" name="radio" value="option1"/>
        <input type="radio" name="radio" value="option2"/>
        <input type="radio" name="radio" value="option3"/><br />
        <input type="submit" value="Envoyer" />
    </form>


    Le code du script qui n'affiche, ici , que le tableau de valeur :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    if(!empty($_POST)){
      //
      // Debug
      //
      echo '<b>Variables</b> :<br />';
      echo '<pre>';
      print_r($_POST);
      echo '</pre>';
    }
    ?>


    Me reste à trouver :
    - comment attendre un clic sur le bouton Envoyer
    - comment faire pour, qu'après envoi, le bouton radio coché reste coché

    Si quelqu'un à la ou les réponses merci à lui ou à elle.

  17. #17
    Candidat au Club
    Bonjour

    Pour ce qui d'attendre un clic sur le bouton Envoyer et récupérer les valeurs j'ai ce qui suit et qui fonctionne.

    Mais il n'y aurait pas plus simple ?

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    if(!empty($_POST)){
    	if (isset($_POST['radio']) && $_POST['radio'] == "option1") {  
        echo "Option 1 ";
    	}
    	if (isset($_POST['radio']) && $_POST['radio'] == "option2") {  
        echo "Option 2 ";
    	}
    	if (isset($_POST['radio']) && $_POST['radio'] == "option3") {  
        echo "Option 3 ";
    	}
    }
    ?>


    Reste le problème du bouton radio qui n'est plus "checked" après le "submit"

  18. #18
    Invité
    Invité(e)
    Bonjour,

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    //	var_dump( $_POST ); // pour TEST
    // Initialisation : valeurs par défaut
    $choix1 = 'SQLA'; 
    // Traitement
    if( isset($_POST['valider1']) )
    {
    	$choix1 = ( isset($_POST['choix1']) )? $_POST['choix1'] : '';
    	echo '<p>Vous avez fait le choix : '.$choix1.'</p>';
    }
    ?>

    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
    <form method="post" action="">
    	<p>
    <?php	// Radios
    	$SQL_arr = array(
    		'SQLA' => 'choix SQLA',
    		'SQLB' => 'choix SQLB',
    		'SQLC' => 'choix SQLA',
    	);
    	foreach( $SQL_arr as $val => $name )
    	{
    		$checked = (isset($choix1) && $choix1 == $val)? ' checked="checked"' : '';
    ?>
    		<label><input class="form-check-input" type="radio" name="choix1" value="<?php echo $val; ?>"<?php echo $checked; ?>> <?php echo $name; ?></label>
    <?php
    	}
    ?>
    	</p>
    	<p>
    		<button class="btn btn-light" type="submit" name="valider1" >Valider</button>
    	</p>
    </form>

  19. #19
    Membre actif
    Citation Envoyé par debutant13 Voir le message
    Bonjour

    Pour ce qui d'attendre un clic sur le bouton Envoyer et récupérer les valeurs j'ai ce qui suit et qui fonctionne.

    Mais il n'y aurait pas plus simple ?

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    if(!empty($_POST)){
        if (isset($_POST['radio']) && $_POST['radio'] == "option1") {  
        echo "Option 1 ";
        }
        if (isset($_POST['radio']) && $_POST['radio'] == "option2") {  
        echo "Option 2 ";
        }
        if (isset($_POST['radio']) && $_POST['radio'] == "option3") {  
        echo "Option 3 ";
        }
    }
    ?>


    Reste le problème du bouton radio qui n'est plus "checked" après le "submit"
    Suis plutôt ce que jreaux62 a mis au dessus mais pour répondre à ton bout de code, qu'observes tu? tu fais une répétition déjà la tu peux simplifier.
    Code PHP :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    if(/*!empty($_POST) &&*/ isset ($_POST['radio'])){ // à confirmer par les autres mais tu n'as pas besoin de tester le empty $_POST vu que tu vérifie que $_POST['radio'] existe
        if ($_POST['radio'] == "option1") {  
        echo "Option 1 ";
        }else // n'oublie pas les else ça te ferra gagner 2 vérif
        if ($_POST['radio'] == "option2") {  
        echo "Option 2 ";
        }else // idem la 1 vérif
        if ($_POST['radio'] == "option3") {  
        echo "Option 3 ";
        }
    }
    ?>

    Sinon avec un switch

    Code PHP :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
     
    <?php
    if(isset($_POST['radio'])){
        switch($_POST['radio']){
            case "option1":  
                echo "Option 1 ";
            break;
            case "option2":  
                echo "Option 2 ";
            break;
            case "option3":  
                echo "Option 3 ";
            break;
    /*
    
            default:  
                echo "Option inconnue ";
    */
        }
    }
    ?>

  20. #20
    Candidat au Club
    Merci à vous pour vos contributions.

    Je me doutais qu'il y aurait plus simple comme... un switch dont j'ignorais l'existence. Merci à toi Sparky95.

    J'ai juste supprimé le "default" car le bouton valider n'est pas disponible si un aucun bouton radio n'est coché et cela fonctionne

    Pour ce qui est du "check" que je pourrais "gérer avec de l'html" je verrais cela cette nuit car petit RDV de courtoisie aux Impôts.

    Je reviens vers vous dès demain matin.

    Merci encore

###raw>template_hook.ano_emploi###