У меня есть таблица базы данных mySQL со столбцом, который соответствует объявленному изображению. Значения: 001.jpg – 013.jpg. Мне нужно выяснить, сколько раз за каждый голос проголосовали. Я попробовал следующий код и получил кол-во 002.jpg, но ни одно из других изображений. На данный момент по меньшей мере 25 голосов. Вот код, который я пытался использовать:
<?php $db = mysql_connect("xxx", "xxx", "xxx"); mysql_select_db("club",$db); $q = mysql_query("SELECT image FROM january"); $array = mysql_fetch_array($q); $results = array_count_values($array); for each while (list ($key,$val) = each($results)) { echo "$key -> $val <br>"; } ?>
Я понимаю, что array_count_values () – это способ подсчета появления каждого голоса, но все примеры, которые я могу найти, не показывают, как связать это с mySQL. Любая помощь будет оценена!
Вам нужны GROUP BY и COUNT ():
SELECT image, COUNT(*) as votes FROM january GROUP BY image
Это вернет два столбца: 1 для изображения и 1 для количества голосов для этого изображения:
image votes 001.jpg 1 002.jpg 32 ...
Полный код:
$db = mysql_connect("xxx", "xxx", "xxx"); mysql_select_db("club",$db); $q = mysql_query("SELECT image, COUNT(*) as votes FROM january GROUP BY image"); $votes = array(); while ($row = mysql_fetch_assoc($q)) { $votes[$row['image']] = $row['votes']; } // $votes is an array of 'image' => 'votes' foreach($votes as $image => $count) { echo "$image: $count<br>"; }