Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z załadowaniem danych XML do bazy
Forum PHP.pl > Forum > XML, AJAX > XML
huka
Witam,
mam problem z załadowaniem danych z pliku XML do bazy danych. Napisałem skrypt za pomocą którego pobierane są dane z pliku i przetwarzane przez parser. Wszystkie dane są wyświetlane na stronie jednak nie są wstawiane do tabeli. Nie wiem dlaczego tak się dzieje.
Jeżeli macie jakieś pomysły to dajcie znać.
Seth
Moja magiczna kula mowi mi, ze powodem tego jest brak podlaczonego tostera do pradu...

Mozna jasniej ? Jakis kod, ktorym wzucasz to do bazy, etc...
huka
tak wygląda skrypt:
  1. <?php 
  2. DEFINE (DB_USER,&#092;"praca\");
  3. DEFINE (DB_PASSWORD,&#092;"praca\");
  4. DEFINE (DB_HOST,&#092;"localhost\");
  5. DEFINE (DB_NAME,&#092;"praca\");
  6.  
  7. $db_connection = mysql_connect(DB_HOST);
  8. if(!$db_connection){
  9. print ERR_DB_CONNECT;
  10. if (mysql_errno()) 
  11. echo &#092;"<BR>Numer błędu:\" .mysql_errno(). \": \" .mysql_error() . \"<BR>n\";
  12. } 
  13.  
  14. $db_selected = mysql_select_db(DB_NAME);
  15. if(!$db_selected){
  16. print ERR_DB_CHANGE;
  17. if (mysql_errno()) 
  18. echo &#092;"<BR>Numer błędu:\" .mysql_errno(). \": \" .mysql_error() . \"<BR>n\";
  19. } 
  20. DEFINE (ERR_DB_CONNECT,&#092;"Problem z poł&plusmn;czeniem do bazy danych.\");
  21. DEFINE (ERR_DB_CHANGE,&#092;"Problem z baza danych.\");
  22.  
  23.  
  24.  
  25. // Ten skrypt przetwarza dokument XML, który pobiera jako argument.
  26.  
  27. if($student)
  28. $student_id = $student;
  29.  
  30. print(&#092;"<center><br><h4><b>Dane Studentów załadowanych z pliku XML </h4><BR></center>\");
  31. print(&#092;"<center><table border=1>\");
  32. print(&#092;"<tr><th align=\"center\\">Imie</th>
  33. <th align=&#092;\"center\">Nazwisko</th>
  34. <th align=&#092;\"center\">Numer indeksu</th>
  35. <th align=&#092;\"center\">Rok studiów</th>
  36. <th align=&#092;\"center\">Email</th>
  37. <th align=&#092;\"center\">Login</th>
  38. <th align=&#092;\"center\">Haslo</th></tr>\");
  39. // Zdefiniowanie funkcji wymaganych do obsługi różnych fragmentów informacji.
  40.  
  41. function handle_open_element ($p,$element){
  42. global $zapytanie;
  43. global $student_id;
  44. $element = strtolower($element);
  45. switch ($element) {
  46. case 'imie':
  47. $zapytanie .=&#092;"Imie\";
  48. break; 
  49. case 'nazwisko':
  50. $zapytanie .=&#092;",Nazwisko\";
  51. break; 
  52. case 'nr_inde':
  53. $zapytanie .=&#092;",Nr_indeksu\";
  54. break; 
  55. case 'rok_stu':
  56. $zapytanie .=&#092;",Rok_studiow\";
  57. break; 
  58. case 'email':
  59. $zapytanie .=&#092;",Email\";
  60. break; 
  61. case 'login':
  62. $zapytanie .=&#092;",Login\";
  63. break; 
  64. case 'haslo':
  65. $zapytanie .=&#092;",Haslo\";
  66. break; 
  67. case 'student':
  68. print(&#092;"<tr>\");
  69. $zapytanie=&#092;"INSERT INTO Studenci SET \";
  70. $zapytanie .=&#092;"id_studenta = '$student_id\";
  71. $zapytanie .=&#092;"Imie = '$imie', \";
  72. $zapytanie .=&#092;"Nazwisko = '$nazwisko', \";
  73. $zapytanie .=&#092;"Nr_indexu = '$nr_inde', \";
  74. $zapytanie .=&#092;"Rok_studiow = '$rok_stu', \";
  75. $zapytanie .=&#092;"Email = '$email', \";
  76. $zapytanie .=&#092;"Login = '$login', \";
  77. $zapytanie .=&#092;"Haslo= '$haslo'\";
  78.  
  79. break;
  80.  
  81. default:
  82. break;
  83. }
  84.  
  85. return $zapytanie;
  86. }
  87.  
  88. function handle_close_element ($p, $element) {
  89. global $zapytanie;
  90. $element = strtolower($element);
  91. if ($element == 'student'){
  92. // echo \"$zapytanie\";
  93. echo &#092;"</tr>\";
  94. $query_result = mysql_query($zapytanie);
  95. if(!query_result){
  96. print ERR_DB_CONNECT;
  97. if (mysql_errno()) 
  98. echo mysql_errno(). &#092;"(!): \" .mysql_error() . \"<BR>n\";
  99.  }
  100.  
  101.  }
  102. }
  103.  
  104. function handle_character_data ($p, $cdata) {
  105. global $zapytanie;
  106.  if ($cdata<>&#092;"n\"){
  107. $zapytanie .=&#092;" = '$cdata'\";
  108. echo &#092;"<td><I>$cdata</I></td>\";
  109.  }  
  110. }
  111.  
  112. // Koniec funkcji przetwarzających dane.
  113.  
  114. // Utworzenie analizatora i ustawienie funkcji obsługujących dane.
  115.  
  116. $p = xml_parser_create();
  117. xml_set_element_handler ($p, 'handle_open_element', 'handle_close_element');
  118. xml_set_character_data_handler ($p, 'handle_character_data');
  119.  
  120. // Czytanie pliku.
  121. $file='XML/plik'.$student_id.'.xml';
  122. $fp = @fopen ($file, 'r') or die (&#092;"Nie można otworzyć pliku: $file\");
  123. while ($data = fread ($fp, filesize($file))) {
  124. xml_parse ($p, $data, feof($fp));
  125. }
  126.  
  127. // Zwolnienie zasobów analizatora.
  128. xml_parser_free($p);
  129. echo &#092;"</table>\";
  130.  
  131. ?>
akubiczek
Rozgryzłeś juz problem? biggrin.gif

Bo pewnie dla tego nie działa, że ten skrypt jest troszkę bez sensu winksmiley.jpg Przypatrz się:

  1. <?php
  2.  
  3. $zapytanie .=&#092;"Imie = '$imie', \";
  4. $zapytanie .=&#092;"Nazwisko = '$nazwisko', \";
  5. $zapytanie .=&#092;"Nr_indexu = '$nr_inde', \";
  6. $zapytanie .=&#092;"Rok_studiow = '$rok_stu', \";
  7. $zapytanie .=&#092;"Email = '$email', \";
  8. $zapytanie .=&#092;"Login = '$login', \";
  9. $zapytanie .=&#092;"Haslo= '$haslo'\";
  10.  
  11. ?>


a teraz powiedz gdzie ustawiasz te zmienne?
huka
No własnie nie wiem jak to zmienić.

Do wyświetlenia danych na stronie skrypt działa poprawnie ale żeby wstawić do bazy to już nie bardzo.

Jak masz propozycje co należy dopisać lub pozmieniać to napisz bo przyznam szczerze że nie bardzo wiem co należy wykonać aby wszystko było ok.
rolling_stone
Nie znam się tak dobrze na SQL-u, ale wiem, że numer z SET-em przechodzi tylko w przypadku polecenia UPDATE.

Spróbuj tak:

  1. <?php
  2. $zapytanie = &#092;"INSERT INTO Studenci(`id_studenta`,`Imie`,`Nazwisko`,`Nr_indexu`,`Rok_studiow`,`Email`,`Login`,`
    H
  3. slo`) VALUES ('$student_id','$imie','$nazwisko','$rok_inde','$rok_stu','$email','$login','$haslo')\";
  4. ?>



Jeśli jakąś zmienną przeinaczyłem, to przepraszam.
akubiczek
Cytat(rolling_stone @ 2004-08-20 21:25:57)
Nie znam się tak dobrze na SQL-u, ale wiem, że numer z SET-em przechodzi tylko w przypadku polecenia UPDATE.

Nieprawda

Kod
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
    [INTO] tbl_name
    SET col_name={expression | DEFAULT}, ...
    [ ON DUPLICATE KEY UPDATE col_name=expression, ... ]
rolling_stone
w porządku, mój błąd, ale zastrzegłem, że się niezbyt dobrze znam na SQL-u. sorry
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.