За последние 24 часа нас посетили 64722 программиста и 1747 роботов. Сейчас ищут 873 программиста ...

xml ответ во flash

Тема в разделе "PHP для новичков", создана пользователем Golovorot, 30 мар 2015.

  1. Golovorot

    Golovorot Активный пользователь

    С нами с:
    24 окт 2012
    Сообщения:
    53
    Симпатии:
    0
    Код (Text):
    1. $str = "SELECT users.viewer_id AS attacker,names.name,names.all_sh,battles.status,battles.good_before,battles.bad_before,battles.good_after,battles.bad_after,battles.dgold
    2.     FROM battles
    3.     JOIN last_battles
    4.     JOIN users
    5.     JOIN names
    6.     WHERE
    7. (battles.id = last_battles.b1
    8. OR battles.id = last_battles.b2
    9. OR battles.id = last_battles.b3
    10. OR battles.id = last_battles.b4
    11. OR battles.id = last_battles.b5
    12. OR battles.id = last_battles.b6
    13. OR battles.id = last_battles.b7
    14. OR battles.id = last_battles.b8
    15. OR battles.id = last_battles.b9
    16. OR battles.id = last_battles.b10
    17. OR battles.id = last_battles.b11
    18. OR battles.id = last_battles.b12
    19. OR battles.id = last_battles.b13
    20. OR battles.id = last_battles.b14
    21. OR battles.id = last_battles.b15
    22. OR battles.id = last_battles.b16
    23. OR battles.id = last_battles.b17
    24. OR battles.id = last_battles.b18
    25. OR battles.id = last_battles.b19
    26. OR battles.id = last_battles.b20
    27. )
    28. AND battles.attacker = names.id
    29. AND battles.attacker = users.id
    30. AND last_battles.id = $id
    31.  
    32. ";
    33.     $req = mysql_query($str, $db);
    34.     if (!$req) exit ("req=false&error=mysql_error&s=1");
    35.     $xml = "<xml>";
    36.     while ($row = mysql_fetch_assoc($req)) {
    37.         $xml .= "\n\t<battle>";
    38.         $xml .= "\n\t\t<status>".$row["status"]."</status>";
    39.         $xml .= "\n\t\t<your>";
    40.         $xml .= "\n\t\t\t<units>".($row["bad_before"] - $row["bad_after"])."</units>";
    41.         $xml .= "\n\t\t\t<gold>".$row["dgold"]."</gold>";
    42.         $xml .= "\n\t\t</your>";
    43.         $xml .= "\n\t\t<target>";
    44.         $xml .= "\n\t\t\t<id>".$row["attacker"]."</id>";
    45.         $xml .= "\n\t\t\t<name>".$row["name"]."</name>";
    46.         $xml .= "\n\t\t\t<all>".$row["all_sh"]."</all>";
    47.         $xml .= "\n\t\t\t<units>".($row["good_before"]-$row["good_after"])."</units>";
    48.         $xml .= "\n\t\t\t<gold>0</gold>";
    49.         $xml .= "\n\t\t\t<diamond>0</diamond>";
    50.         $xml .= "\n\t\t</target>";     
    51.         $xml .= "\n\t</battle>";
    52.     }
    Имеется такой код, однако, некоторым игрокам не приходит этот xml. Во флеше все правильно, мб что-то тут не так, подскажите
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Следи за стрелочкой.
    \/
    \/
    Улавливаешь, откуда собакой зарытой пахнет? :)
     
  3. Golovorot

    Golovorot Активный пользователь

    С нами с:
    24 окт 2012
    Сообщения:
    53
    Симпатии:
    0
    Нет, не улавливаю:) Я в php 0
    Ну вообще ошибок не приходит
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Запрос у тебя фейлится/приходит пустым.
    От того XML не формируется/формируется пустым.
    От того не приходит клиенту.
     
  5. Golovorot

    Golovorot Активный пользователь

    С нами с:
    24 окт 2012
    Сообщения:
    53
    Симпатии:
    0
    xml приходит в виде </xml>
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Если if (!$req) пиши в лог (журнал событий) файл причину ошибки mysql и sql запрос из $str.
    И где проверка mysql num rows? Чтобы знать что ко-во результатов больше нуля.
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    В приведенном фрагменте кода нет генерации </xml>.
    Есть вероятность, что над этим фрагментом выше еще какое-то условие, которое не срабатывает.
     
  8. Golovorot

    Golovorot Активный пользователь

    С нами с:
    24 окт 2012
    Сообщения:
    53
    Симпатии:
    0
    Код (PHP):
    1. <?
    2.     
    3.     include    ("updUser.php");
    4.     include ("balance.php");
    5.     
    6.     define     ("SIZE_OF_SMALLINT", 65535);
    7.     
    8.     
    9.     $id=intval($_POST['id']);
    10.     if ($id==0){
    11.         $id = intval($_POST['viewer_id']);
    12.         $s = "(SELECT id FROM users WHERE viewer_id = $id)";
    13.     }else $s = "$id";
    14.     
    15.     $auth_key=$_POST['hash'];
    16.     if ($auth_key != h($id)) exit("req=false&error=auth_error");
    17.     
    18.     updUser($s);
    19.     
    20.     $str = "
    21. SELECT 
    22. names.id, names.name, names.all_sh, 
    23. buildings.palace, buildings.farm, buildings.tower, buildings.secret, 
    24. last_battle.time AS battle_time, 
    25. resources.gold, resources.dgold, resources.millet, resources.dmillet, resources.diamond, resources.ruby, 
    26. (SELECT course FROM course ORDER BY id DESC LIMIT 1 ) AS ruby_course,
    27. units.sh_num, units.sh_atk, units.sh_hp, units.sh_acc, units.bw_num, units.bw_atk, units.bw_hp, units.bw_acc, units.sp_num, units.sp_atk, units.sp_hp, units.sp_acc, units.auras,
    28. relax_time.time AS relax_time, 
    29. in_battle.battle_id,
    30. tasks.task, tasks.premium, tasks.premium_start, tasks.premium_time,
    31. hero.atk as hero_atk, hero.hp as hero_hp, hero.hero_atk as hero_hero_atk, hero.gold as hero_gold, hero.exp as hero_exp, hero.level as hero_level, hero.full_exp as hero_full_exp
    32. FROM names 
    33. JOIN buildings
    34. JOIN last_battle
    35. JOIN resources
    36. JOIN units
    37. JOIN relax_time
    38. JOIN last_online
    39. JOIN in_battle
    40. JOIN tasks
    41. JOIN hero
    42. WHERE names.id = buildings.id
    43. AND names.id = last_battle.id
    44. AND names.id = last_online.id
    45. AND names.id = resources.id
    46. AND names.id = units.id
    47. AND names.id = relax_time.id
    48. AND names.id = in_battle.id
    49. AND names.id = tasks.id
    50. AND names.id = hero.id
    51. AND names.id = $s
    52. ";
    53.     $req = mysql_query($str, $db);
    54.     if (!$req) exit("req=false&error=mysql_error&p=0&s=3");
    55.     if (mysql_num_rows($req) == 0) exit("req=false&error=no_village&s=4");
    56.     $arr = mysql_fetch_array($req);
    57.     $id = $arr["id"];
    58.     if ($arr["battle_id"] != 0) {
    59.         //Надо добавить информацию о противнике
    60.     }
    61.     $nool = 50;
    62.              
    63.     $arr["relax_time"]     = $arr["relax_time"] - time();
    64.     if ($arr["relax_time"] < 0) $arr["relax_time"] = 0;
    65.     $arr["hash"]         = md5("_".$arr["palace"]);    
    66.     $arr["time_now"]     = time();    
    67.         $_time = time();
    68.         $arr["time_day"    ]       = mktime(0,0,0);
    69.  
    70.     $arr["_sh_atk"] = DEFAULT_SH_ATK;
    71.     $arr["_sh_hp"]     = DEFAULT_SH_HP;
    72.     $arr["_sh_acc"] = DEFAULT_SH_ACC;
    73.     $arr["_bw_atk"] = DEFAULT_BW_ATK;
    74.     $arr["_bw_hp"]     = DEFAULT_BW_HP;
    75.     $arr["_bw_acc"] = DEFAULT_BW_ACC;
    76.     $arr["_sp_atk"] = DEFAULT_SP_ATK;
    77.     $arr["_sp_hp"]     = DEFAULT_SP_HP;
    78.     $arr["_sp_acc"] = DEFAULT_SP_ACC;
    79.     
    80.     $arr["_tower_atk"] = DEFAULT_TOWER_ATK;
    81.     $arr["_hero_atk"] = DEFAULT_HERO_ATK;
    82.     
    83.     $controllSummPre = "_".$arr["_sh_atk"].$arr["_sh_hp"].$arr["_sh_acc"].$arr["_bw_atk"].$arr["_bw_hp"].$arr["_bw_acc"].$arr["_sp_atk"].$arr["_sp_hp"].$arr["_sp_acc"].$arr["_tower_atk"].$arr["_hero_atk"];
    84.     $arr["hash2"] = md5($controllSummPre);
    85.     $arr["auth_key"] = h($arr["id"]);    
    86.     $arr["ruby_cost"] = RUBY_COST;
    87.     
    88.     $s = "";
    89.     foreach ($arr as $key => $value){ 
    90.         $s .= "&$key=$value"; 
    91.     }
    92.     $str = "UPDATE last_online SET time=".time()." WHERE id=".$arr["id"];
    93.     $req = mysql_query($str, $db);
    94.     if (!$req) exit("req=false&error=mysql_error&p=1");
    95.     $str12 = "SELECT users.viewer_id AS attacker,names.name,names.all_sh,battles.status,battles.good_before,battles.bad_before,battles.good_after,battles.bad_after,battles.dgold
    96.     FROM battles 
    97.     JOIN last_battles
    98.     JOIN users
    99.     JOIN names
    100.     WHERE 
    101. (battles.id = last_battles.b1 
    102. OR battles.id = last_battles.b2 
    103. OR battles.id = last_battles.b3
    104. OR battles.id = last_battles.b4
    105. OR battles.id = last_battles.b5
    106. OR battles.id = last_battles.b6
    107. OR battles.id = last_battles.b7
    108. OR battles.id = last_battles.b8
    109. OR battles.id = last_battles.b9
    110. OR battles.id = last_battles.b10
    111. OR battles.id = last_battles.b11 
    112. OR battles.id = last_battles.b12 
    113. OR battles.id = last_battles.b13
    114. OR battles.id = last_battles.b14
    115. OR battles.id = last_battles.b15
    116. OR battles.id = last_battles.b16
    117. OR battles.id = last_battles.b17
    118. OR battles.id = last_battles.b18
    119. OR battles.id = last_battles.b19
    120. OR battles.id = last_battles.b20
    121. AND battles.attacker = names.id
    122. AND battles.attacker = users.id
    123. AND last_battles.id = $id
    124.  
    125. ";
    126.     $req = mysql_query($str12, $db);
    127.     if (!$req) exit ("req=false&error=mysql_error&s=1");
    128.     $xml = "<xml>";
    129.     while ($row = mysql_fetch_assoc($req)) {
    130.         $xml .= "\n\t<battle>";
    131.         $xml .= "\n\t\t<status>".$row["status"]."</status>";
    132.         $xml .= "\n\t\t<your>";
    133.         $xml .= "\n\t\t\t<units>".($row["bad_before"] - $row["bad_after"])."</units>";
    134.         $xml .= "\n\t\t\t<gold>".$row["dgold"]."</gold>";
    135.         $xml .= "\n\t\t</your>";
    136.         $xml .= "\n\t\t<target>";
    137.         $xml .= "\n\t\t\t<id>".$row["attacker"]."</id>";
    138.         $xml .= "\n\t\t\t<name>".$row["name"]."</name>";
    139.         $xml .= "\n\t\t\t<all>".$row["all_sh"]."</all>";
    140.         $xml .= "\n\t\t\t<units>".($row["good_before"]-$row["good_after"])."</units>";
    141.         $xml .= "\n\t\t\t<gold>0</gold>";
    142.         $xml .= "\n\t\t\t<diamond>0</diamond>";
    143.         $xml .= "\n\t\t</target>";        
    144.         $xml .= "\n\t</battle>";
    145.     }
    146.     $xml .= "\n</xml>";
    147.     if ($xml != "<xml>\n</xml>"){
    148.         $str = "
    149.         UPDATE last_battles
    150.         SET b1 = 0, b2 = 0, b3 = 0, b4 = 0, b5 = 0, b6 = 0, b7 = 0, b8 = 0, b9 = 0, b10 = 0, b11 = 0, b12 = 0, b13 = 0, b14 = 0, b15 = 0, b16 = 0, b17 = 0, b18 = 0, b19 = 0, b20 = 0
    151.         WHERE id = $id
    152.         ";
    153.         $req = mysql_query($str, $db);    
    154.         if (!$req) exit ("req=false&error=mysql_error&s=2");
    155.     }
    156.     echo "req=true".$s."&xml=$xml".($arr["time_now"] - $arr["premium_start"]);
    157. ?>
    Вот весь код
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ну..что я могу сказать, должно быть как минимум
    <xml></xml>, а не просто </xml>.

    И да, кроме прочего xml формируется не валидный.
     
  10. Golovorot

    Golovorot Активный пользователь

    С нами с:
    24 окт 2012
    Сообщения:
    53
    Симпатии:
    0
    Код (Text):
    1. if ($xml != "<xml>\n123</xml>"){
    2.         $str = "
    3.         UPDATE last_battles
    4.         SET b1 = 0, b2 = 0, b3 = 0, b4 = 0, b5 = 0, b6 = 0, b7 = 0, b8 = 0, b9 = 0, b10 = 0, b11 = 0, b12 = 0, b13 = 0, b14 = 0, b15 = 0, b16 = 0, b17 = 0, b18 = 0, b19 = 0, b20 = 0
    5.         WHERE id = $id
    6.         ";
    7.         $req = mysql_query($str, $db);    
    8.         if (!$req) exit ("req=false&error=mysql_error&s=2");
    9.     }
    Если вот так, то все отлично