Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [XML][MySQL][PHP] XML do MySQL w PHP
maniek2512
post
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.03.2011

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


Otóż mam problem, chcę przenieść dane z pliku XML (mam go na serwerze) do bazy danych. "Coś tam" już stworzyłem, lecz dodaje to mi tylko ostatni rekord z xml-a. W tym wypadku jest to :

  1. <PotwornyGlodomor nick="Gustaw" wyzerka="305" czas="10146" plansza="8" />


Chciałbym aby dodawało wszystkie rekordy z XML-a, lecz zupełnie nie wiem jak się za to zabrać. Większość czego się nauczyłem robiłem na przykładach, lecz nie mogę sobie z tym problemem poradzić. Może ktoś mógłby mi pomóc ?



Część xml-a:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <list>
  4.  
  5. <PotwornyGlodomor nick="Gustaw" wyzerka="1528" czas="241" plansza="Multi" />
  6. <PotwornyGlodomor nick="Gustaw" wyzerka="473" czas="14147" plansza="1" />
  7. <PotwornyGlodomor nick="Gustaw" wyzerka="150" czas="5727" plansza="2" />
  8. <PotwornyGlodomor nick="Gustaw" wyzerka="150" czas="5155" plansza="3" />
  9. <PotwornyGlodomor nick="Gustaw" wyzerka="150" czas="6654" plansza="4" />
  10. <PotwornyGlodomor nick="Gustaw" wyzerka="150" czas="5032" plansza="5" />
  11. <PotwornyGlodomor nick="Gustaw" wyzerka="150" czas="5492" plansza="6" />
  12. <PotwornyGlodomor nick="Gustaw" wyzerka="150" czas="4494" plansza="7" />
  13. <PotwornyGlodomor nick="Gustaw" wyzerka="305" czas="10146" plansza="8" />
  14.  
  15. </list>



A tutaj plik PHP:

  1. <?php
  2.  
  3. //optional comment out or delete
  4.  
  5.  
  6.  
  7. $request = 'http://mojastrona.pl/leaderboard/PotwornyGlodomor/Gustaw.xml';
  8.  
  9. // POST the curl session object
  10. $session = curl_init($request);
  11.  
  12. // Set the POST options.
  13. curl_setopt ($session, CURLOPT_POST, true);
  14. curl_setopt ($session, CURLOPT_POSTFIELDS, $request);
  15. curl_setopt($session, CURLOPT_HEADER, true);
  16. curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
  17.  
  18. // Do the POST and then close the session
  19. $response = curl_exec($session);
  20. curl_close($session);
  21.  
  22. // POST HTTP Status code from the response
  23. $status_code = array();
  24. preg_match('/\d\d\d/', $response, $status_code);
  25.  
  26. // Check for errors
  27. switch( $status_code[0] ) {
  28. case 200:
  29. // Success
  30. break;
  31. case 503:
  32. break;
  33. case 403:
  34. die('Nie masz odpowiednich uprawnień.');
  35. break;
  36. case 409:
  37. die('<font color="white">Nie można pobrać danych z serwera.</font> ');
  38. break;
  39. break;
  40. default:
  41. die('Your call returned an unexpected HTTP status of:' . $status_code[0]);
  42. }
  43.  
  44. // POST the XML from the response, bypassing the header
  45. if (!($xml = strstr($response, '<?xml'))) {
  46. $xml = null;
  47. }
  48.  
  49. ?>
  50.  
  51.  
  52. <table class="sortable" border="1" align="left" rules="all" width="100%" id="st_tabela">
  53. <!-- Table Header -->
  54. <thead>
  55.  
  56. <tr>
  57. <th background='tlo.png'>Nick</th>
  58. <th background='tlo.png'>Wyzerka</th>
  59. <th background='tlo.png'>Czas</th>
  60. <th background='tlo.png'>Plansza</th>
  61. </tr>
  62.  
  63. </thead>
  64.  
  65. <!-- Tabel body-->
  66. <tbody>
  67.  
  68.  
  69.  
  70. <?php
  71. // Output the XML
  72.  
  73. $PotwornyGlodomor = simplexml_load_string($xml);
  74. $PotwornyGlodomor->PotwornyGlodomor->attributes();
  75.  
  76. foreach ($PotwornyGlodomor->PotwornyGlodomor as $world)
  77. {
  78.  
  79. $nick = '<td>' . $world['nick'] . '</td>';
  80. $wyzerka = '<td>' . $world['wyzerka'] . '</td>';
  81. $czas = '<td>' . $world['czas'] . '</td>';
  82. $plansza = '<td>' . $world['plansza'] . '</td>';
  83.  
  84.  
  85. echo "<tr align='center'>$nick $wyzerka $czas $plansza </tr>";
  86.  
  87. }
  88. ?>
  89. </tbody>
  90.  
  91.  
  92.  
  93. </table>
  94. <?php
  95. $sql_conn = mysql_connect('1*********', '******_admin', '*********');
  96. mysql_select_db('nfswinfo_gmjgames');
  97. $zapytanie = "INSERT INTO `czasy` (`nick`, `wyzerka`, `czas`, `plansza`) VALUES ('{$world['nick']}', '{$world['wyzerka']}', '{$world['czas']}', '{$world['plansza']}')";
  98.  
  99. $idzapytania = mysql_query($zapytanie);
  100. echo $zapytanie;
  101.  
  102.  
  103. ?>



