Как сделать категорию для каждой уникальной записи в БД? (MySQL / PHP) - PullRequest
0 голосов
/ 02 ноября 2009

У меня запущен конкурс, и для просмотра результатов я набрал этот короткий код:

    date_default_timezone_set('America/New_York');
    echo "Results tallied at ". date("g:i:s A")."<br /><br />";

    $names = array('contestant1','contestant2','contestant3'...); //10 entries
    $plots = array();

    foreach ($names as $name) {
            $query = $this->db->getwhere('friday', array('votedon'=>$name));//CodeIgniter Active Record
            $count = $query->num_rows(); //again, CodeIgniter
            echo "Votes for " . ucfirst($name).": $count <br />";
            $plots[]= $count;
        }
        $total = $this->db->count_all('friday'); //CodeIgniter
        echo "<br />Total votes: $total <br />";
        $highest = 5+max($plots); //make the chart look better
        $url = "http://chart.apis.google.com/chart?cht=bvg&chs=900x300&chbh=40,100,40";
        $par1 = "&chds=0,$highest";
        $par2 = "&chl=". implode("|",$names);
        $par3 = '&chd=t:'. implode(",",$plots);

        $imgsrc = $url.$par1.$par2.$par3;
        echo "<img src='$imgsrc' />";

Таким образом, создается гистограмма, показывающая текущие результаты опроса. Мне было интересно, есть ли изящный способ избежать необходимости вводить каждую уникальную запись, за которую люди могли бы проголосовать. (Строка # 4 $ names = ....) Для этого конкурса в столбце «votedon» есть десять возможных имен записей, но что, если бы это был ввод пользователя, а я хотел показать / подсчитать все возможные результаты.

Как бы выглядел этот код? Я новичок в программировании, и такие идиомы иногда мне сложно придумать самостоятельно. Спасибо!

1 Ответ

1 голос
/ 02 ноября 2009

Запрос довольно прост:

SELECT votedon, count(*) 
FROM VOTING_TABLE
GROUP BY votedon

Теперь, я не знаю, как это вписывается в codeigniter, но MySQL соединение с php не так сложно, и если это действительно что-то особенное, это подойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...