Page 1 sur 1

Des champs vides qui passent entre les mailles du filet

Posté : 13 nov. 2006, 12:09
par Victor BRITO
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! :shock:

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&ecirc;te vente priv&eacute;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&eacute; derni&egrave;rement l'une de nos invitations multi-ventes
 (mails d'invitations qui regroupent toutes les ventes mises en ligne le m&ecirc;me jour)&nbsp;?</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&egrave;re g&eacute;n&eacute;rale,
 quel est votre niveau de satisfaction
 concernant cette nouveaut&eacute;&nbsp;? 
<?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&egrave;s satisfait</label><br />
    <input class="bouton" name="question2" type="radio" value="2"
<?php if ($question2==2) echo ' checked="checked"'; else echo ''; ?> />
<label>Plut&ocirc;t satisfait</label><br />
    <input class="bouton" name="question2" type="radio" value="3"
<?php if ($question2==3) echo ' checked="checked"'; else echo ''; ?> />
<label>Plut&ocirc;t insatisfait</label><br />
    <input class="bouton" name="question2" type="radio" value="4"
<?php if ($question2==4) echo ' checked="checked"'; else echo ''; ?> />
<label>Tr&egrave;s insatisfait</label>
  </fieldset>
  <h2>3. Comment jugez-vous le nouveau format 
des e-mails d'invitation, sur les points suivants&nbsp;?</h2>
  <fieldset>
    <ul>
      <li>
        Pr&eacute;sentation<br />
        <input class="bouton" name="question3a" type="radio" value="1"
<?php if ($question3a==1) echo ' checked="checked"'; else echo ''; ?> />
<label>Tr&egrave;s satisfait</label>
        <input class="bouton" name="question3a" type="radio" value="2"
<?php if ($question3a==2) echo ' checked="checked"'; else echo ''; ?> />
<label>Plut&ocirc;t satisfait</label>
        <input class="bouton" name="question3a" type="radio" value="3"
<?php if ($question3a==3) echo ' checked="checked"'; else echo ''; ?> />
<label>Plut&ocirc;t insatisfait</label>
        <input class="bouton" name="question3a" type="radio" value="4"
<?php if ($question3a==4) echo ' checked="checked"'; else echo ''; ?> />
<label>Tr&egrave;s insatisfait</label>
      </li>
      <li>
        Clart&eacute;<br />
        <input class="bouton" name="question3b" type="radio" value="1"
<?php if ($question3b==1) echo ' checked="checked"'; else echo ''; ?> />
<label>Tr&egrave;s satisfait</label>
        <input class="bouton" name="question3b" type="radio" value="2"
<?php if ($question3b==2) echo ' checked="checked"'; else echo ''; ?> />
<label>Plut&ocirc;t satisfait</label>
        <input class="bouton" name="question3b" type="radio" value="3"
<?php if ($question3b==3) echo ' checked="checked"'; else echo ''; ?> />
<label>Plut&ocirc;t insatisfait</label>
        <input class="bouton" name="question3b" type="radio" value="4"
<?php if ($question3b==4) echo ' checked="checked"'; else echo ''; ?> />
<label>Tr&egrave;s insatisfait</label>
      </li>
      <li>
        Facilit&eacute; d'utilisation<br />
        <input class="bouton" name="question3c" type="radio" value="1"
<?php if ($question3c==1) echo ' checked="checked"'; else echo ''; ?> />
<label>Tr&egrave;s satisfait</label>
        <input class="bouton" name="question3c" type="radio" value="2"
<?php if ($question3c==2) echo ' checked="checked"'; else echo ''; ?> />
<label>Plut&ocirc;t satisfait</label>
        <input class="bouton" name="question3c" type="radio" value="3"
<?php if ($question3c==3) echo ' checked="checked"'; else echo ''; ?> />
<label>Plut&ocirc;t insatisfait</label>
        <input class="bouton" name="question3c" type="radio" value="4"
<?php if ($question3c==4) echo ' checked="checked"'; else echo ''; ?> />
<label>Tr&egrave;s insatisfait</label>
      </li>
    </ul>
  </fieldset>
  <h2>4. Qu'est-ce qui vous s&eacute;duit le plus
 dans cette nouvelle pr&eacute;sentation&nbsp;?</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&nbsp;; merci de donner quelques pr&eacute;cisions&nbsp;:</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
 &agrave; plusieurs ventes simultan&eacute;ment&nbsp;?</h2>
  <fieldset>
    <ul>
      <li>
        Pr&eacute;sentation<br />
        <input class="bouton" name="question5a" type="radio" value="1"
<?php if ($question5a==1) echo ' checked="checked"'; else echo ''; ?> />
<label>Tr&egrave;s satisfait</label>
        <input class="bouton" name="question5a" type="radio" value="2"
<?php if ($question5a==2) echo ' checked="checked"'; else echo ''; ?> />
<label>Plut&ocirc;t satisfait</label>
        <input class="bouton" name="question5a" type="radio" value="3"
<?php if ($question5a==3) echo ' checked="checked"'; else echo ''; ?> />
<label>Plut&ocirc;t insatisfait</label>
        <input class="bouton" name="question5a" type="radio" value="4"
<?php if ($question5a==4) echo ' checked="checked"'; else echo ''; ?> />
<label>Tr&egrave;s insatisfait</label>
      </li>
      <li>
        Clart&eacute;<br />
        <input class="bouton" name="question5b" type="radio" value="1"
<?php if ($question5b==1) echo ' checked="checked"'; else echo ''; ?> />
<label>Tr&egrave;s satisfait</label>
        <input class="bouton" name="question5b" type="radio" value="2"
<?php if ($question5b==2) echo ' checked="checked"'; else echo ''; ?> />
<label>Plut&ocirc;t satisfait</label>
        <input class="bouton" name="question5b" type="radio" value="3"
<?php if ($question5b==3) echo ' checked="checked"'; else echo ''; ?> />
<label>Plut&ocirc;t insatisfait</label>
        <input class="bouton" name="question5b" type="radio" value="4"
<?php if ($question5b==4) echo ' checked="checked"'; else echo ''; ?> />
<label>Tr&egrave;s insatisfait</label>
      </li>
      <li>
        Facilit&eacute; d'utilisation<br />
        <input class="bouton" name="question5c" type="radio" value="1"
<?php if ($question5c==1) echo ' checked="checked"'; else echo ''; ?> />
<label>Tr&egrave;s satisfait</label>
        <input class="bouton" name="question5c" type="radio" value="2"
<?php if ($question5c==2) echo ' checked="checked"'; else echo ''; ?> />
<label>Plut&ocirc;t satisfait</label>
        <input class="bouton" name="question5c" type="radio" value="3"
<?php if ($question5c==3) echo ' checked="checked"'; else echo ''; ?> />
<label>Plut&ocirc;t insatisfait</label>
        <input class="bouton" name="question5c" type="radio" value="4"
<?php if ($question5c==4) echo ' checked="checked"'; else echo ''; ?> />
<label>Tr&egrave;s insatisfait</label>
      </li>
    </ul>
  </fieldset>
  <h2>6. Pr&eacute;f&eacute;reriez-vous recevoir une invitation par vente,
 comme c'&eacute;tait le cas auparavant&nbsp;?</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&nbsp;; merci de pr&eacute;ciser pourquoi en quelques mots&nbsp;:</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&eacute;ponses" />
  </p>
</form>
<?php 
  }
  // Affichage du dernier formulaire
  else{
    if (isset($courriel) && !empty($courriel)){
?>
<p>Merci pour votre r&eacute;ponse.</p>
<p>Le questionnaire s'arr&ecirc;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&eacute;pondre &agrave; notre enqu&ecirc;te.</p>
<p>En participant &agrave; 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]=>)".