Pewnie namieszałem tak, że większość z Was profesjonalistów pęknie ze śmiechu, no ale cóż nie każdy musi wszystko umieć. Ja obiecałem sobie, że po skończeniu szkoły biorę się za jakiś konkretny kurs PHP, a później coś pewnie jeszcze dojdzie. Niestety teraz nie mam wystarczająco dużo czasu aby rozwiązać problem samemu, po prostu nie wiem jak to ugryźć dlatego zwracam się do Was z prośbą o pomoc.

Z góry dzięki
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Dodawanie do bazy powinieneś mieć w pętli, tak jak w petli generujesz tabelkę HTML.
Teraz dodawanie masz poza pętlą, więc logiczne ze dodajesz tylko ostatni rekord.
Go to the top of the page
+Quote Post
maniek2512
post
Post #3





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.03.2011

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


Nie wiem czemu ale przy próbie edycji tak nieczytelnie jest to zrobione, że nie mogę znaleźć 76 linijki, której powinno tam nie być:
  1. $PotwornyGlodomor->PotwornyGlodomor->attributes();
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A jak to się ma do mojej odpowiedzi? Nijak.
Powtarzam: wkładanie do bazy masz robić w tej samej pętli FOREACH co generujesz tabelke HTML
Go to the top of the page
+Quote Post
maniek2512
post
Post #5





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.03.2011

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


Napisałem coś takiego, wszystko ładnie dodaje do bazy. Dzięki wielkie za pomoc:)


  1.  
  2. <?php
  3.  
  4. $plik = simplexml_load_file("leaderboard/PotwornyGlodomor/Gustaw.xml");
  5.  
  6.  
  7.  
  8. echo '<ul>';
  9.  
  10. foreach($plik as $linia)
  11.  
  12. {
  13.  
  14.  
  15. $sql_conn = mysql_connect('**********', '************_admin', '********');
  16. mysql_select_db('*******_gmjgames');
  17. $zapytanie = "INSERT INTO `czasy` (`nick`, `wyzerka`, `czas`, `plansza`) VALUES ('{$linia['nick']}', '{$linia['wyzerka']}', '{$linia['czas']}', '{$linia['plansza']}')";
  18. $idzapytania = mysql_query($zapytanie);
  19.  
  20.  
  21.  
  22.  
  23. echo '<li>'.$zapytanie.'</li>';
  24.  
  25. }
  26.  
  27. echo '</ul>';
  28.  


Ten post edytował maniek2512 24.01.2013, 13:52:18
Go to the top of the page
+Quote Post

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: 22.08.2025 - 17:49