Des champs vides qui passent entre les mailles du filet
Posté : 13 nov. 2006, 12:09
Salut à tous!
Pour un site pro, je dois mettre en place un formulaire dont les champs sont obligatoires (les champs de zone de texte ne l'étant que si les boutons radio "veuillez préciser" respectifs sont cochés).
Quand j'essaie les valeurs des champs, le champ courriel vide ne passe pas, comme prévu; en revanche, tous les autres champs, s'ils sont vides, passent entre les mailles du filet!
Voici le code:
Pour un site pro, je dois mettre en place un formulaire dont les champs sont obligatoires (les champs de zone de texte ne l'étant que si les boutons radio "veuillez préciser" respectifs sont cochés).
Quand j'essaie les valeurs des champs, le champ courriel vide ne passe pas, comme prévu; en revanche, tous les autres champs, s'ils sont vides, passent entre les mailles du filet!
Voici le code:
<?php
// Définition des étapes du questionnaire
$etape=(isset($_POST['etape']))? $_POST['etape']: 1;
// Récupération des données des formulaires
$question1=(isset($_POST['question1']) && is_numeric($_POST['question1']))? $_POST['question1']: '';
$question2=(isset($_POST['question2']) && is_numeric($_POST['question2']))? $_POST['question2']: '';
$question3a=(isset($_POST['question3a']) && is_numeric($_POST['question3a']))? $_POST['question3a']: '';
$question3b=(isset($_POST['question3b']) && is_numeric($_POST['question3b']))? $_POST['question3b']: '';
$question3c=(isset($_POST['question3c']) && is_numeric($_POST['question3c']))? $_POST['question3c']: '';
$question4a=(isset($_POST['question4a']))? $_POST['question4a']: '';
if (isset($_POST['question4']) && is_numeric($_POST['question4']) && $_POST['question4']==3){
if (!empty($question4a)) $question4=$_POST['question4'].'-'.$question4a; else $question4='';
}
else{
$question4=(isset($_POST['question4']) && is_numeric($_POST['question4']))? $_POST['question4']: '';
}
$question5a=(isset($_POST['question5a']) && is_numeric($_POST['question5a']))? $_POST['question5a']: '';
$question5b=(isset($_POST['question5b']) && is_numeric($_POST['question5b']))? $_POST['question5b']: '';
$question5c=(isset($_POST['question5c']) && is_numeric($_POST['question5c']))? $_POST['question5c']: '';
$question6a=(isset($_POST['question6a']))? $_POST['question6a']: '';
if (isset($_POST['question6']) && is_numeric($_POST['question6']) && $_POST['question6']==2){
if (!empty($question6a)) $question6=$_POST['question6'].'-'.$question6a; else $question6='';
}
else{
$question6=(isset($_POST['question6']) && is_numeric($_POST['question6']))? $_POST['question6']: '';
}
$courriel=(isset($_POST['courriel'])
&& preg_match("/^([-_.0-9a-z]+)@([-_.0-9a-z]+)\.([a-z]{2,3})$/", $_POST['courriel']))?
str_replace('@', '*at*', $_POST['courriel']): '';
// Étape 1: question 1
if ($etape==1){
if (isset($question1) && !empty($question1)) $etape=$_POST['etape']; else $etape=1;
}
// Étape 2: questions 2 à 6 (réponse oui à la question 1) ou dernier formulaire
else if ($etape==2){
$reponses=array($question1);
if ($question1==2){
if (isset($question2) && !empty($question2)
&& isset($question3a) && !empty($question3a) && isset($question3b) && !empty($question3b)
&& isset($question3c) && !empty($question3c)
&& isset($question4) && !empty($question4)
&& isset($question5a) && !empty($question5a)
&& isset($question5b) && !empty($question5b)
&& isset($question5c) && !empty($question5c)
&& isset($question6) && !empty($question6)){
if ($question4==3){
if (isset($question4a) && !empty($question4a)) $etape=$_POST['etape']; else $etape=2;
}
else if ($question6==1){
if (isset($question6a) && !empty($question6a)) $etape=$_POST['etape']; else $etape=2;
}
else $etape=$_POST['etape'];
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Enquête vente privée - Questionnaire en ligne</title>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Questionnaire</h1>
<?php
// Affichage du premier formulaire
if ($etape==1){
?>
<form id="questionnaire" method="post" action="questionnaire-en-ligne.php">
<h2>1. Avez-vous consulté dernièrement l'une de nos invitations multi-ventes
(mails d'invitations qui regroupent toutes les ventes mises en ligne le même jour) ?</h2>
<fieldset>
<input class="bouton" name="question1" type="radio" value="2"
<?php if ($question1==2) echo ' checked="checked"'; else echo ''; ?> /><label>Oui</label><br />
<input class="bouton" name="question1" type="radio" value="1"
<?php if ($question1==1) echo ' checked="checked"'; else echo ''; ?> /><label>Non</label>
</fieldset>
<p>
<input name="etape" type="hidden" value="<?php echo ++$etape ?>" />
<input class="validation" type="image" src="validation-court.
<?php if (preg_match("/MSIE ([1-6])\./", $_SERVER['HTTP_USER_AGENT'])) echo 'gif'; else echo 'png'; ?>" alt="Validez" />
</p>
</form>
<?php
}
else if ($etape==2){
$reponses=array($question1);
// Affichage du deuxième formulaire
if ($question1==2){
?>
<form id="questionnaire-suite" method="post" action="questionnaire-en-ligne.php">
<h2>2. D'une manière générale,
quel est votre niveau de satisfaction
concernant cette nouveauté ?
<?php print_r($reponses) ?></h2>
<fieldset>
<input class="bouton" name="question2" type="radio" value="1"
<?php if ($question2==1) echo ' checked="checked"'; else echo ''; ?> />
<label>Très satisfait</label><br />
<input class="bouton" name="question2" type="radio" value="2"
<?php if ($question2==2) echo ' checked="checked"'; else echo ''; ?> />
<label>Plutôt satisfait</label><br />
<input class="bouton" name="question2" type="radio" value="3"
<?php if ($question2==3) echo ' checked="checked"'; else echo ''; ?> />
<label>Plutôt insatisfait</label><br />
<input class="bouton" name="question2" type="radio" value="4"
<?php if ($question2==4) echo ' checked="checked"'; else echo ''; ?> />
<label>Très insatisfait</label>
</fieldset>
<h2>3. Comment jugez-vous le nouveau format
des e-mails d'invitation, sur les points suivants ?</h2>
<fieldset>
<ul>
<li>
Présentation<br />
<input class="bouton" name="question3a" type="radio" value="1"
<?php if ($question3a==1) echo ' checked="checked"'; else echo ''; ?> />
<label>Très satisfait</label>
<input class="bouton" name="question3a" type="radio" value="2"
<?php if ($question3a==2) echo ' checked="checked"'; else echo ''; ?> />
<label>Plutôt satisfait</label>
<input class="bouton" name="question3a" type="radio" value="3"
<?php if ($question3a==3) echo ' checked="checked"'; else echo ''; ?> />
<label>Plutôt insatisfait</label>
<input class="bouton" name="question3a" type="radio" value="4"
<?php if ($question3a==4) echo ' checked="checked"'; else echo ''; ?> />
<label>Très insatisfait</label>
</li>
<li>
Clarté<br />
<input class="bouton" name="question3b" type="radio" value="1"
<?php if ($question3b==1) echo ' checked="checked"'; else echo ''; ?> />
<label>Très satisfait</label>
<input class="bouton" name="question3b" type="radio" value="2"
<?php if ($question3b==2) echo ' checked="checked"'; else echo ''; ?> />
<label>Plutôt satisfait</label>
<input class="bouton" name="question3b" type="radio" value="3"
<?php if ($question3b==3) echo ' checked="checked"'; else echo ''; ?> />
<label>Plutôt insatisfait</label>
<input class="bouton" name="question3b" type="radio" value="4"
<?php if ($question3b==4) echo ' checked="checked"'; else echo ''; ?> />
<label>Très insatisfait</label>
</li>
<li>
Facilité d'utilisation<br />
<input class="bouton" name="question3c" type="radio" value="1"
<?php if ($question3c==1) echo ' checked="checked"'; else echo ''; ?> />
<label>Très satisfait</label>
<input class="bouton" name="question3c" type="radio" value="2"
<?php if ($question3c==2) echo ' checked="checked"'; else echo ''; ?> />
<label>Plutôt satisfait</label>
<input class="bouton" name="question3c" type="radio" value="3"
<?php if ($question3c==3) echo ' checked="checked"'; else echo ''; ?> />
<label>Plutôt insatisfait</label>
<input class="bouton" name="question3c" type="radio" value="4"
<?php if ($question3c==4) echo ' checked="checked"'; else echo ''; ?> />
<label>Très insatisfait</label>
</li>
</ul>
</fieldset>
<h2>4. Qu'est-ce qui vous séduit le plus
dans cette nouvelle présentation ?</h2>
<fieldset>
<input class="bouton" name="question4" type="radio" value="1"
<?php if ($question4==1) echo ' checked="checked"'; else echo ''; ?> />
<label>Recevoir moins d'e-mails</label><br />
<input class="bouton" name="question4" type="radio" value="2"
<?php if ($question4==2) echo ' checked="checked"'; else echo ''; ?> />
<label>Avoir une vision d'ensemble des ventes du jour</label><br />
<input class="bouton" name="question4" type="radio" value="3"
<?php if ($question4==3) echo ' checked="checked"'; else echo ''; ?> />
<label>Autre ; merci de donner quelques précisions :</label><br />
<textarea name="question4a" cols="50" rows="3"><?php echo $question4a ?></textarea>
</fieldset>
<h2>5. Comment jugez-vous la page du site permettant de s'inscrire
à plusieurs ventes simultanément ?</h2>
<fieldset>
<ul>
<li>
Présentation<br />
<input class="bouton" name="question5a" type="radio" value="1"
<?php if ($question5a==1) echo ' checked="checked"'; else echo ''; ?> />
<label>Très satisfait</label>
<input class="bouton" name="question5a" type="radio" value="2"
<?php if ($question5a==2) echo ' checked="checked"'; else echo ''; ?> />
<label>Plutôt satisfait</label>
<input class="bouton" name="question5a" type="radio" value="3"
<?php if ($question5a==3) echo ' checked="checked"'; else echo ''; ?> />
<label>Plutôt insatisfait</label>
<input class="bouton" name="question5a" type="radio" value="4"
<?php if ($question5a==4) echo ' checked="checked"'; else echo ''; ?> />
<label>Très insatisfait</label>
</li>
<li>
Clarté<br />
<input class="bouton" name="question5b" type="radio" value="1"
<?php if ($question5b==1) echo ' checked="checked"'; else echo ''; ?> />
<label>Très satisfait</label>
<input class="bouton" name="question5b" type="radio" value="2"
<?php if ($question5b==2) echo ' checked="checked"'; else echo ''; ?> />
<label>Plutôt satisfait</label>
<input class="bouton" name="question5b" type="radio" value="3"
<?php if ($question5b==3) echo ' checked="checked"'; else echo ''; ?> />
<label>Plutôt insatisfait</label>
<input class="bouton" name="question5b" type="radio" value="4"
<?php if ($question5b==4) echo ' checked="checked"'; else echo ''; ?> />
<label>Très insatisfait</label>
</li>
<li>
Facilité d'utilisation<br />
<input class="bouton" name="question5c" type="radio" value="1"
<?php if ($question5c==1) echo ' checked="checked"'; else echo ''; ?> />
<label>Très satisfait</label>
<input class="bouton" name="question5c" type="radio" value="2"
<?php if ($question5c==2) echo ' checked="checked"'; else echo ''; ?> />
<label>Plutôt satisfait</label>
<input class="bouton" name="question5c" type="radio" value="3"
<?php if ($question5c==3) echo ' checked="checked"'; else echo ''; ?> />
<label>Plutôt insatisfait</label>
<input class="bouton" name="question5c" type="radio" value="4"
<?php if ($question5c==4) echo ' checked="checked"'; else echo ''; ?> />
<label>Très insatisfait</label>
</li>
</ul>
</fieldset>
<h2>6. Préféreriez-vous recevoir une invitation par vente,
comme c'était le cas auparavant ?</h2>
<fieldset>
<input class="bouton" name="question6" type="radio" value="1"
<?php if ($question6==1) echo ' checked="checked"'; else echo ''; ?> />
<label>Non</label><br />
<input class="bouton" name="question6" type="radio" value="2"
<?php if ($question6==2) echo ' checked="checked"'; else echo ''; ?> />
<label>Oui ; merci de préciser pourquoi en quelques mots :</label><br />
<textarea name="question6a" cols="50" rows="3"><?php echo $question6a ?></textarea>
</fieldset>
<p>
<input name="etape" type="hidden" value="<?php echo ++$etape ?>" />
<input name="question1" type="hidden" value="<?php echo $question1 ?>" />
<input class="validation" type="image" src="validation-long.
<?php if (preg_match("/MSIE ([1-6])\./", $_SERVER['HTTP_USER_AGENT'])) echo 'gif'; else echo 'png'; ?>" alt="Validez vos réponses" />
</p>
</form>
<?php
}
// Affichage du dernier formulaire
else{
if (isset($courriel) && !empty($courriel)){
?>
<p>Merci pour votre réponse.</p>
<p>Le questionnaire s'arrête ici pour vous etc.</p>
<?php
}
else{
?>
<form id="questionnaire-fin" method="post" action="questionnaire-en-ligne.php">
<h2>Veuillez indiquer votre adresse e-mail <?php print_r($reponses) ?></h2>
<fieldset>
<input id="courriel" name="courriel" type="text" />
</fieldset>
<p>
<input name="etape" type="hidden" value="<?php echo $etape ?>" />
<input name="question1" type="hidden" value="<?php echo $question1 ?>" />
<input class="validation" type="image" src="validation-court.
<?php if (preg_match("/MSIE ([1-6])\./", $_SERVER['HTTP_USER_AGENT'])) echo 'gif'; else echo 'png'; ?>" alt="Validez" />
</p>
</form>
<?php
}
}
}
// Affichage du dernier formulaire
else{
$reponses=array($question1, $question2,
$question3a, $question3b, $question3c,
$question4, $question4a,
$question5a, $question5b, $question5c,
$question6, $question6a);
if (isset($courriel) && !empty($courriel)){
?>
<p>Merci d'avoir pris le temps de répondre à notre enquête.</p>
<p>En participant à ce sondage, etc.</p>
<?php
}
else{
?>
<form id="questionnaire-fin" method="post" action="questionnaire-en-ligne.php">
<h2>Veuillez indiquer votre adresse e-mail
<?php print_r($reponses) ?></h2>
<fieldset>
<input id="courriel" name="courriel" type="text" />
</fieldset>
<p>
<input name="etape" type="hidden" value="<?php echo $etape ?>" />
<input name="question1" type="hidden" value="<?php echo $question1 ?>" />
<input name="question2" type="hidden" value="<?php echo $question2 ?>" />
<input name="question3a" type="hidden" value="<?php echo $question3a ?>" />
<input name="question3b" type="hidden" value="<?php echo $question3b ?>" />
<input name="question3c" type="hidden" value="<?php echo $question3c ?>" />
<input name="question4" type="hidden" value="<?php echo $question4 ?>" />
<input name="question4a" type="hidden" value="<?php echo $question4a ?>" />
<input name="question5a" type="hidden" value="<?php echo $question5a ?>" />
<input name="question5b" type="hidden" value="<?php echo $question5b ?>" />
<input name="question5c" type="hidden" value="<?php echo $question5c ?>" />
<input name="question6" type="hidden" value="<?php echo $question6 ?>" />
<input name="question6a" type="hidden" value="<?php echo $question6a ?>" />
<input class="validation" type="image" src="validation-court.
<?php if (preg_match("/MSIE ([1-6])\./", $_SERVER['HTTP_USER_AGENT'])) echo 'gif'; else echo 'png'; ?>" alt="Validez" />
</p>
</form>
<?php
}
}
?>
</body>
</html>
Soit dit en passant, aucun message d'erreur ou d'alerte n'apparaît et les print_r renvoient des "Array ([indice]=>)".