Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Создания опроса

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Anton63
Отправлено: 13 Июля, 2009 - 10:50:36
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Июль 2009  


Помог: 0 раз(а)




Задумка, в общем, такая:
Это чё то типо ТОР10. например 10 самых богатых людей, 10 самых быстрых машин и т.д. Есть форма для заполнения(Её заполнять могут только зарегистрированные пользователи, значит нужно прослеживать сессию пользователя и данные о нике пользователя берутся из таблицы users в БД).

Пример(форма):
Автор: Billo
Заголовок: Самые большие города мира
Ответ 1: Москва
Ответ 2: Лондон
Ответ 3: Нью-Йорк
Ответ 4: Самара
Ответ 5: Париж
"Отправить"


Так вот... после заполнения формы и нажатия на кнопку "Отправить" Этот опрос добавляется в БД со множеством подобных опросов(В каждом опросе 5 вариантов ответа)
Незарегистрированный пользователь может смотреть только результаты.

Результат:
Самые большие города мира
Автор: Billo; 26.05.2009
1. Москва
2. Лондон
3. Нью-Йорк
4. Самара
5. Париж
Комментарии

А администратор сайта видит это так(R- редактировать X-удалить):

Админка:
Самые большие города мира R X
Автор: Billo; 26.05.2009
1. Москва R
2. Лондон R
3. Нью-Йорк R
4. Самара R
5. Париж R
Комментарии R X

Значит для админа сайта тоже надо проследить сессию и выдать результат опроса с возможностью его редактирования.
Подскажите пожалуйста как структурировать БД для этой задачи.
В частности меня интересует какие таблицы нужно создать, как их связать и какие поля там должны быть... И как лучше хранить данные с ответами в таблице(Ответ 1, Ответ 2...Ответ 5)? При условии, что их потом надо будет редактировать... и оптимизировать под поиск по сайту...

Я думаю что то таблица должна быть примерно такая:

create table answers (
id int(10) unsigned NOT NULL auto_increment,
nick varchar(50) NOT NULL,
datetime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
head varchar(150),
answer1 varchar(50),
answer2 varchar(50),
answer3 varchar(50),
answer4 varchar(50),
answer5 varchar(50),
comment varchar(300)?
primary key (id)
);

id - счётчик, nick берётся из таблицы users, datetime - дата и время(вставляется автоматически при создании опроса), answer - это ответы, comment - это комментарии(они берутся из таблицы comments)...

Вот... значит нам нужны таблицы answers, users и comments... Ещё вопрос... как их связать?...И ещё вопрос... Как должна выглядеть таблица comments?
(Добавление)
Я создам три таблицы...
Первая с вопросом и ответами...т.к. создатель опроса сам заполняет все 5 полей с ответами(все поля обязательны для заполнения).
create table answers (
id_ans int(10) unsigned NOT NULL auto_increment,
nick varchar(50) NOT NULL,
date date NOT NULL,
head varchar(150) NOT NULL,,
answer1 varchar(50) NOT NULL,,
answer2 varchar(50) NOT NULL,,
answer3 varchar(50) NOT NULL,,
answer4 varchar(50) NOT NULL,,
answer5 varchar(50) NOT NULL,,
primary key (id_ans)
);

Вторая таблица с комментариями... в этой таблице будут храниться комментарии ко всем опросам. Т.е. связываться таблицы будут через id_ans. При оставлении комментария будет присваиваться id_ans такой же как и в таблице answers. А при запросе комментариев к опросу будут выбираться все комментарии с одинаковым id_ans.
create table comments (
id_com int(10) unsigned NOT NULL auto_increment,
nick varchar(50) NOT NULL,
date date NOT NULL,
comment varchar(300) NOT NULL,
id_ans int(10),
primary key (id_com)
);


Как вам такой вариант???

И ещё вопрос... при авторизации пользователя для него создаётся сессия... и при создании опроса или комментария можно ли из этой сессии вытянуть его ник для полей nick в таблицах?

Третья таблица - это users... в ней будут храниться зарегистрированные пользователи... но это уже из другой оперы...

(Отредактировано автором: 13 Июля, 2009 - 11:03:09)

 
 Top
Anton63
Отправлено: 13 Июля, 2009 - 12:55:23
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Июль 2009  


Помог: 0 раз(а)




Никто со структурой БД не поможет что ли? Однако
 
 Top
SAD Модератор
Отправлено: 13 Июля, 2009 - 14:06:42
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




Anton63 пишет:
Никто со структурой БД не поможет что ли? Однако

можно вытянуть, но тебе ник и все остальное нужно в сессии хранить
$_SESSION['...']=$nick;
и вытягивать также
база вроде норм, сам справишься

(Отредактировано автором: 13 Июля, 2009 - 14:07:30)

 
 Top
Viper
Отправлено: 13 Июля, 2009 - 14:43:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




только как мне кажется поле comment типа varchar в данном случае не есть гуд. у вас либо лимит должен быть меньше, либо если комментарии будут большей длинны то лучше text или blob


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Anton63
Отправлено: 14 Июля, 2009 - 08:19:28
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Июль 2009  


Помог: 0 раз(а)




Viper пишет:
только как мне кажется поле comment типа varchar в данном случае не есть гуд. у вас либо лимит должен быть меньше, либо если комментарии будут большей длинны то лучше text или blob


Спасибо, учту...

SAD пишет:
можно вытянуть, но тебе ник и все остальное нужно в сессии хранить
$_SESSION['...']=$nick;
и вытягивать также
база вроде норм, сам справишься


Ага, с сессиями я вроде уже разобрался... насчёт базы порадовал... буду справляться... Хорошо
(Добавление)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $date = date(Y);
  3. echo "
  4. <html>
  5. <head>
  6. </head>
  7. <body>
  8. <form method='POST' action='work_registration.php'>
  9. <table>
  10. <tr><td>Дата рождения:</td><td>
  11. <select name='birthday'>
  12. ";
  13. for($i=$date-60; $i<=$date; $i++){
  14. echo "<option value='.$i.'>";
  15. }
  16. echo "
  17. </td></tr>
  18. </table>
  19. </form>
  20. </body>
  21. </html>
  22. ";
  23. ?>


Почему в не работает выпадающий список? В качестве результата, в выпадающем списке он мне выдаёт ";} echo "
 
 Top
Viper
Отправлено: 14 Июля, 2009 - 10:29:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Anton63 пишет:
Почему в не работает выпадающий список? В качестве результата, в выпадающем списке он мне выдаёт ";} echo "


ну у вас для начала не закрыт список

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $date = date(Y);
  3. echo '<html>
  4.         <head></head>
  5.         <body>
  6.         <form method="POST" action="work_registration.php">
  7.         <table>
  8.                 <tr>
  9.                         <td>Дата рождения:</td>
  10.                         <td><select name="birthday">
  11.                         <option selected value="'.$value.'">текущее значение</option>';
  12.                         for ($i=$date-60; $i<=$date; $i++) {
  13.                                 echo '<option value="'.$i.'">'.$date.'</option>';
  14.                         }
  15.                         echo '</select></td>
  16.                 </tr>
  17.         </table>
  18.         </form>
  19.         </body>
  20. </html>';
  21. ?>


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB