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 :

Formulaire conditionnel en PHP


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Formulaire conditionnel en PHP
    Je souhaite afficher un QCM à l'aide d'un formulaire
    Chaque question peut comprendre 2, 3 ou 4 réponses possibles dont une seule est vraie
    Mon problème (je suis débutant), je n'arrive pas à afficher 2, 3 ou 4 boutons radio en fonction du nombre de réponses et je ne sais pas à l'avance si la question choisie comporte 2, 3 ou 4 réponses (mais je peux le tester)
    C'est pourtant certainement possible
    Le code que j'ai écrit est le suivant:
    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
    <form name="Q01" method="post">
    <?php
    if ($TEST==2){
    	<input type=radio name"test1" value="test1">test1<br>
    	<input type=radio name"test2" value="test2">test2<br>
    } elseif ($TEST==3){
    	<input type=radio name"test1" value="test1">test1<br>
    	<input type=radio name"test2" value="test2">test2<br>
    	<input type=radio name"test3" value="test3">test3<br>
    } else {
    	<input type=radio name"test1" value="test1">test1<br>
    	<input type=radio name"test2" value="test2">test2<br>
    	<input type=radio name"test3" value="test3">test3<br>
    	<input type=radio name"test4" value="test4">test4<br>
    }
    ?>
    </form>
    Dans ce code les lignes input génèrent une erreur
    Quelqu'un a-t'il une idée sur la façon de s'y prendre?

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Tout ce qui se trouve entre les balises PHP (donc entre <?php et ?>) doit être du code PHP.
    Toi, tu mets du code HTML, du coup l'interpréteur PHP ne comprends pas et génère une erreur.
    Les chaînes de caractères.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    C'est normal, tu es dans du code php et donc si tu veux afficher tes input tu dois faire un echo.
    Marcuscircus : La seule différence entre un rêve et sa réalisation, c'est l'envie

  4. #4
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    J'avais bien essayer de procéder avec echo mais dans ce cas je n'arrivais pas à générer mes 2, 3 ou 4 boutons radio dans un formulaire. Donc je tourne en rond
    Soit je suis dans php et je ne peux pas afficher différemment le formulaire selon la réponse au test
    Soit je suis dans html et je peux afficher un formulaire mais non dépendant du test dans php

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Ah... donc manifestement, tu n'es pas allé voir le lien que je t'ai donné...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Citation Envoyé par AMORA Voir le message
    Soit je suis dans php et je ne peux pas afficher différemment le formulaire selon la réponse au test
    Soit je suis dans html et je peux afficher un formulaire mais non dépendant du test dans php
    Soit tu fermes les balises PHP lorsque tu veux faire du HTML et tu les ré-ouvres ensuite :
    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
    <?php
    if ($TEST==2){
    ?>
    	<input type=radio name"test1" value="test1">test1<br>
    	<input type=radio name"test2" value="test2">test2<br>
    <?php
    } elseif ($TEST==3){
    ?>
    	<input type=radio name"test1" value="test1">test1<br>
    	<input type=radio name"test2" value="test2">test2<br>
    	<input type=radio name"test3" value="test3">test3<br>
    <?php
    } else {
    ?>
    	<input type=radio name"test1" value="test1">test1<br>
    	<input type=radio name"test2" value="test2">test2<br>
    	<input type=radio name"test3" value="test3">test3<br>
    	<input type=radio name"test4" value="test4">test4<br>
    <?php
    }
    ?>
    Cela dit, c'est très facile de se tromper avec cette technique (et d'oublier de fermer les accolades...) et ça implique que le code HTML soit fixe et non renseigné par PHP (ce qui est rarement le cas)
    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]

  7. #7
    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
    La vraie bonne réponse c'est une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    $tblRadios = array(
               array('reponse2'=>'Réponse 2'),
               array('reponse4'=>'Réponse 4'),
    );
     
    foreach ($tblRadios as $value=>$label) {
       echo '<input type="radio" name="question45" value="' . $value . '" />' . $label . '<br/>';
    }
    Ici je pars d'un array PHP mais la source peut être tout autre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci à vous tous
    J'ai essayé la méthode de Bovino et ça marche
    J'ai essayé celle de Celira qui fonctionne aussi
    Quand à celle de Vincent elle est comme celle de Bovino à part la boucle

    Dans tous les cas mes 2, 3 ou 4 boutons radios s'affichent avec leur label mais il y a un petit hic: les boutons sont tous sélectionnables mais ne s'excluent pas l'un l'autre. Qu'ai-je bien pu oublier?
    Le nouveau code:
    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
    <form name="Q01" method="post" action="QZARBITRAGE.php">
    <?php
    if ($TEST==2){
    ?>	
    	<input type=radio name"reponses2" checked value="to1"><?php print $tableau00[1]."<br>"?>
    	<input type=radio name"reponses2" value="to2"><?php print $tableau00[2]."<br>"?>
    <?php	
    } elseif ($TEST==3){
    ?>
    	<input type=radio name"reponses3" checked value="to1"><?php print $tableau00[1]."<br>"?>
    	<input type=radio name"reponses3" value="to2"><?php print $tableau00[2]."<br>"?>
    	<input type=radio name"reponses3" value="to3"><?php print $tableau00[3]."<br>"?>
    <?php
    } else {
    ?>
    	<input type=radio name"reponses4" checked value="to1"><?php print $tableau00[1]."<br>"?>
    	<input type=radio name"reponses4" value="to2"><?php print $tableau00[2]."<br>"?>
    	<input type=radio name"reponses4" value="to3"><?php print $tableau00[3]."<br>"?>
    	<input type=radio name"reponses4" value="to4"><?php print $tableau00[4]."<br><br>"?>
    <?php
    }
    ?>
    <input  TYPE="SUBMIT" NAME="valider" VALUE="Valider"/>
    </form>
    Merci d'avance pour votre aide précieuse

  9. #9
    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
    Plus sérieusement ce que tu fais avec des conditions a rallonge n'est pas bon : c'est une impasse dés que tu veux modifier un bout de code.
    De même, ne donne pas un nom différent à tes radios selon le cas, sinon tu seras obligé de tester les 4 à la reception du formulaire.

    Pour ton problème de radio, tu as simplement oublié le = entre name et sa valeur.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut transfert d'un tableau via un formulaire
    Je n'ai pas de problème pour passer une variable d'un page à l'autre à l'aide du code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <INPUT TYPE="HIDDEN" NAME="transnbrep00" value="<?php print $nbrep00?>"/>
    mais quelle est la syntaxe pour passer une variable tableau d'une page à l'autre via un formulaire (et non un fichier)?
    (tout ce que j'ai essayé me génère une erreur)

  11. #11
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Ce n'est pas possible en tant que tel.

    Une solution est de sérializer ton tableau avec la fonction serialize() puis de unserializer ton tableau à la réception de ton formulaire.

    Mais cette méthode est peu pratique et peu sur quand elle est utilisée pour passer des éléments dans des formulaires (comme toi tu souhaites le faire), à éviter autant que possible. Privilégies par exemple le passage par une variable de session.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

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

Discussions similaires

  1. [PDF] Remplir un formulaire PDF avec PHP
    Par Orionmel dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 21/10/2013, 10h14
  2. VALUE d'un champ de formulaire avec variable php
    Par shub dans le forum Langage
    Réponses: 5
    Dernier message: 04/04/2006, 12h13
  3. Réponses: 15
    Dernier message: 13/03/2006, 16h24
  4. [MySQL] Formulaire de recherche PHP + un script d recherche en HTML
    Par Dsphinx dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/11/2005, 19h44
  5. Problème Formulaire + popup + page PHP
    Par nesbla dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/02/2005, 00h10

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