Line 145... |
Line 145... |
145 |
throw new Exception("Impossible de supprimer le vote", RestServeur::HTTP_CODE_ERREUR);
|
145 |
throw new Exception("Impossible de supprimer le vote", RestServeur::HTTP_CODE_ERREUR);
|
146 |
} else {
|
146 |
} else {
|
147 |
self::updateStats($this->bdd, $ressources[0],$infos_vote['ce_protocole']);
|
147 |
self::updateStats($this->bdd, $ressources[0],$infos_vote['ce_protocole']);
|
148 |
}
|
148 |
}
|
149 |
}
|
149 |
}
|
150 |
|
- |
|
151 |
static function updateStats($db, $id_image, $id_proto) {
|
- |
|
152 |
$id_image = intval($id_image);
|
- |
|
153 |
$id_proto = intval($id_proto);
|
- |
|
154 |
if(!$id_image || !$id_proto) throw new Exception("Ne peut mettre à jour les statistiques de vote",
|
- |
|
155 |
RestServeur::HTTP_CODE_ERREUR);
|
- |
|
156 |
/* REPLACE ... SELECT: réinitalise les champs non-défini (MySQL 5.1)
|
- |
|
157 |
REPLACE ... SET a=b, c=d: idem ou plusieurs requête
|
- |
|
158 |
Du coup il faut récupérer les données actuelles mais REPLACE ne le permet pas
|
- |
|
159 |
(http://dev.mysql.com/doc/refman/5.5/en/replace.html :
|
- |
|
160 |
You cannot refer to values from the current row and use them in the new row.)
|
- |
|
161 |
D'où INSERT ... ON DUPLICATE KEY UPDATE. Notons que VALUES() récupère la valeur
|
- |
|
162 |
*associée* au champ passé en paramètre, c'est à dire VALUES(moyenne) == divo.moyenne */
|
- |
|
163 |
$db->requeter(sprintf('INSERT INTO del_image_stat (ce_image, ce_protocole, moyenne, nb_votes)'.
|
- |
|
164 |
' SELECT ce_image, ce_protocole, AVG(valeur) AS moyenne, COUNT(valeur) AS nb_votes'.
|
- |
|
165 |
' FROM del_image_vote divo'.
|
- |
|
166 |
' WHERE ce_image = %d AND ce_protocole = %d GROUP BY ce_image, ce_protocole'.
|
- |
|
167 |
' ON DUPLICATE KEY UPDATE moyenne = VALUES(moyenne), nb_votes = VALUES(nb_votes)',
|
- |
|
168 |
$id_image, $id_proto));
|
- |
|
169 |
|
- |
|
Line -... |
Line 150... |
- |
|
150 |
|
- |
|
151 |
// intermédiaire pour la méthode contenue dans "Commun"
|
- |
|
152 |
static function updateStats($db, $id_image, $id_proto) {
|
170 |
|
153 |
return TelaBotanica\Del\Commun\Stats::updateStats($db, $id_image, $id_proto);
|
Line 171... |
Line 154... |
171 |
}
|
154 |
}
|
172 |
|
155 |
|
173 |
/*-------------------------------------------------------------------------------
|
156 |
/*-------------------------------------------------------------------------------
|