Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [XML + MySql] Dane z XML do bazy danych MySql
maniek2512
post 21.05.2012, 10:27:49
Post #1





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

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


Witam chciałbym przesłać dane z XML do bazy MySql. Dane mam pobierane ze strony metodą CURL

plik leaderboards.php :
  1. <?php
  2. require 'gora.php';
  3. ?>
  4. <form action="leaderboards_2.php" method="GET">
  5. <table id="tabela" name="tabela" align=center" border="1" rules="all"><tbody><tr class="table-top"><th background='tlo.png'>Trasa</th><th background='tlo.png'>Rodzaj wyścigu</th></tr>
  6. <tr><td>
  7. <select name="trasa" >
  8. <?
  9. $selectValues = array(
  10. '299'=>'AGOSTINI AVENUE',
  11. '10'=>'BAY BRIDGE',
  12. '302'=>'BEACHFRONT',
  13. '25'=>'BEACON STATION',
  14. '71'=>'BLACKWELL BRIDGE',
  15. '22'=>'BOUNDARY & MARINA',
  16. '26'=>'BRISTOL & BAYSHORE',
  17. '3'=>'BRISTOL & DIAMOND',
  18. '57'=>'BROOKS STREET',
  19. '18'=>'CAMDEN & ROUTE 55',
  20. '360'=>'CAMDEN HILLS',
  21. '9'=>'CAMDEN TUNNEL',
  22. '72'=>'CAMPBELL TUNNEL',
  23. '5'=>'CAMPUS INTERCHANGE',
  24. '317'=>'CENTRAL COAST',
  25. '27'=>'CHANCELLOR & CAMPUS',
  26. '41'=>'CHINATOWN DELIVERY',
  27. '78'=>'CHINATOWN TRAM',
  28. '34'=>'CLUBHOUSE & HOLLIS',
  29. '21'=>'COLLEGE ASYLUM',
  30. '24'=>'COLLEGE MALL',
  31. '298'=>'CONDO ROW',
  32. '43'=>'CONSTRUCTION ROUTE',
  33. '6'=>'COUNTRY CLUB',
  34. '39'=>'DIAMOND & UNION',
  35. '303'=>'DOVER AND LEPUS',
  36. '307'=>'DOVER STREET',
  37. '61'=>'DOWNTOWN CHALLENGE',
  38. '56'=>'EAGLE DRIVE',
  39. '157'=>'FINANCIAL DISTRICT',
  40. '82'=>'GARDEN BOULEVARD',
  41. '12'=>'GRAY POINT',
  42. '83'=>'HASTINGS',
  43. '31'=>'HERITAGE & CAMPUS',
  44. '17'=>'HERITAGE & DIAMOND',
  45. '32'=>'HERITAGE HEIGHTS',
  46. '33'=>'HWY 99 & STATE',
  47. '8'=>'IRONHORSE & COAST',
  48. '308'=>'KEMPTON DOCKS',
  49. '80'=>'LINCOLN BOULEVARD',
  50. '120'=>'LIONS CHALLENGE',
  51. '145'=>'LITTLE ITALY',
  52. '52'=>'LUCKY TOWERS',
  53. '146'=>'LYONS & HWY 201',
  54. '79'=>'MAIN STREET',
  55. '81'=>'MASON STREET',
  56. '314'=>'MISSION STREET',
  57. '19'=>'NORTH BAY HARBOUR',
  58. '292'=>'NORTH BELLEZZA',
  59. '50'=>'NORTH BROADWAY',
  60. '76'=>'NORTH ROAD',
  61. '295'=>'OCEAN VIEW',
  62. '7'=>'OIL REFINERY',
  63. '47'=>'OLD QUARTER',
  64. '55'=>'PARADISE HOTEL',
  65. '23'=>'PARK BOUNDARY',
  66. '309'=>'PETERSBURG DAM',
  67. '97'=>'RIVERFRONT & GREEN',
  68. '28'=>'ROCKRIDGE & UNION',
  69. '29'=>'ROSEWOOD & LYONS',
  70. '38'=>'ROSEWOOD CENTRAL',
  71. '36'=>'ROSEWOOD COLLEGE',
  72. '37'=>'ROSEWOOD PARK LOOP',
  73. '15'=>'ROUTE 55',
  74. '49'=>'SAVANNAH STREET',
  75. '98'=>'SEASIDE INTERCHANGE',
  76. '77'=>'SILK ROAD',
  77. '51'=>'SILVERTON WAY',
  78. '289'=>'SKYLINE AVENUE',
  79. '54'=>'SPADE STREET',
  80. '16'=>'STADIUM & CHASE',
  81. '20'=>'STADIUM & HWY 1',
  82. '35'=>'STADIUM & HWY 99',
  83. '53'=>'STARLIGHT STREET',
  84. '13'=>'STATE & WARRENT',
  85. '14'=>'STATION & FISHER',
  86. '30'=>'UNION & HOLLIS',
  87. '287'=>'UNIVERSITY WAY',
  88. '131'=>'VALLEY & STATE',
  89. '290'=>'VERONA TUNNEL',
  90. '11'=>'WATERFRONT',
  91. '305'=>'WATERFRONT ROAD',
  92. '45'=>'WELCOME TO PALMONT',
  93. '85'=>'WEST PARK & FOREST',
  94. '147'=>'WEST PARK & LYONS',
  95. '296'=>'YORK ROAD');
  96.  
  97. foreach($selectValues as $key => $value)
  98. {
  99. echo '<option value="'.$key.'"'.($_GET['trasa']==$key ? ' selected="selected"' : '').'>'.$value.'</option>'."";
  100. }
  101. ?>
  102. </select>
  103.  
  104.  
  105.  
  106. </td>
  107.  
  108. <td><input name="tryb" value="1" checked="checked" type="radio" id="tabela"> MULTIPLAYER<br>
  109. <input name="tryb" value="2" type="radio" id="tabela"> SINGLEPLAYER</td>
  110. <td>
  111. <input type=submit value="Pokaż"/>
  112.  
  113.  
  114. </td></tr></tbody></table>
  115. </form>
  116. </div>


