Помогите в создании боя [PHP]
|
|
Fusix | Дата: Вторник, 27 Июля 2010, 11:37 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Итак, у меня есть JS скрипт боя, который получает данные с PHP - обработчика и по ним рисует игроков на карте. С этим и проблема. Мне необходимо сделать, чтобы для каждого игрока PHP скрипт создавал вот такой текст: Code '331256': // - Это ID игрока {'hp':'482','hp_max':'575','class_id':'110','race':'0','model':'1','login':'Ополченец','level':'9','rating':'295', 'army':'1','acti ve ':'1','fishka_type':'11','complete':'1','pid':'331256','x':'1','y':'2','x1':'1','y1':'2','killed':'0'}, // - Это данные И записывался в переменную.
Сообщение отредактировал Fusix - Вторник, 27 Июля 2010, 11:40 |
|
| |
lvovand | Дата: Вторник, 27 Июля 2010, 12:57 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| Fusix, в чем конкретно проблема? если правильно понял, в PHP это будет примерно так Code <?php
//получаем данные из таблицы по id $sql = "SELECT * FROM `users` WHERE `id` = '331256' LIMIT 1"; $res = mysql_query($sql); $row = mysql_fetch_array($res);
$person= "{'hp' : '".$row['hp']."','hp_max' : '".$row['hp_max']."' }"; // ну и так далее по всем полям ?> в переменной на джаваскрипте текст можешь присвоить Code <script type='text/javascript'>var person = <? echo $person;?> </script>
Разработка и продвижение сайтов. Дизайн
|
|
| |
Fusix | Дата: Вторник, 27 Июля 2010, 13:18 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Quote (lvovand) Fusix, в чем конкретно проблема? если правильно понял, в PHP это будет примерно так Просто мне нужно выполнять Code $sql = "SELECT * FROM `users` WHERE `id` = '331256' LIMIT 1"; $res = mysql_query($sql); $row = mysql_fetch_array($res);
$person= "{'hp' : '".$row['hp']."','hp_max' : '".$row['hp_max']."' }"; // ну и так далее по всем полям Для каждого участника боя. Они у меня указаны в виде ID в таблице battles: Code id int(100) Нет auto_increment pl1 varchar(100) cp1251_general_ci Да NULL pl2 varchar(100) cp1251_general_ci Да NULL pl3 varchar(100) cp1251_general_ci Да NULL pl4 varchar(100) cp1251_general_ci Да NULL pl5 varchar(100) cp1251_general_ci Да NULL pl6 varchar(100) cp1251_general_ci Да NULL pl7 varchar(100) cp1251_general_ci Да NULL pl8 varchar(100) cp1251_general_ci Да NULL pl9 varchar(100) cp1251_general_ci Да NULL pl10 varchar(100) cp1251_general_ci Да NULL pl11 varchar(100) cp1251_general_ci Да NULL pl12 varchar(100) cp1251_general_ci Да NULL pl13 varchar(100) cp1251_general_ci Да NULL pl14 varchar(100) cp1251_general_ci Да NULL pl15 varchar(100) cp1251_general_ci Да NULL pl16 varchar(100) cp1251_general_ci Да NULL pl17 varchar(100) cp1251_general_ci Да NULL pl18 varchar(100) cp1251_general_ci Да NULL pl19 varchar(100) cp1251_general_ci Да NULL pl20 varchar(100) cp1251_general_ci Да NULL pl21 varchar(100) cp1251_general_ci Да NULL pl22 varchar(100) cp1251_general_ci Да NULL pl23 varchar(100) cp1251_general_ci Да NULL pl24 varchar(100) cp1251_general_ci Да NULL pl25 varchar(100) cp1251_general_ci Да NULL Нужно пройтись по всем pl и получить для них данные. Цикл для этого подойдет?
|
|
| |
lvovand | Дата: Вторник, 27 Июля 2010, 13:30 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| если по всем то в php делаешь так Code $sql = "SELECT * FROM `users` WHERE 1"; //пробегает по всем игрокам, отфильтруй если нужно тех кто в бою участвует $res = mysql_query($sql); while($row = mysql_fetch_array($res)){ $person[]= "{'hp' : '".$row['hp']."','hp_max' : '".$row['hp_max']."' }"; // ну и так далее по всем полям } тогда $person - будет массив с отобранными игроками
Разработка и продвижение сайтов. Дизайн
|
|
| |
Fusix | Дата: Вторник, 27 Июля 2010, 13:44 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Quote (lvovand) если по всем то в php делаешь так Code $sql = "SELECT * FROM `users` WHERE 1"; //пробегает по всем игрокам, отфильтруй если нужно тех кто в бою участвует $res = mysql_query($sql); while($row = mysql_fetch_array($res)){ $person[]= "{'hp' : '".$row['hp']."','hp_max' : '".$row['hp_max']."' }"; // ну и так далее по всем полям } тогда $person - будет массив с отобранными игроками Ууу это долго... база огромная ведь... Может мне циклом? Пробегать по строке боя в таблице бетл и циклом выполнять получение данных до того момента, как цикл выполнится столько раз, сколько игроков в той битве.
|
|
| |
lvovand | Дата: Вторник, 27 Июля 2010, 13:51 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| так все равно придется запросы к базе выполнять, просто циклом будешь по одному запросу базу дергать дергать, а можно сразу данные получить. Чтобы не по всей базе бежал а только по игрокам в бою $sql = "SELECT * FROM `users` WHERE 1 AND `id` IN (SELECT `id` FROM `battles`) "; //пробежит по игрокам, которые есть в таблице battles $res = mysql_query($sql); while($row = mysql_fetch_array($res)){ $person[]= "{'hp' : '".$row['hp']."','hp_max' : '".$row['hp_max']."' }"; // ну и так далее по всем полям }
Разработка и продвижение сайтов. Дизайн
|
|
| |
Fusix | Дата: Вторник, 27 Июля 2010, 14:10 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Quote так все равно придется запросы к базе выполнять, просто циклом будешь по одному запросу базу дергать дергать, а можно сразу данные получить. Чтобы не по всей базе бежал а только по игрокам в бою $sql = "SELECT * FROM `users` WHERE 1 AND `id` IN (SELECT `id` FROM `battles`) "; //пробежит по игрокам, которые есть в таблице battles $res = mysql_query($sql); while($row = mysql_fetch_array($res)){ $person[]= "{'hp' : '".$row['hp']."','hp_max' : '".$row['hp_max']."' }"; // ну и так далее по всем полям } А скажи, как мне вывести $person?
|
|
| |
lvovand | Дата: Вторник, 27 Июля 2010, 14:18 | Сообщение # 8 |
старожил
Сейчас нет на сайте
| если по последнему посту, то $person у тебя массив из строк, в php можешь обратиться к нему echo $person[0]; //вывод первой строки echo $person[1]; //вывод второй строки ну и т.д. если все значения вывести, то можно циклом for($i=0; $i<count($person); $i++){ echo $person[$i]; } если вывести массив просто для дебага, то var_dump($person); //выведет полную инфу о массиве но ты вроде хотел в javascript это дело выводить или уже не требуется?
Разработка и продвижение сайтов. Дизайн
|
|
| |
Fusix | Дата: Вторник, 27 Июля 2010, 14:22 | Сообщение # 9 |
был не раз
Сейчас нет на сайте
| Quote (lvovand) если по последнему посту, то $person у тебя массив из строк, в php можешь обратиться к нему echo $person[0]; //вывод первой строки echo $person[1]; //вывод второй строки ну и т.д. если все значения вывести, то можно циклом for($i=0; $i<count($person); $i++){ echo $person[$i]; } если вывести массив просто для дебага, то var_dump($person); //выведет полную инфу о массиве но ты вроде хотел в javascript это дело выводить или уже не требуется? я передаю данные в дж по другому... с помощью Code req.init('POST', 'battle_parser.php', true, 'gameBattle'); Парсер надо сделать...
|
|
| |
lvovand | Дата: Вторник, 27 Июля 2010, 14:38 | Сообщение # 10 |
старожил
Сейчас нет на сайте
| я правильно понял, что аяксом вызываешь battle_parser.php? тогда в battle_parser.php //обработку ошибок и обращение к базе пропускаю for($i=0; $i<count($person); $i++){ echo $person[$i].";"; //";" добавил для разделения строк } а в javascript есть аналоги explode и implode предположим загрузил данные в переменную text, тогда text.split(';'); //даст тебе массив из строк $person
Разработка и продвижение сайтов. Дизайн
|
|
| |
Locksley | Дата: Среда, 22 Июня 2011, 13:22 | Сообщение # 11 |
почетный гость
Сейчас нет на сайте
| я что то подобное реализовывал, пиши в лс, скину код
умных ответов счетное множество, глупых вопросов - континуум
|
|
| |