Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML][MySQL][PHP] XML do MySQL w PHP
Forum PHP.pl > Forum > Przedszkole
maniek2512
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. die('Serwer padł biggrin.gif');
  33. break;
  34. case 403:
  35. die('Nie masz odpowiednich uprawnień.');
  36. break;
  37. case 409:
  38. die('<font color="white">Nie można pobrać danych z serwera.</font> ');
  39. break;
  40. break;
  41. default:
  42. die('Your call returned an unexpected HTTP status of:' . $status_code[0]);
  43. }
  44.  
  45. // POST the XML from the response, bypassing the header
  46. if (!($xml = strstr($response, '<?xml'))) {
  47. $xml = null;
  48. }
  49.  
  50. ?>
  51.  
  52.  
  53. <table class="sortable" border="1" align="left" rules="all" width="100%" id="st_tabela">
  54. <!-- Table Header -->
  55. <thead>
  56.  
  57. <tr>
  58. <th background='tlo.png'>Nick</th>
  59. <th background='tlo.png'>Wyzerka</th>
  60. <th background='tlo.png'>Czas</th>
  61. <th background='tlo.png'>Plansza</th>
  62. </tr>
  63.  
  64. </thead>
  65.  
  66. <!-- Tabel body-->
  67. <tbody>
  68.  
  69.  
  70.  
  71. <?php
  72. // Output the XML
  73.  
  74. $PotwornyGlodomor = simplexml_load_string($xml);
  75. $PotwornyGlodomor->PotwornyGlodomor->attributes();
  76.  
  77. foreach ($PotwornyGlodomor->PotwornyGlodomor as $world)
  78. {
  79.  
  80. $nick = '<td>' . $world['nick'] . '</td>';
  81. $wyzerka = '<td>' . $world['wyzerka'] . '</td>';
  82. $czas = '<td>' . $world['czas'] . '</td>';
  83. $plansza = '<td>' . $world['plansza'] . '</td>';
  84.  
  85.  
  86. echo "<tr align='center'>$nick $wyzerka $czas $plansza </tr>";
  87.  
  88. }
  89. ?>
  90. </tbody>
  91.  
  92.  
  93.  
  94. </table>
  95. <?php
  96. $sql_conn = mysql_connect('1*********', '******_admin', '*********');
  97. mysql_select_db('nfswinfo_gmjgames');
  98. $zapytanie = "INSERT INTO `czasy` (`nick`, `wyzerka`, `czas`, `plansza`) VALUES ('{$world['nick']}', '{$world['wyzerka']}', '{$world['czas']}', '{$world['plansza']}')";
  99.  
  100. $idzapytania = mysql_query($zapytanie);
  101. echo $zapytanie;
  102.  
  103.  
  104. ?>



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
nospor
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.
maniek2512
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();
nospor
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
maniek2512
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.  
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.