Здравствуйте, Я только начал изучать PHP программирование, и вот столкнулся с такой вот проблемой, мне нужно сделать последовательное обращение к таблицам БД при определенных условиях. Итак, имеется 4 таблицы: userquests(состоит из: usr, quest, status), user_kill (usr, quest, killing, ), quests(id, exp, money, monstrname), users(usr, money, exp,) пользователь $log имя монстра $mob[name] Сначала проверяется, есть ли в таблице "userquests" пользователь у которого status='start', если есть, то читаются значения quest и ищет это значение в таблице "quests", сравнивается значение в поле monstrname с именем убитого монстра ($mob[name]), если значения совпадают, то в таблице из значения поля killing отнимается 1, как только значение killing становится равным 0, то status='complete' и пользователю в таблицу "users" (money, exp)прибавляются значения прописанные в таблице "quests" (exp, money). Как это сделать??? Всю голову сломал уже никак не получается((((
что за база данных .. postgresql..mysql .. query1=Select * from userquests where status='start' не не могу - не зная базы данных запросы написать ерунда если знать на чем писать
Примерно выглядеть это должно вроде как так $requ = mysql_query("SELECT * FROM `userquests` WHERE `usr` = '$log' and `status`='start'"); if(empty($_GET[id])){ While($q = mysql_fetch_array($requ)) { $reqoq = mysql_query("SELECT * FROM `quests` WHERE `id` = '$q[quest]'"); $quest = mysql_fetch_array($reqoq); if ($udata[monstname]=$mob[name]){mysql_query("UPDATE `user_kill` SET `killing`=`killing`-1 WHERE `usr`='$log'");}} $reqk = mysql_query("SELECT * FROM `user_kill` WHERE `usr`='$log'"); $avtok=mysql_num_rows($reqk); if($reqk[killing]<=0){ mysql_query("UPDATE `userquests` SET `status` = 'complete' WHERE `usr` = '$log'"); } знаю что это не правильно. Подскажите, как сделать так, что бы работало))))
ну во первых сразу вижу ошибку на стадии разработки : просто копирую не вникая в подробности ибо тестить все равно не на чем $requ = mysql_query("SELECT * FROM `userquests` WHERE `usr` = '$log' and `status`='start'") or die('Неверный запрос: ' . mysql_error()); if(empty($_GET[id])){ While($q = mysql_fetch_array($requ)) { $reqoq = mysql_query("SELECT * FROM `quests` WHERE `id` = '$q[quest]'") or die('Неверный запрос: ' . mysql_error());; $quest = mysql_fetch_array($reqoq); if ($udata[monstname]=$mob[name]){mysql_query("UPDATE `user_kill` SET `killing`=`killing`-1 WHERE `usr`='$log'") or die('Неверный запрос: ' . mysql_error());}} $reqk = mysql_query("SELECT * FROM `user_kill` WHERE `usr`='$log'") or die('Неверный запрос: ' . mysql_error()); $avtok=mysql_num_rows($reqk); if($reqk[killing]<=0){ mysql_query("UPDATE `userquests` SET `status` = 'complete' WHERE `usr` = '$log'") or die('Неверный запрос: ' . mysql_error()); } плюс когда какието сложные запросы с переменными идут я делаю примерно так $sql='Текст запроса '.$peremennaya; mysql_query ($sql) or die('Неверный запрос: '.sql." ОШИБКА :" . mysql_error())
(((( Ничего не получается, все равно работает не так(((( Кто возьмется мне помочь??? Предоставлю вход по FPT, адрес сайта, данные на вход в базу данных)))
А где ее смотреть эту линку с die?? Добавлено спустя 3 минуты 30 секунд: Неа, все скопировал, вообще страница не открывается, пустой лист отображается безничего и все((( Добавлено спустя 5 минут 9 секунд: Подскажите для начала вот здесь: mysql_query("UPDATE `user_kill` SET `killing`=`killing`-1 WHERE `usr`='$log'"); $reqk = mysql_query("SELECT * FROM `user_kill` WHERE `usr`='$log'") or die('Неверный запрос: ' . mysql_error()); $avtok=mysql_num_rows($reqk); if($reqk[killing]<=0){ mysql_query("UPDATE `userquests` SET `status` = 'complete' WHERE `usr` = '$log'") or die('Неверный запрос: ' . mysql_error()); } Работает, но не так ка нужно, killing отнимается нормально, но даже если он больше 0, все равно status меняется на comlete, как будто он пропускает условие и сразу переименовывает(((( Добавлено спустя 2 минуты 20 секунд: может я условие неправильное ставлю??? if(может сюда что другое писать надо)?
Спасибо)))) Сделал почти все, вот скрипт: $requ = mysql_query("SELECT * FROM `userquests` WHERE `usr` = '$log' and `status`='start'"); $avtou=mysql_num_rows($requ); $qq = mysql_fetch_array($requ); $reqqu = mysql_query("SELECT * FROM `quests` WHERE `id` = '$qq[quest]'"); $avtoqu=mysql_num_rows($reqqu); $qu = mysql_fetch_array($reqqu); if ($qq[status]='start'){if ($qu[monstrname]=$mob[name]){mysql_query("UPDATE `user_kill` SET `killing`=`killing`-1 WHERE `usr`='$log' and `quest`='$qq[quest]'"); $reqk = mysql_query("SELECT * FROM `user_kill` WHERE `usr`='$log' and `quest`='$qq[quest]'") or die('Неверный запрос: ' . mysql_error()); $avtok=mysql_num_rows($reqk); $q = mysql_fetch_array($reqk); if($q[killing]<=0){ mysql_query("UPDATE `userquests` SET `status` = 'complete' WHERE `usr` = '$log' and `quest`='$qq[quest]'") or die('Неверный запрос: ' . mysql_error()); }}} работает почти все, только вот это не работает $qu[monstrname]=$mob[name], опять такое ощущение, что это пропускается, вообще не читается, пробрасывая этот кусок идет выполнение дальше. Мне нужно что бы только слова записанные в этих полях совпадают, только тогда идет выполнение дальше(( Подскажите, что не так? Добавлено спустя 1 минуту 51 секунду: Пробовал так же .... if ($qq[status]='start' and $qu[monstrname]=$mob[name]){..... результат тот же(((
все, заработало, дело было в одном знаке, вместо $qu[monstrname]=$mob[name], нужно было написать $qu[monstrname]==$mob[name]. Странно, но зато понял и научился)) Спасибо всем, кто мне помогал, респект вам)))) Славику в первую очередь)))