Posté : 13 nov. 2006, 13:27
par Ryle
Ce serait sympa de penser à nous et d'essayer d'épurer un peu le code à l'endroit qui pose problème, parce que honnêtement pour rentrer là dedans...

Si j'ai bien compris, ton soucis est de tester si question4a est non vide lorsque question4 est égal à 3 ? Donc en dégageant tout le reste du code pour y voir plus clair et comprendre comment ça fonctionne en commentant tout ça :
// récupération du champ texte
$question4a=(isset($_POST['question4a']))? $_POST['question4a']: ''; 

// si q4==3
if (isset($_POST['question4']) && is_numeric($_POST['question4']) && $_POST['question4']==3){ 
  // si q4a n'est pas vide
  if (!empty($question4a)) 
    $question4=$_POST['question4'].'-'.$question4a; // concatene (donc != 3)
  else 
    $question4=''; // met à vide (donc != 3)
} 
else{ // sinon (q4!=3) q4 prend sa valeur ou est vide (donc != 3)
  $question4=(isset($_POST['question4']) && is_numeric($_POST['question4']))? $_POST['question4']: ''; 
} 

// Donc en gros à partir d'ici q4 n'est plus égal à 3 .... ce serait pas de là que vient ton problème ?

// ...

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)){ 

      // Ce cas là est il encore possible ??? Il n'y aura donc aucun test sur la chaine q4a .... :)
      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']; 
    } 
  } 
Je pense que des noms de champs plus explicites rendraient ton code plus facile à comprendre à et corriger/maintenir/faire évoluer : $question4Radio et $question4Texte par exemple

Tu peux également virer tout les else inutile... si tu ne fais rien dans le else, ça ne sert à rien de le préciser :) (genre les radios où tu écris une chaine vide)
<?php if ($question6==1) echo ' checked="checked"'; else echo ''; ?>
C'est pas grand chose, mais ça soulage ton code, sa lisibilité, et la facilité avec laquelle tu feras les modifications dans 6 mois quand on te demanderas de faire une évol ;)

A ce propos, je te recommande vivement de commenter ton code si tu ne veux pas passer des heures à essayer de comprendre comment ça fonctionne et pourquoi ça a été fait ainsi :)

