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
Форумы портала PHP.SU :: Версия для печати :: работа с базой mysql
Форумы портала PHP.SU » » Вопросы новичков » работа с базой mysql

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

1. cooperok - 08 Ноября, 2011 - 09:51:56 - перейти к сообщению
Здраствуйте,

Подскажите
как можно сделать что бы пользователю выводились задания только те которые он не выполнял,
тоесть когда он выполнил задание надо что бы в таблицу пользователей в поле vtasks
добавилось ID задания, и после этого когда он на сайте смотрит таблицу с заданиями то это задание больше не выводилось для него


Нужно бы узнать как сделать перебор
тоесть вывожу задания
SELECT * FROM table WHERE
вот после WHERE
что такое нужно дописать что бы он переберал из поля vtasks
теость если он выполнил первые 2 задания то в этом поле 1,2 вот надо сделать что бы именно обе цыфры переберал тоесть вывести все кроме задания равные ID 1 и ID 2

или примерно так
(Добавление)
Сделал вот так
SELECT * FROM banner WHERE id!=$vtask
сейчас выводил как надо но как сделать что бы в поле vtask в таблице пользователей можно было добавлять несколько значений, и какой там тип выбрать что бы перебор был.
тоесть после выполнения задания сюда дописывается ID а при выводе перебирать должен как то)
2. snikers987 - 08 Ноября, 2011 - 10:50:04 - перейти к сообщению
задания выполняются в определенном порядке или как?
3. cooperok - 08 Ноября, 2011 - 10:51:14 - перейти к сообщению
Нет, могут по разному,
тоесть пользователь смотрит цену допустим на задание, и выберает какое выполнять какое нет
4. snikers987 - 08 Ноября, 2011 - 11:02:52 - перейти к сообщению
Я бы сделал 3 таблицами :
первая: users
uid
login
и т.д

вторая: quest
qid
qbody
и т.д.

третья: result
rid
uid
qid
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT quest.qid, quest.qbody, result.qid FROM `quest`
  3. LEFT JOIN `result` ON quest.qid!= result.qid
  4. WHERE result.uid = 1234


В запросе не уверен, но както так
5. cooperok - 08 Ноября, 2011 - 11:13:04 - перейти к сообщению
snikers987
я плохо разбераюсь)
но будет ли это работать тоесть у меня не 1 пользватель будет который выполняет задания
(Добавление)
сейчас попробую сделать так)
(Добавление)
я так понимаю 3тья таблица для того что бы проверять выполнено задание или нет
если выполняет ползователь у которого ID 18 то он в 3тью таблицу заносится в поле rid
а в поле uid заносится ID задания
а в qid что должно заносится? или тут без разницы?
тоесть если выполнил то ставится 1

а потом при выводе происходить просмотр если в таблицы перед выводом если стоит 1 то не выводится задание если пусто то тогда выводится?

я вот сделал вот так
вроде выводится еденица




CODE (htmlphp):
скопировать код в буфер обмена
  1. $resultat = mysql_query("SELECT * FROM users WHERE id=18");
  2. $array = mysql_fetch_array($resultat);
  3. $vtask=$array['id'];
  4.  
  5. $resultat2 = mysql_query("SELECT * FROM banner WHERE id=3");
  6. $array2 = mysql_fetch_array($resultat2);
  7. $vtask2=$array2['id'];
  8.  
  9.  
  10. $resultat3 = mysql_query("SELECT * FROM result WHERE rid='$vtask' and uid='$vtask2'");
  11. $array3 = mysql_fetch_array($resultat3);
  12. $vtask3=$array3['qid'];
  13. echo $vtask3;


надо будет сделать в цыкл это все?

или можно упростить это все?
я очень плохо разбераюсь, все методом тыка делаю.
6. snikers987 - 08 Ноября, 2011 - 12:06:14 - перейти к сообщению
Цитата:
если выполняет ползователь у которого ID 18 то он в 3тью таблицу заносится в поле rid
а в поле uid заносится ID задания
а в qid что должно заносится? или тут без разницы?



клмн..
первая: users
uid - ID пльзователя auto increment
login
и т.д

вторая: quest
qid - ID задания auto increment
qbody
и т.д.

третья: result
rid -ID результата auto increment
uid - ID пользователя который выполнил
qid -ID задания которое выполнил uid
7. cooperok - 08 Ноября, 2011 - 12:26:49 - перейти к сообщению
snikers987
я незнаю)
я хочу сделать через while
тоесть если пользователь выполняет задание то в 3тью таблицу заносится ID auto increment
потом uid пользователя и qid задания
а когда задания выводятся в аккаунте
то проверка происходит
ищется пользователь в uid и qid задания если в таблице ID больше 1 тоесть он же автоматом увеличивается если чел выполнял задание то это задание не выводить
только те задания которые не занесены в 3тью таблицу
(Добавление)
вот так вот работает, выводит те задания которые не выполнял

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $resultat = mysql_query("SELECT * FROM zadania");
  3. $array = mysql_fetch_array($resultat);
  4. do
  5. {
  6. $ssa=$array['id'];
  7. $resultat3 = mysql_query("SELECT * FROM result WHERE uid='$vtask' and qid='$ssa'");
  8. $array3 = mysql_fetch_array($resultat3);
  9. $vtask3=$array3['rid'];
  10. if ($vtask3 < 1)//Если число больше 5
  11. {
  12. echo $array['id'].$array['name']."<br>";
  13.  
  14. }
  15.  
  16.  
  17. }
  18. while($array = mysql_fetch_array($resultat));
  19. ?>

вроде бы разобрался с этой проблемой
буду дальше сайт с заданиями
8. snikers987 - 08 Ноября, 2011 - 12:54:54 - перейти к сообщению
мда..

И вообще что за имена переменных vtask1 vtask2? Тебе самому не сложно понять что в какой переменной?

Я тебе написал как организовать таблицы, написал запрос на выборку, а ты все велосипед строиш..

UPD.

if ($vtask3 < 1)//Если число больше 5
тут вообщето меньше одного, а не больше пяти

 

Powered by ExBB FM 1.0 RC1