Создание диаграммы с помощью PHP и MySQL

#php #mysql #database

#php #mysql #База данных

Вопрос:

У меня есть база данных со следующей таблицей:

 id    value
-----------
1     yes
2     no
3     no
4     maybe
  

Я использую простой php для регистрации вариантов, введенных на веб-сайте опроса. Пользователь выбирает переключатель, и он вводится в приведенную выше таблицу. Тем не менее, я хочу сделать это немного более гибким. Я создал простой серверный интерфейс, который позволял пользователю-администратору добавлять или удалять варианты опроса. Что я должен сделать, чтобы показать на интерфейсе количество голосов за каждый отдельный выбор, когда количество вариантов не является постоянным? Я знаю, что мог бы сделать это легко, если бы варианты опроса были статическими, но поскольку серверный пользователь будет изменять варианты, как я могу динамически отображать результаты?

Комментарии:

1. Существует так много способов сделать это… Какого рода «отображения» вы хотите добиться?

2. Я бы подумал о том, чтобы сделать это на интерфейсе с помощью JavaScript. Для этого доступно множество библиотек.

3. Я просто хочу отобразить количество раз, когда пользователь выбирал каждый вариант опроса. Просто простое число.

Ответ №1:

Я не совсем уверен, о чем вы спрашиваете. Это КОЛИЧЕСТВО, которое вы ищете?

Комментарии:

1. Я хочу отобразить количество раз, когда был выбран каждый выбор. Каждый раз, когда выбирается выбор, в базу данных добавляется еще одна строка с этим выбором в качестве значения в столбце «значение». Надеюсь, это имеет больше смысла.

Ответ №2:

Не беспокойтесь о выборе или количестве вариантов, возьмите все голоса / варианты и перебирайте их и добавляйте их в массив без разбора: http://codepad.org/LWPyuTqj

 $total = array();
$votes = array(1=>'yes',2=>'no',3=>'no',4=>'maybe');
foreach($votes as $vote) {
    if (!isset($total[$vote]))
        $total[$vote] = 1; 
    else
        $total[$vote]  = 1;
 }
 print_r($total);
  

Комментарии:

1. Я не знаю, сколько вариантов будет иметь опрос, поэтому я не уверен, как бы я добавил их в массив. Из вашего фрагмента кода видно, что вам нужно знать параметры, чтобы он работал.

2.нет, вы этого совсем не делаете. Параметры не имеют значения. Что это делает, так это подсчитывает вхождение любого термина. Ваши голоса сохраняются следующим образом: 1: yes 2: no etc, мой код перебирает и подсчитывает вхождения слов. Посмотрите этот пример с простым разделением абзаца на ваше расположение: codepad.org/Ud7yn8Vz

Ответ №3:

Я бы рекомендовал Google graph API для этого. Это действительно просто!

http://code.google.com/apis/chart/interactive/docs/gallery/piechart.html

Генерируйте код динамически, используя первый пример по ссылке выше. Сначала выберите значения. Это предполагает наличие идентификатора вопроса, чтобы вы могли связать его с вопросом. В этом случае идентификатор 1.

 $result = mysql_query('SELECT value,COUNT(*) as num FROM choises WHERE question_id = 1  GROUP BY value');
  

Затем с помощью PHP перебираем данные

 $results = array();
while ($row = mysql_fetch_assoc($result)){
    $results[$row['value']] = $num;
}
  

С помощью этого вы можете сгенерировать график:

 echo 'data.addRows('.count($results).');';
$i = 0;
foreach ($results as $value => $num){

    echo'
        data.setValue('.$i.', 0, "'.$value.'");
        data.setValue('.$i.', 1, '.$num.');
    ';
    $i  ;
}