Posté : 13 nov. 2006, 13:59
par Victor BRITO
Salut!

J'ai procédé aux modifications suivantes.
<?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']: '';
$question4=(isset($_POST['question4']) && is_numeric($_POST['question4']))? $_POST['question4']: '';
$question4a=(isset($_POST['question4a']))? $_POST['question4a']: '';
$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']: '';
$question6=(isset($_POST['question6']) && is_numeric($_POST['question6']))? $_POST['question6']: '';
$question6a=(isset($_POST['question6a']))? $_POST['question6a']: '';
$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 (!isset($question4a) || empty($question4a)){
        if ($question4==3) $etape=2; else $etape=$_POST['etape'];
      }
      if (!isset($question6a) || empty($question6a)){
        if ($question6==1) $etape=2; else $etape=$_POST['etape'];
      }
      else $etape=$_POST['etape'];
    }
  }
}
?>
Malgré cela, non seulement les zones de texte vides passent, mais le moindre bouton non coché passe aussi (y compris à la question 1). :oops:

Posté : 13 nov. 2006, 17:17
par Victor BRITO
Re!

J'ai retravaillé mon script en virant les variables d'étape.
<?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']: '';
$question4=(isset($_POST['question4']) && is_numeric($_POST['question4']))? $_POST['question4']: '';
$question4a=(isset($_POST['question4a']))? $_POST['question4a']: '';
$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']: '';
$question6=(isset($_POST['question6']) && is_numeric($_POST['question6']))? $_POST['question6']: '';
$question6a=(isset($_POST['question6a']))? $_POST['question6a']: '';
$courriel=(isset($_POST['courriel']) &&
 preg_match("/^([-_.0-9a-z]+)@([-_.0-9a-z]+)\.([a-z]{2,3})$/", $_POST['courriel']))?
 str_replace('@', '*at*', $_POST['courriel']): '';
?>
<!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&ecirc;te vente priv&eacute;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 (!isset($question1) || empty($question1)){
?>
<!-- Le premier formulaire sans le champ caché "etape" -->
<?php 
}
else{
  $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)
&& (($question4==3 && isset($question4a) && !empty($question4a)) xor ($question4!=3 && (!isset($question4a) || empty($question4a))))
 && (($question6==2 && isset($question6a) && !empty($question6a)) xor ($question6!=2 && (!isset($question6a) || empty($question6a))))){
      $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&eacute;pondre &agrave; notre enqu&ecirc;te.</p>
<p>En participant &agrave; ce sondage, etc.</p>
<?php 
      }
      // Affichage du dernier formulaire
      else{
?>
<!-- Le dernier formulaire avec tous les champs cachés, sauf "etape" -->
<?php 
      }
    }
    // Affichage du deuxième formulaire
    else{
?>
<!-- Le deuxième formulaire sans le champ caché "etape" -->
<?php 
    }
  }
  else{
    if (isset($courriel) && !empty($courriel)){
?>
<p>Merci pour votre r&eacute;ponse.</p>
<p>Le questionnaire s'arr&ecirc;te ici pour vous, etc.</p>
<?php 
    }
    // Affichage du dernier formulaire
    else{
?>
<!-- Le dernier formulaire avec pour seul champ caché "question1" -->
<?php 
    }
  }
}
?>
</body>
</html>
Et les mailles du filet ont horreur de tous les vides, comme convenu. 8)

Posté : 13 nov. 2006, 17:53
par zeus
Victor, j'ai commencé à modifier tes post car, comme tu as dû le remarquer, ils explosent la mise en forme.

Plutôt que de faire une bétise, je te demande de modifier ton 1er post en ne laissant que le code nécessaire et en sautant quelques lignes de temps en temps stp ;)

Posté : 13 nov. 2006, 18:21
par Victor BRITO
Salut!
Victor, j'ai commencé à modifier tes post car, comme tu as dû le remarquer, ils explosent la mise en forme.

Plutôt que de faire une bétise, je te demande de modifier ton 1er post en ne laissant que le code nécessaire et en sautant quelques lignes de temps en temps stp ;)
Est-ce mieux ainsi? :oops:

Une suggestion: est-il possible d'appliquer la propriété CSS overflow, accompagnée d'une largeur fixe, au style phpBB utilisé ici lorsque du code est reproduit en dur? Ça limiterait les dégâts en matière de mise en forme. :wink:

Posté : 13 nov. 2006, 18:41
par zeus
Carrément mieux, merci :pouce:

Pour ta suggestion, elle est ajoutée à la TODO ... :oops:
M'est avis qu'elle sera appliquée d'ici quelques mois :-*

Posté : 14 nov. 2006, 12:31
par @rthur
Pour ta suggestion, elle est ajoutée à la TODO ... :oops:
M'est avis qu'elle sera appliquée d'ici quelques mois :-*
Mauvaise langue :P

Posté : 14 nov. 2006, 15:47
par zeus
Maieuh ...
Je voudrais d'ailleurs dire que j'ai bien poussé pour que cette modif soit faite ;)

Merci Hubert