Bonjour

Je réalise un questionnaire de manière dynamique:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
elseif ($type == 'radio') {
      echo "<tr bgcolor='F2F2F2'>
	       <td  align='right' width='5%'>$ID</td>
		<td  align='right'>$txt</td><td bgcolor='F2F2F2' >";
		for ($i = 1; $i <= $nbOpt; $i++) {
			echo "<br><input name='$nomVar' type='$type'  value='${"option".$i}' > ${"option".$i}	";
		}
		echo"</td></tr>";
}
Je voudrais vérifier que l'utilisateur a bien répondu à toutes les questions: dans cet exemple, il a oublié la question 6
Nom : probleme.JPG
Affichages : 86
Taille : 18,8 Ko

Bien entendu $_POST ne contient que les 5 boutons radios auxquels l'utilisateur a repondu:
//Array ( [questionnaire] => CE_dya [cedya01] => oui [cedya02] => oui [cedya03] => oui [cedya04] => oui [cedya05] => oui)

Je fais donc une requete sur la DB qui contient les noms de variables à afficher:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
$sqlVarOK = "SELECT nomVar FROM $questionnaire WHERE type = 'radio'";
$rqVarOK = mysql_query($sqlVarOK) or die ('Erreur SQL !<br>'.$sqlVarOK.'<br>'.mysql_error()); 
$result= mysql_fetch_array($rqVarOK);
et j'obtiens les arrays issus de la DB:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
while($rsVar = mysql_fetch_assoc($rqVar)){
//imprime Array ( [nomVar] => cedya01 ) Array ( [nomVar] => cedya02 ) Array ( [nomVar] => cedya03 ) Array ( [nomVar] => cedya04 ) Array ( [nomVar] => cedya05 ) Array ( [nomVar] => cedya06 )
print_r($rqVar));
}
Il faut donc comparer les 2 arrays, plus précisément les valeurs de $_POST avec les clés de l'array issue de la DB mais:

- array_flip ne retourne que les valeurs uniques donc KO, j'ai essayé une fonction array_safe_flip trouvée ici, mais j'ai une concaténation des variables ("cedya01,cedya02..")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
function array_safe_flip (array $arr) {
  $ret = array();
  foreach ($arr as $key => $value) {
     if (isset($ret[$value]))
       $ret[$value] .= ",{$key}";
     else
       $ret[$value] = $key;
  }
  return $ret;
}
- de toute façon, l'array issu de la DB est une suite d'arrays

J'ai pû comparer les clés présentes dans $_POST une à une avec in_array, mais je voudrais comparer les deux arrays globalement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
if $_POST == $array2 {
requetes  create/update/insert qui fonctionnent
Je ne suis vraiment pas sûr d'être dans la bonne voie