Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [XML][SQL][PHP]Problem z czytaniem
Trecco
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 11.08.2009

Ostrzeżenie: (0%)
-----


Witam, chciałbym napisać skrypt który pobierał by dane z takich plików xml http://clodogame.fr/dev/api/user.97.xml pobierając id (np.97) z pliku tekstowego. Następnie wrzucało dane do sql. Wyskakuje mi 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:\Strony\sql.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:\Strony\sql.php on line 15
  4. Nie mozna przeniesc gracza ! Table 'myhighscore.gracze' doesn't exist


Skrypt wygląda tak:
  1. <?
  2. $sql['server'] = "db4free.net:3306";
  3. $sql['username'] = "trecco";
  4. $sql['password'] = "********";
  5. $sql['database'] = "myhighscore";
  6.  
  7. mysql_connect($sql['server'],$sql['username'],$sql['password']) or die("Nie mozna polaczyc sie z serwerem! Blad: ".mysql_error());
  8. mysql_select_db($sql['database']) or die("Nie znaleziono bazy danych! Blad: ".mysql_error());
  9.  
  10. $plik = file("id.txt");
  11. array_shift($plik);
  12.  
  13. foreach($plik as $p)
  14. {
  15. $xml = simplexml_load_file("http://clodogame.fr/dev/api/user.".$p.".xml");
  16.  
  17. $id = $xml['id'];
  18. $name = $xml['name'];
  19. $points = $xml['points'];
  20. $position = $xml['position'];
  21. $gangname = $xml->gang['name'];
  22.  
  23. $query = mysql_query("INSERT INTO `gracze` (`id`,`name`,`points`,`position`,`gangname`) VALUES('NULL','$id','$name','$points','$position','$gangname')") or die("Nie mozna przeniesc gracza $name! ".mysql_error());
  24. echo "<p>Gracz $name zostal przeniesiony poprawnie!</p>";
  25. }
  26. ?>


Plik tekstowy:
  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


Strasznie byłbym wdzięczny za pomoc.

Ten post edytował Trecco 22.08.2009, 12:06:39
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
emp
post
Post #2





Grupa: Zarejestrowani
Postów: 195
Pomógł: 14
Dołączył: 12.01.2006
Skąd: Gotham City

Ostrzeżenie: (0%)
-----


W $xml masz obiekt nie tablice simplexml poczytaj komentarze.
Nie powinno być tak
  1.  
  2. $id = $xml->id;
  3. $name = $xml->name;
  4. $points = $xml->points;
  5. $position = $xml->position;
  6. $gangname = $xml->gang->name;


Przed zapisaniem do bazy daj echo i sprawdź czy dane w zmiennej $xml są takie jak w pliku.
echo $xml->name; itd
Będziesz wiedział gdzie masz błąd przed zapisaniem do bazy czy w trakcie zapisywania do bazy.

Zrób jakieś testy np:
if( $xml == false ) echo 'Wystapił bład !' ;


Ten post edytował emp 23.08.2009, 13:02:30
Go to the top of the page
+Quote Post
Trecco
post
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 11.08.2009

Ostrzeżenie: (0%)
-----


Cytat(emp @ 23.08.2009, 13:49:44 ) *
W $xml masz obiekt nie tablice simplexml poczytaj komentarze.
Nie powinno być tak
  1.  
  2. $id = $xml->id;
  3. $name = $xml->name;
  4. $points = $xml->points;
  5. $position = $xml->position;
  6. $gangname = $xml->gang->name;


Przed zapisaniem do bazy daj echo i sprawdź czy dane w zmiennej $xml są takie jak w pliku.
echo $xml->name; itd
Będziesz wiedział gdzie masz błąd przed zapisaniem do bazy czy w trakcie zapisywania do bazy.


Zmieniłem na obiekty, dodałem
  1. echo $xml->id;
  2. echo $xml->name;
  3. echo $xml->points;
  4. echo $xml->position;
  5. echo $xml->gang->name;


Po
  1. $xml = simplexml_load_file("http://clodogame.fr/dev/api/user.91.xml");

Ale nic nie wyświetliło. Jakiś sugestie?

@EDIT
Zrobiłem dziecinny błąd, zauważyłem, że w pliku xml istnieje jeszcze <user>
  1. $id = $xml->user->id;
  2. $name = $xml->user->name;
  3. $points = $xml->user->points;
  4. $position = $xml->user->position;
  5. $gangname = $xml->user->gang->name;

Dodało do bazy danych.

Do wyświetlenia wystarczy
  1. SELECT position, name, gangname, points FROM gracze ORDER BY points DESC;


Ten post edytował Trecco 23.08.2009, 20:15:26
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 02:24