plik leaderboards_2.php

  1. <?php
  2. include 'leaderboards.php';
  3.  
  4. //optional comment out or delete
  5.  
  6. // The POST URL and parameters
  7. $trasa = $_GET['trasa'];
  8. $tryb = $_GET['tryb'];
  9.  
  10. $sql_host = '*********';
  11. $sql_user = '***********';
  12. $sql_password = '**********';
  13. $sql_baza = '*********';
  14.  
  15. if (mysql_connect($sql_host, $sql_user, $sql_password) and mysql_select_db($sql_baza)) {
  16. $zapytanie = mysql_query("SELECT * FROM drivers");
  17. if ($zapytanie) {
  18.  
  19. $rezultat = ''; // inicjalizujemy zmienna
  20. while ($wynik = mysql_fetch_array($zapytanie)) {
  21. if ($rezultat != '') {
  22. // rezultat NIE jest pusty, wiec dodajemy przecinek i spacje
  23. $rezultat .= ','; // to jest to samo co: $rezultat = $rezultat . ', ';
  24. }
  25.  
  26. $rezultat .= $wynik["nick"];
  27.  
  28. }
  29.  
  30. } else {
  31. echo "Nie można wykonać zapytania!";
  32. }
  33. }
  34.  
  35.  
  36. $request = 'http://world.needforspeed.com/SpeedAPI/ws/game/1/nfsw/leaderboards?et='.$tryb.'&eid='.$trasa.'&lt=1&dn='.$rezultat.'&output=xml';
  37.  
  38. // POST the curl session object
  39. $session = curl_init($request);
  40.  
  41. // Set the POST options.
  42. curl_setopt ($session, CURLOPT_POST, true);
  43. curl_setopt ($session, CURLOPT_POSTFIELDS, $request);
  44. curl_setopt($session, CURLOPT_HEADER, true);
  45. curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
  46.  
  47. // Do the POST and then close the session
  48. $response = curl_exec($session);
  49. curl_close($session);
  50.  
  51. // POST HTTP Status code from the response
  52. $status_code = array();
  53. preg_match('/\d\d\d/', $response, $status_code);
  54.  
  55. // Check for errors
  56. switch( $status_code[0] ) {
  57. case 200:
  58. // Success
  59. break;
  60. case 503:
  61. die('Service unavailable. An internal problem prevented us from returning data to you.');
  62. break;
  63. case 403:
  64. die('Forbidden. You do not have permission to access this resource, or are over your rate limit.');
  65. break;
  66. case 409:
  67. die('<font color="white"> Nie można pobrać danych z serwerów EA. Prawdopodobnie serwery są wyłączone.</font> ');
  68. break;
  69. case 400:
  70. // You may want to fall through here and read the specific XML error
  71. die('Bad request. The parameters passed to the service did not match as expected. The exact error is returned in the XML response.');
  72. break;
  73. default:
  74. die('Your call returned an unexpected HTTP status of:' . $status_code[0]);
  75. }
  76.  
  77. // POST the XML from the response, bypassing the header
  78. if (!($xml = strstr($response, '<?xml'))) {
  79. $xml = null;
  80. }
  81.  
  82. ?>
  83.  
  84.  
  85. <table class="sortable" border="1" align="left" rules="all" width="100%" id="tabela">
  86. <!-- Table Header -->
  87. <thead>
  88.  
  89. <tr>
  90. <th background='tlo.png'>LP.</th>
  91. <th background='tlo.png'>Nick</th>
  92. <th background='tlo.png'>Czas</th>
  93. <th background='tlo.png'>Marka</th>
  94. <th background='tlo.png'>Model</th>
  95. </tr>
  96.  
  97. </thead>
  98.  
  99. <!-- Tabel body-->
  100. <tbody>
  101.  
  102.  
  103.  
  104. <?php
  105. // Output the XML
  106.  
  107. $worldLeaderboard = simplexml_load_string($xml);
  108.  
  109. foreach ($worldLeaderboard->worldLeaderboard as $world)
  110. {
  111. $playername = '<td><a href="profil2.php?nick=' . $world['personaName'] . '">' . $world['personaName'] . '</a></td>';
  112. $playertime = '<td>' . $world['eventDuration'] . '</td>';
  113. $playerrank = '<td>' . $world['rank'] . '</td>';
  114.  
  115. $tekst = '<td>' . $world['make'] . '</td>';
  116. $tekst2 = '<td>' . $world['carName'] . '</td>';
  117.  
  118. $playermake = str_replace('CAR_MANU_', '', $tekst);
  119. $playercar = str_replace('CAR_MDL_', '', $tekst2);
  120.  
  121. echo "<tr align='center'>$playerrank $playername $playertime $playermake $playercar</tr>";
  122.  
  123. }
  124. ?>
  125. </tbody>
  126.  
  127. <!-- Tabel footer-->
  128. <tfoot>
  129.  
  130. <tr>
  131. <td></td>
  132. <td></td>
  133. </tr>
  134.  
  135. </tfoot>
  136. </table>
  137. <?php
  138. include 'dol.php';
  139. ?>
  140.  
  141.  


