$t) { if ($t['type'] != 'select' && $t['type'] != 'multiple' && $t['type'] != 'mot') continue; $champs[] = $t; } $r .= "
\n"; // Compter les reponses pour chaque champ de type choix (unique / multiple / mot-cle) foreach ($champs as $t) { // On recompte le nombre total de reponses reelles // car les champs ne sont pas forcement obligatoires $query = "SELECT COUNT(DISTINCT c.id_reponse) AS num ". "FROM spip_reponses AS r LEFT JOIN spip_reponses_champs AS c USING (id_reponse) ". "WHERE r.id_form=$id_form AND r.statut='valide' AND c.champ='".addslashes($t['code'])."'"; $result = spip_query($query); list ($total_reponses) = spip_fetch_array($result,SPIP_NUM); if (!$total_reponses) continue; // Construire la liste des valeurs autorisees pour le champ if ($t['type'] != 'mot') $liste = $t['type_ext']; else { $id_groupe = intval($t['type_ext']['id_groupe']); $query = "SELECT id_mot, titre FROM spip_mots WHERE id_groupe=$id_groupe ORDER BY titre"; $result = spip_query($query); $liste = array(); while ($row = spip_fetch_array($result)) { $id_mot = $row['id_mot']; $titre = $row['titre']; $liste[$id_mot] = $titre; } } // Nombre de reponses pour chaque valeur autorisee $query = "SELECT c.valeur, COUNT(*) AS num ". "FROM spip_reponses AS r LEFT JOIN spip_reponses_champs AS c USING (id_reponse) ". "WHERE r.id_form=$id_form AND r.statut='valide' ". "AND c.champ='".addslashes($t['code'])."' GROUP BY c.valeur"; $result = spip_query($query); $chiffres = array(); // Stocker pour regurgiter dans l'ordre while ($row = spip_fetch_array($result)) { $chiffres[$row['valeur']] = $row['num']; } // Afficher les resultats $r .= "".propre($t['nom'])." :
\n"; $r .= "
"; foreach ($liste as $valeur => $nom) { $r .= "
"; $n = $chiffres[$valeur]; $taux = floor($n * 100.0 / $total_reponses); $r .= "
".typo($nom)."
"; $r .= "
"; $r .= "
$n ($taux %)
"; $r .= "
\n"; } $r .= "
\n"; $r .= "
\n"; } $query = "SELECT COUNT(*) AS num FROM spip_reponses ". "WHERE id_form=$id_form AND statut='valide'"; $result = spip_query($query); list($num) = spip_fetch_array($result,SPIP_NUM); $r .= ""._T("forms:total_votes")." : $num"; $r .= "
\n"; return $r; } function balise_RESULTATS_SONDAGE($p) { $_id_form = champ_sql('id_form', $p); $p->code = "Forms_afficher_reponses_sondage(" . $_id_form . ")"; $p->statut = 'html'; return $p; } /*function boucle_FORMS_dist($id_boucle, &$boucles) { $boucle = &$boucles[$id_boucle]; $id_table = $boucle->id_table; $boucle->from[$id_table] = "spip_forms"; $boucle->hash = ' // CREER les table temporaire forms_champs et forms_champs_choix forms_creer_tables_temporaires_boucles(); '; return calculer_boucle($id_boucle, $boucles); }*/ function forms_valeur($tableserialisee,$cle,$defaut=''){ $t = unserialize($tableserialisee); return isset($t[$cle])?$t[$cle]:$defaut; } ?>