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]   

> Описание: Ошибка в выборке данных из MySQL
Avenger
Отправлено: 18 Декабря, 2012 - 13:43:20
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Сент. 2012  


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




На данный момент занимаюсь разработкой браузерной онлайн игры. Написал боевую функцию, а она не работает.
PHP:
скопировать код в буфер обмена
  1.  
  2. include("db.php");
  3. include("rase.php");
  4. $result_r = mysql_query("SELECT * FROM user WHERE user='$_SERVER[PHP_AUTH_USER]'");
  5. if (!$result_r) {exit(mysql_error());}
  6. $user = mysql_fetch_array($result_r);
  7. function battle($mob,$with) {
  8. //--------Выбор-------//
  9. if ($mob == 1) {
  10. $bat_rr = mysql_query("SELECT * FROM mobs WHERE id='$with'");
  11. } else {
  12. $bat_rr = mysql_query("SELECT * FROM user WHERE id='$with'");
  13. }
  14. $batt = mysql_fetch_array($bat_rr);
  15. $use_rr = mysql_query("SELECT * FROM user WHERE id='$user[id]'");
  16. $user = mysql_fetch_array($use_rr);
  17. //--------Конец-Выбора----//
  18.  
  19. //---Вычисления-Атаки-И-Защиты---//
  20. //-----------ВЫ----------//
  21. $class_u_rr = mysql_query("SELECT * FROM class WHERE id='$user[class]'");
  22. $class_u = mysql_fetch_array($class_u_rr);
  23. switch($class_u['atack']) {
  24. case "agi":$user_atack = $user['agi'];break;
  25. case "str":$user_atack = $user['str'];break;
  26. case "intel":$user_atack = $user['intel'];break;
  27. }
  28. if ($user['atack'] > 0) {
  29. $user_atack = $user_atack + $user['atack'];
  30. }
  31. if ($user['atack'] < 0) {
  32. $user_atack = $user_atack - $user['atack'];
  33. }
  34. if ($user['i_arm'] > 0) {
  35. $user_arm = $user['arm'] + $user['i_arm'];
  36. }
  37. if ($user['i_arm'] < 0) {
  38. $user_arm = $user['arm'] - $user['i_arm'];
  39. }
  40. //----------------------//
  41. //---------Враг---------//
  42. if ($mob == 0) {
  43. $class_b_rr = mysql_query("SELECT * FROM class WHERE id='$battle[class]'");
  44. $class_b = mysql_fetch_array($class_b_rr);
  45. switch($class_b['atack']) {
  46. case "agi":$battle_atack = $battle['agi'];break;
  47. case "str":$battle_atack = $battle['str'];break;
  48. case "intel":$battle_atack = $battle['intel'];break;
  49. }
  50. if ($battle['atack'] > 0) {
  51. $battle_atack = $battle_atack + $battle['atack'];
  52. }
  53. if ($battle['atack'] < 0) {
  54. $battle_atack = $battle_atack - $battle['atack'];
  55. }
  56. if ($battle['i_arm'] > 0) {
  57. $battle_arm = $battle['arm'] + $battle['i_arm'];
  58. }
  59. if ($battle['i_arm'] < 0) {
  60. $battle_arm = $battle['arm'] - $battle['i_arm'];
  61. }
  62. }
  63. //----------------------//
  64. //---Конец-Вычеслений-Атаки-И-Защиты//
  65.  
  66. //---ЦикЛ-С-УбавлениеМ-ЗдоровьЯ---//
  67. $battle_log = "";
  68. do
  69. {
  70. //---Первичный-Выбор-И-Вычисления---//
  71. if ($mob == 1) {
  72. $bat_rr = mysql_query("SELECT * FROM mobs WHERE id='$with'");
  73. } else {
  74. $bat_rr = mysql_query("SELECT * FROM user WHERE id='$with'");
  75. }
  76. $batt = mysql_fetch_array($bat_rr);
  77. $use_rr = mysql_query("SELECT * FROM user WHERE user='$user[user]'");
  78. $user = mysql_fetch_array($use_rr);
  79. $hp_n_u = $user['hp_n'] - $atack_s;
  80. $hp_n_b = $batt['hp_n'] - $atack_u;
  81. /////////////////////////Блок врага
  82. if ($mob == 0) {
  83. if ($batt['block'] >= 1) {
  84. $b_b = mt_rand(0,100);
  85. if($b_b >= $batt['block']) {
  86. $blocked_b = 1;
  87. } else {
  88. $blocked_b = 1;
  89. }
  90. }
  91. }
  92. ///////////////////Ваш блок
  93. if ($user['block'] >= 1) {$b_u = mt_rand(0,100); if($b_u >= $user['block']){$blocked_u = 1;} else{$blocked_u = 1;}}
  94. //---Конец-Выбора-И-Вычисления---//
  95.  
  96. //---Убавление-Здоровья-Врагу---//
  97. if ($atack_u >= 1 and $user['hp_n'] >= 1 and $bloced_b == 0) {
  98. if ($mob == 1) {
  99. mysql_query("UPDATE mobs SET hp_n='$hp_n_b' WHERE user='$battle[user]'");
  100. $bat_rr = mysql_query("SELECT * FROM mobs WHERE id='$with'");
  101. }
  102. else {
  103. mysql_query("UPDATE user SET hp_n='$hp_n_b' WHERE user='$battle[user]'");
  104. $bat_rr = mysql_query("SELECT * FROM user WHERE id='$with'");
  105. }
  106. $batt = mysql_fetch_array($bat_rr);
  107. if ($blokced_b == 0) {$battle_log .= "Вы нанесли противнику $atack_u урона (Осталось $batt[hp_n])<br>";}
  108. if ($blocked_b == 1) {$battle_log .= "Противник блокировал Ваш удар (Осталось $user[hp_n])<br>";}
  109. }
  110. //--------Конец-Убавления--------//
  111.  
  112. //---Убавление-Вашего-Здоровья---//
  113. if ($atack_b >= 1 and $batt['hp_n'] >= 1 and $bloced_u == 0) {
  114. mysql_query("UPDATE user SET hp_n='$hp_n_b' WHERE user='$user[user]'");
  115. $use_rr = mysql_query("SELECT * FROM user WHERE id='$user[id]'");
  116. $user = mysql_fetch_array($use_rr);
  117. if ($blokced_u == 0) {$battle_log .= "Противник нанёс Вам $atack_b урона (Осталось $user[hp_n])<br>";}
  118. if ($blocked_u == 1) {$battle_log .= "Вы блокировали удар противника (Осталось $user[hp_n])<br>";}
  119. }
  120. //--------Конец-Убавления--------//
  121. }
  122. while($user['hp_n'] >= 0 and $batt['hp_n'] >= 0);
  123. echo $battle_log;
  124. //---КонеЦ-ЦиклА---//
  125. }
  126.  

