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

PHP & Base de données Discussion :

Formulaire : champs à affichage conditionnel


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Formulaire : champs à affichage conditionnel
    Bonjour,
    Dans un formulaire destiné à ajouter des informations dans une base MySQL, j'ai plusieurs champs qui doivent être présentés de façon conditionnelle.
    Voilà le début de mon 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
    	<form name="situationRcPro" method="post" action="index.php?page=assuRcpro">
    	<table border="1" width="98%" summary="situation actuelle et ant&eacute;c&eacute;dents">
    		<tr>
    			<td colspan="2">Avez-vous souscrit ?
    				&nbsp;Oui&nbsp;&nbsp;<input type="radio" name="an0on" value="oui" checked="checked" tabindex="1">
    				&nbsp;Non&nbsp;&nbsp;<input type="radio" name="an0on" value="non"  tabindex="2">
    			</td>
    		</tr>
    		<tr>
    			<td width="25%">Si non, pourquoi ?</td>
    			<td>
    				<textarea name="an0quoi" id="Raison Non" title="Saisir votre r&eacute;ponse" cols="50" rows="2" tabindex="3"><?php echo htmlspecialchars($an0quoi); ?></textarea>
    			</td>
    		</tr>
    		<tr>
    		  <td align="center">
    		  		<input type="submit" value="Imprimer le formulaire" tabindex="18"/>
    			</td>
    			<td align="center">
    		  		<input type="submit" value="Envoyer le formulaire" tabindex="19"/>
    			</td>
    		</tr>
    	</table>
    	</form>
    Comment faire pour que la zone de saisie de texte "an0quoi" ne soit présentée que si le bouton "an0on" est coché à NON ?
    Merci de votre aide !

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php if(isset($_POST["an0on"]) && ($_POST["an0on"]=="non")) {  
       // la case non a été coché
    }?>
    A+.

  3. #3
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Une façon de le faire :

    Avec la bibliothèque jQuery, faire un .hide(); ou .show() sur le clique du bouton "an0on"

    Faisable aussi en javascript pure je pense avec le hidden true ou false.

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Bonjour Plorton.
    Je suppose effectivement que tu voudrais que ta page soit dynamique, au sens où ton champ texte apparaitraît dès que l'on coche tel bouton radio ?

    Typiquement, ce genre d'événement exige un langage côté client web et pas PHP (qui est un langage côté serveur), car il n'attend pas que la page soit rechargée pour la modifier. Ce n'est donc pas en PHP que tu pourras faire ce genre de page dynamique, mais en javascript.

    Si tu débutes en javascript, je crois que la solution 2 de Golgotha est la plus simple, bien que pas très élégante. Tu mets une div sur la page que tu caches ou non selon la coche.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    voici un bout de code en javascript (à adapter) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	<script type="text/javascript"><!--
    	function affichebox() {
    		var idNon = document.getElementById('idan0onNon');
    		if(idNon.checked) { // on affiche
    			document.getElementById('idbox_a_afficher').style.display = "block";
    		} else { // on masque
    			document.getElementById('idbox_a_afficher').style.display = "none";
    		};
    	}
    	//-->
    	</script>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	<input type="radio" value="oui" name="an0on" id="idan0onOui" onclick="affichebox();"<?php if($an0on=='oui') { echo ' checked="checked"'; } ?> /><label for="idan0onOui">Oui </label>
    	<input type="radio" value="non" name="an0on" id="idan0onNon" onclick="affichebox();"<?php if($an0on=='non') { echo ' checked="checked"'; } ?> /><label for="idan0onNon">Non </label>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	<div id="idbox_a_afficher" style="display:<?php if($an0on=='non') { echo 'block'; } else { echo 'none'; } ?>">
    		<!-- ICI : le contenu à afficher/masquer -->
    	</div>
    Dans ton cas (et bien que je ne cautionne pas l'utilisation d'une <table> pour la mise en page du formulaire), tu peux l'appliquer sur le <tr> à afficher/masquer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		<tr id="idbox_a_afficher" style="display:<?php if($an0on=='non') { echo 'block'; } else { echo 'none'; } ?>">
    			<td width="25%">Si non, pourquoi ?</td>
    			<td>
    				<textarea name="an0quoi" id="Raison Non" title="Saisir votre r&eacute;ponse" cols="50" rows="2" tabindex="3"><?php echo htmlspecialchars($an0quoi); ?></textarea>
    			</td>
    		</tr>
    [Edit] Oh oh ! Sylvie VAUTHIER est dans la place !
    Merci et bravo pour ton tuto -> PHP : Le tutoriel pour grands débutants pressés
    Dernière modification par Invité ; 30/08/2011 à 11h51.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci de vos propositions de solution ...
    Je teste cet après-midi et je vous tiens informé(e)s.

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/06/2011, 16h50
  2. Affichage conditionnel dans un formulaire
    Par EIN-LESER dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/01/2009, 13h22
  3. [DOM] Formulaire dynamique : affichage conditionnel de champs
    Par Flackou dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/08/2008, 21h47
  4. formulaire/sous-formulaire - affichage conditionnel
    Par clonezoë dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 16/03/2008, 18h56
  5. [PHP-JS] Affichage conditionnel d'un champ
    Par bankette dans le forum Langage
    Réponses: 15
    Dernier message: 23/07/2007, 13h54

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