Intereting Posts

Как использовать array_count_values ​​() и mySQL для подсчета значения

У меня есть таблица базы данных 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>"; }