Plik XML wygląda mniej więcej tak:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <list>
  3. <worldLeaderboard eventId="45" eventType="2" eventMode="1" eventDurationMilliseconds="119520" eventDuration="0:01:59.520" personaName="DATA0001F" make="TOYOTA" carName="COROLLA GT-S (AE86)" rank="1">
  4. <persona personaName="DATA0003D" level="2" image="8" statusMessage="" defaultPersona="true"/>
  5. <worldLeaderboard/>
  6. <worldLeaderboard eventId="45" eventType="2" eventMode="1" eventDurationMilliseconds="119534" eventDuration="0:01:59.534" personaName="DATA0002F" make="MAZDA" carName="MAZDASPEED 3" rank="2"/>
  7. <persona personaName="DATA0002F" level="2" image="5" statusMessage="" defaultPersona="true"/>
  8. <worldLeaderboard/>
  9. <worldLeaderboard eventId="45" eventType="2" eventMode="1" eventDurationMilliseconds="139755" eventDuration="0:02:19.755" personaName="DATA0003F" make="NISSAN" carName="240SX (S13)" rank="3"/>
  10. <persona personaName="DATA0003F" level="2" image="3" statusMessage="" defaultPersona="true"/>
  11. <worldLeaderboard/>
  12. </list>


Moje pytanie brzmi, co mam zrobić aby przenieść dane z tego XML-a do MySql. Jak powinna wyglądać baza danych (ja myślałem nad tym aby zrobić oddzielną bazę danych na statystyki wyścigów, a w niej tabele o nazwach wyścigów) . Jestem kompletnie zielony w tym temacie, a więc oczekuję od Was pomocy. Być może są poradniki (najlepiej w języku polskim- jeszcze się uczę więc nie załapię wszystkich słów z poradników obcojęzycznych) do funkcji która pozwoliłaby przenieść dane z XML do MySql.

Gdyby komuś było potrzebne to na tej stronie jest opisane jak wygląda to wszystko po ich stronie z tym XML-em: http://world.needforspeed.com/SpeedAPI/doc/
Z góry dziękuję za pomoc
Pozdrawiam
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: 1.06.2024 - 00:58