Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [XML][MySQL][PHP] XML do MySQL w PHP
maniek2512
post 24.01.2013, 13:19:35
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. 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
Go to the top of the page
+Quote Post
nospor
post 24.01.2013, 13:21:31
Post #2





Grupa: Moderatorzy
Postów: 36 477
Pomógł: 6301
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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maniek2512
post 24.01.2013, 13:23:27
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 24.01.2013, 13:32:02
Post #4





Grupa: Moderatorzy
Postów: 36 477
Pomógł: 6301
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maniek2512
post 24.01.2013, 13:48:09
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 10.06.2024 - 03:04