Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Группировка данных на выводе 
:(
    Опции темы
webmaster35
Дата 4.1.2010, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 13.7.2009

Репутация: нет
Всего: нет



Такой вопрос. Есть 2 таблицы, вот их структура :

Код
mysql> select * from polls;
+----+----------+---------------------+
| id | question | pubdate             |
+----+----------+---------------------+
|  1 | Test     | 2009-12-29 14:43:07 |
|  2 | Testing  | 2009-12-29 14:43:11 |
+----+----------+---------------------+
2 rows in set (0.01 sec)

mysql> select * from choice;
+----------+---------+--------+-------+
| choiceid | poll_id | choice | votes |
+----------+---------+--------+-------+
|        1 |       1 | Yes    |    18 |
|        2 |       1 | No     |    15 |
|        3 |       2 | Yes    |    42 |
|        4 |       2 | No     |     7 |
+----------+---------+--------+-------+


Я пытаюсь голосование сделать . Мне нужно вывести вопросы, под каждым вопросом его ответы . Проблема в том, что например есть вопрос, у него 3 варианта, и будет выводится вопрос, под ним вариант, затем опять тот же вопрос с вариантом. То есть 3 раза в результате, а надо чтобы вопрос выводился один, с тремя своими вариантами. Я пробовал в SQL по всякому это сделать, но все равно получается что выводится один вопрос на каждый ответ. Значит по идее надо как то сгрупировать в шаблоне, на выводе. Вот мой код :


Код
      <%-- 
    Document   : Polls
    Created on : 29.12.2009, 14:31:12
    Author     : psixopad
--%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <center>

        <sql:setDataSource
            var="dataSource"
            driver="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/news"
            user="root"
            password="12191992"
            scope="session" />

         <sql:query var="polls" dataSource="${dataSource}" >
              select polls.id, polls.question,
              choice.choiceid, choice.poll_id, choice.choice, choice.votes
             from polls, choice
             where polls.id = choice.poll_id
             order by polls.id desc limit 2
             
             
         </sql:query>
             <form name="Polls" action="VoteAdd.jsp" method="POST">
              

             <c:forEach items="${polls.rows}" var="row">
                 <input type="hidden" name="QuestionId" value=<c:out value="${row.id}" />>
                 <input type="hidden" name="PollId" value=<c:out value="${row.poll_id}" />>
                 
                 <h2> <br> <c:out value="${row.question}" /> </h2>
                 <br> <input type="radio" name="Polls" value=<c:out value="${row.choiceid}"  />>${row.choice}
                 <br> <br> <input type="submit" value="Проголосовать" />
                 
             
            </c:forEach>
              </form> 
             
            
        </center>

    </body>
</html>
 

PM MAIL   Вверх
Nofate
Дата 5.1.2010, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 266
Регистрация: 13.10.2008

Репутация: 2
Всего: 8



Если крайне необходимо получать данные из базы именно в jsp (что сомнительно), то несложный способ группировки - запоминать в конце foreach значение группируемого поля, а в начале foreach сравнивать запомненное значение с очередным из набора данных. Если они различаются - выводим вопрос, после него в любом случае выводим ответ. При определенной сноровке плоскую таблицу так можно распилить на многоуровневое дерево. В вашем случае уровней всего два -  polls и choise, так что делается без проблем.




--------------------
The future is not set, there is no fate but what we make for ourselves.
Нофейтово пространство и смежные области 
PM MAIL WWW ICQ   Вверх
webmaster35
Дата 5.1.2010, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 13.7.2009

Репутация: нет
Всего: нет



Цитата(Nofate @ 5.1.2010,  15:17)
Если крайне необходимо получать данные из базы именно в jsp (что сомнительно), то несложный способ группировки - запоминать в конце foreach значение группируемого поля, а в начале foreach сравнивать запомненное значение с очередным из набора данных. Если они различаются - выводим вопрос, после него в любом случае выводим ответ. При определенной сноровке плоскую таблицу так можно распилить на многоуровневое дерево. В вашем случае уровней всего два -  polls и choise, так что делается без проблем.

Образец кода можно ?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.