Subversion Repositories eFlore/Applications.del

Rev

Rev 1472 | Rev 1603 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1472 Rev 1564
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
	/*-------------------------------------------------------------------------------