Witam, chciałbym napisać skrypt, który czyta dane z tego pliku xml: http://clodogame.fr/dev/api/user.97.xml . Jest to banalne, ale parę poprawek zmusza mnie do zmiany sposobu. Skrypt, który napisałem wymaga codziennej zmiany położenia danych. A nowy skrypt napisany przez kolegę nie działa poprawnie. Może wstawię potrzebne informacje:

Stara wersja skryptu:
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  4. <meta http-equiv="refresh" content="60" />
  5. <title>My HighScore 1.3 by Trecco</title>
  6. </head>
  7. <body bgcolor="#000000" text="#FFFFFF">
  8.  
  9. <?php
  10.  
  11. ini_set('display_errors', 1);
  12.  
  13. echo '<center><big><b>My HighScore 1.3 </b></big><small>by Trecco</small><br><br><br></center>';
  14.  
  15. echo '<font color="red">';
  16. //Chriser
  17. $plik = simplexml_load_file("http://clodogame.fr/dev/api/user.70.xml");
  18. foreach($plik as $wartosc)
  19. echo($wartosc->position);
  20. echo ' ';
  21. echo($wartosc->name);
  22. echo ' ';
  23. echo($wartosc->points);
  24. echo ' ';
  25. echo($wartosc->gang->name);
  26. echo ' ';
  27. echo '<a href="http://highscore.clodogame.fr/fight/?to=Chriser"><img border="0" src="http://media.pennergame.de/img/att.gif"/></a>';
  28. echo '<br>';
  29. echo '</font>';
  30.  
  31. echo '<font color="red">';
  32. //parisH
  33. $plik = simplexml_load_file("http://clodogame.fr/dev/api/user.117.xml");
  34. foreach($plik as $wartosc)
  35. echo($wartosc->position);
  36. echo ' ';
  37. echo($wartosc->name);
  38. echo ' ';
  39. echo($wartosc->points);
  40. echo ' ';
  41. echo($wartosc->gang->name);
  42. echo ' ';
  43. echo '<a href="http://highscore.clodogame.fr/fight/?to=parisH"><img border="0" src="http://media.pennergame.de/img/att.gif"/></a>';
  44. echo '<br>';
  45. echo '</font>';
  46.  
  47. echo '<font color="green">';
  48. //Trecco
  49. $plik = simplexml_load_file("http://clodogame.fr/dev/api/user.97.xml");
  50. foreach($plik as $wartosc)
  51. echo($wartosc->position);
  52. echo ' ';
  53. echo($wartosc->name);
  54. echo ' ';
  55. echo($wartosc->points);
  56. echo ' ';
  57. echo($wartosc->gang->name);
  58. echo ' ';
  59. echo '<a href="http://highscore.clodogame.fr/fight/?to=Trecco"><img border="0" src="http://media.pennergame.de/img/att.gif"/></a>';
  60. echo '<br>';
  61. echo '</font>';
  62.  
  63. etd.
  64.  
  65.  
  66. echo '<br><br>';
  67. echo '<big>Legenda:</big><br>';
  68. echo '<small><font color="green">Kolor zielony - sojusznik</font><br>';
  69. echo '<font color="red">Kolor czerwony - wrog</font><br>';
  70.  
  71. echo '<center><br><br><br>Copyright Š 2009 Tabela Powered By Trecco™</center></small>';
  72.  
  73. ?>
  74. </body>
  75. </html>



I tak, nowy skrypt miał pobierać dane z pliku xml, jednak zamiast pisać każdemu oddzielnie pobierał id z pliku tekstowego, skrypt sortuje wyniki wg "points" które widnieje w xml'u.

  1. <?php
  2. class gracz
  3. {
  4.  
  5. }
  6.  
  7. $obiekty = array();
  8. $baza = array();
  9.  
  10. $plik = file("id.txt");
  11. array_shift($plik);
  12.  
  13. foreach($plik as $id)
  14. {
  15. $wartosc = simplexml_load_file("http://clodogame.fr/dev/api/user.".$id.".xml");
  16. $i = count($obiekty);
  17. $obiekty[$i] = new gracz;
  18. $obiekty[$i] -> position = $wartosc->position;
  19. $obiekty[$i] -> name = $wartosc->name;
  20. $obiekty[$i] -> gang->name = $wartosc->gang->name;
  21. $obiekty[$i] -> points = $wartosc->points;
  22. $obiekty[$i] -> position = $wartosc->position;
  23. $obiekty[$i] -> name = $wartosc->name;
  24. $obiekty[$i] -> points = $wartosc->points;
  25. $baza[$i] = intval($wartosc->points);
  26. }
  27.  
  28. arsort($baza);
  29.  
  30. foreach($baza as $key => $value)
  31. {
  32. echo $obiekty[$key]->position;
  33. echo $obiekty[$key] -> name;
  34. echo '<a href="http://www.clodogame.fr/fight/?to='.$obiekty[$key] -> name.'"><img border="0" src="http://media.clodogame.fr/img/att.png"/></a>';
  35. echo $obiekty[$key] -> gang -> name;
  36. echo $obiekty[$key] -> points;
  37. }
  38. ?>


Plik tekstowy "id.txt":

  1. 70
  2. 117
  3. 97
  4. 89
  5. 575
  6. 28
  7. 95
  8. 528
  9. 489
  10. 263
  11. 130
  12. 568
  13. 96
  14. 645
  15. 341
  16. 608
  17. 262
  18. 42
  19. 381
  20. 91


Jednak na localu występuję taki błąd:
  1. Warning: simplexml_load_file(http://clodogame.fr/dev/api/user.70%0D%0A.xml) [function.simplexml-load-file]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in C:\Program Files\WebServ\httpd\3.php on line 15
  2.  
  3. Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://clodogame.fr/dev/api/user.70%0D%0A.xml" in C:\Program Files\WebServ\httpd\3.php on line 15

dla każdej z liczb, na hostingach widoczne są liczby podane w pliku id.txt na dole 20 razy
  1. echo '<a href="http://www.clodogame.fr/fight/?to='.$obiekty[$key] -> name.'"><img border="0" src="http://media.clodogame.fr/img/att.png"/></a>';


Prosił bym o pomoc w napisaniu skryptu.