Ошибка очень странная, потому что выскакивает при выборке данных, на одной из этих строчек:
PHP:
скопировать код в буфер обмена
  1.  
  2. $bat_rr = mysql_query("SELECT * FROM mobs WHERE id='$with'");
  3. $bat_rr = mysql_query("SELECT * FROM user WHERE id='$with'");
  4. $use_rr = mysql_query("SELECT * FROM user WHERE user='$user[user]'");
  5.  

(Добавление)
Заранее спасибо!
 
 Top
KingStar
Отправлено: 18 Декабря, 2012 - 14:51:57
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


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




JOIN видимо тебе не знаком Хм либо ты с ним не дружишь


-----
То что программа работает, не означает что она написана правильно!
 
 Top
Avenger
Отправлено: 19 Декабря, 2012 - 12:46:58
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Сент. 2012  


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




Нет незнаком, а что это?
 
 Top
Саныч
Отправлено: 19 Декабря, 2012 - 12:53:40
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




О, ужас Огорчение

http://mysql[dot]ru/docs/man/JOIN[dot]html

А вобще вам JOIN-ы пока не нужны. Вам нужно в самое начала мануала по PHP.

PHP:
скопировать код в буфер обмена
  1. if ($mob == 1) {
  2. $bat_rr = mysql_query("SELECT * FROM mobs WHERE id='$with'");
  3. } else {
  4. $bat_rr = mysql_query("SELECT * FROM user WHERE id='$with'");
  5. }
Что за?!. В чем глубокий смысл сего куска кода?..
PHP:
скопировать код в буфер обмена
  1. $bat_rr = mysql_query('SELECT * FROM ' . ($mob ? 'mobs' : 'user') . ' WHERE id=' . $with);
Правда, лучше? И да, числовые значение в кавычки заворочивать не нужно.

(Отредактировано автором: 19 Декабря, 2012 - 12:56:11)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Avenger
Отправлено: 19 Декабря, 2012 - 12:57:58
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Сент. 2012  


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




Есть две таблицы: таблица с мобами и с игроками. В функцию передаётся два параметра: id и переменная $mob. Если выше описанная переменная равна 1, то данные выбираются из таблицы с мобами, а иначе из таблицы с игроками.
(Добавление)
Хм... Как я сразу недогадался...
 
 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