[RESOLU] Comment faire apparaître un champ sous condition ?

Guill0m3
Invité n'ayant pas de compte PHPfrance

29 mai 2011, 14:33

Bonjour, alors voilà, je cherche à faire apparaître un champ sous condition. J'ai mis la police en rouge dans le code pour montrer où se situe mon problème. Il s'agit d'un formulaire d'inscription et je souhaite faire apparaître "nombre de jours dans le cas d'un compte temporaire avec le champ associé". Ne me demandez pas pourquoi je dois faire ce code ^^ je dois juste respecter le sujet (assez cocasse j'avoue) :D

Quelqu'un pourrait-il venir à mon secours ? Merci d'avance

<?php 
include("dbconnect.php");

/*fonctions*/
function VerifierAdresseMail($email) 
{ 
   $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#'; 
   if(preg_match($Syntaxe,$email)) 
      return true; 
   else 
     return false; 
}
/*----------------------------------------------------------*/

if ( isset($_POST) && (!empty($_POST['civilite'])) && (!empty($_POST['type'])) && (!empty($_POST['status'])) && (!empty($_POST['prenom'])) && (!empty($_POST['nomp'])) && (!empty($_POST['email'])) && (isset($_POST['accepter']))) 
{

	$email=htmlentities($_POST['email']); 
	if(VerifierAdresseMail($email)) {
		$civilite=$_POST['civilite'];
		$prenom=$_POST['prenom'];
		$type=$_POST['type'];
		$status=$_POST['status'];
		$nomp=$_POST['nomp'];
		$email=$_POST['email'];
		$nb=$_POST['nbjours'];
		$sql = "INSERT INTO tinscription( civilite,prenom,nomp,email,type,status,nbjours) 
				VALUES('$civilite','$prenom','$nomp','$email','$type','$status','$nb')";
		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br/>'.mysql_error());
		echo 'test';
		echo '<meta http-equiv="refresh" content="','',';url=','?page=success','">';
	}
	else{		
		echo '<meta http-equiv="refresh" content="','',';url=','?page=inscription','">';	
	}	
}
else
{
	echo "<form id='inscription_form' action='?page=inscription' method='post' enctype='multipart/form-data' class='basic FormValidator'>

	<fieldset>
		<legend>Informations personnelles</legend>

		<dl>
			<dd>Veuillez, s'il vous plait, remplir tous les champs.</dd>

			<dt>Civilité&nbsp;:</dt>
			<dd>
				<input type='radio' id='civilite_m' name='civilite' value='M.' checked='checked'/><label for='civilite_m'>M.</label>
				<input type='radio' id='civilite_mme' name='civilite' value='Mme'/><label for='civilite_mme'>M<sup>me</sup></label>
				<input type='radio' id='civilite_mlle' name='civilite' value='Mlle'/><label for='civilite_mlle'>M<sup>lle</sup></label>

			</dd>

			<dt><label for='prenom'>Prénom&nbsp;:</label></dt>
			<dd><input type='text' id='prenom' name='prenom' value=''/></dd>

			<dt><label for='nom'>Nom&nbsp;:</label></dt>
			<dd><input type='text' id='nom' name='nomp' value=''/></dd>
	</fieldset>
	
	<fieldset>
		<legend>Type de compte demandé</legend>

		<dl>
			<dt>Durée&nbsp;:</dt>
			<dd>
				[color=#FF0000]<input type='radio' id='perma' name='type' value='P' checked='checked'/><label for='perma'>Permanent</label>
				<input type='radio' id='temp' name='type' value='T'/><label for='temp'>Temporaire</label>
			</dd>
			<dt><label for='nbjours'>Nombre de jours requis dans le cas d'un compte temporaire&nbsp;:</label></dt>
			<dd><input type='text' id='nbjours' name='nbjours' value=''/></dd>[/color]
				

	</fieldset>
	
	<fieldset>
		<legend>Status</legend>

		<dl>
			<dt>Choisir un status&nbsp;:</dt>
			<dd>
				<input type='radio' id='doc' name='status' value='D' checked='checked'/><label for='doc'>Doctorant</label>
				<input type='radio' id='chercheur' name='status' value='C'/><label for='chercheur'>Chercheur</label>
				<input type='radio' id='stagiaire' name='status' value='S'/><label for='stagiaire'>Stagiaire</label>
				
			</dd>

	</fieldset>
	
	<fieldset>
		<legend>Informations d'identification</legend>
	
	 <!-- / Validation de formulaire -->

	    <dl>
			<dt><label for='email'><strong>Adresse de messagerie&nbsp;:</strong></label></dt>
			<dd>
                <input type='text' id='email' name='email' value=''/>
				<span><em>l'adresse de messagerie doit être sous la forme toto@nomDomaine.[fr, com, org, etc...]</em></span>							
			</dd>			
		</dl>
		</dl>
		
	</fieldset><br/>
	<input type='checkbox' name='accepter' value='oui' /><strong>J'ai lu et accepte <a href='charte_utilisation.php'>les conditions d'utilisation du site</a> 3D World</strong>

					
			<p class='button'>
				<input type='submit' id='creer' name='creer' value='Créer mon compte' class='submit2'/>
				<input type='reset' name='Annuler' value='Annuler' class='submit2'/>
			</p>

</form>";
}
mysql_close($connect);

?>

Guill0m3
Invité n'ayant pas de compte PHPfrance

29 mai 2011, 14:37

L'endroit censé être en rouge n'y est pas u_u

il s'agit de ce passage :


<fieldset>
<legend>Type de compte demandé</legend>

<dl>
<dt>Durée&nbsp;:</dt>
<dd>
<input type='radio' id='perma' name='type' value='P' checked='checked'/><label for='perma'>Permanent</label>
<input type='radio' id='temp' name='type' value='T'/><label for='temp'>Temporaire</label>
document.getElementById('nbjours').style.visibility = 'hidden'
</dd>
<dt><label for='nbjours'>Nombre de jours requis dans le cas d'un compte temporaire&nbsp;:</label></dt>
<dd><input type='text' id='nbjours' name='nbjours' value=''/></dd>


</fieldset>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 mai 2011, 18:20

Tu veux conditionner l'affichage en php ou en javascript ? au chargement de la page ou de façon dynamique en fonction de ce que fait l'utilisateur ?

Si c'est en php, il faut simplement ajouter un if() avec ta condition autour du code dont tu souhaites conditionner l'affichage. Cela nécessite également de découper ta chaine html en plusieurs echo au lieu d'un seul. Tu pourras ainsi spécifier ceux qui doivent être affichés ou non...

En javascript, il faut jouer sur le style du bloc que tu veux afficher, en lui donnant un identifiant unique et en altérant l'attribut display du style du champ que tu fixes à "none" pour le masquer. (tu peux utiliser visibility, mais ca ne fait que rendre invisible la zone mais conserve la disposition de la page)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 80 Messages

30 mai 2011, 11:10

Si c'est php, tu peux passer une variable, si(ta condition d'affichage) alors $variable = 'hidden' sinon $variable ='text' et dans ton formulaire, tu mets <input type='<?php echo $variable; ?>'
Si la condition est ok, le formulaire sera visible et en text, sinon il sera hidden (caché).
En informatique, lorsqu'il y a un bug, le souci est toujours entre la chaise et le clavier.