Bonjour
Je réalise un questionnaire de manière dynamique:
Je voudrais vérifier que l'utilisateur a bien répondu à toutes les questions: dans cet exemple, il a oublié la question 6
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>"; }
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:
et j'obtiens les arrays issus de la DB:
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);
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:
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)); }
- 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..")
- de toute façon, l'array issu de la DB est une suite d'arrays
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; }
J'ai pû comparer les clés présentes dans $_POST une à une avec in_array, mais je voudrais comparer les deux arrays globalement:
Je ne suis vraiment pas sûr d'être dans la bonne voie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if $_POST == $array2 { requetes create/update/insert qui fonctionnent
Partager