Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ XML _ Dane z pliku XML do bazy SQL

Napisany przez: brzanek 25.08.2014, 08:44:17

Witam szukałem na forum ale nie znalazłem odpowiedniej podpowiedzi jak zrobić aby dane z zewnętrznego pliku xml były zapisywane w bazie danych sql.

Chodzi mi o to że ze strony o pogodzie odczytuję dane z pliku xml. Dane te aktualizują się co jakiś czas (co 30 min) http://www.yr.no/place/Polen/Vest-Pommern/Choszczno/forecast.xml
Czy jest ajkiś sposób aby można było zapisać te dane w odpowiednich tabelach w mojej bazie danych. Import musiał by robić się automatycznie z możliwością zadpisywania danych jeśli były zmienione oraz z możliwością dodawania nowych id bo codziennie pojawiają się nowe prognozy na kolejne dni.
Mam nadzieję że wyjaśniłem o co mi chodzi nie potrafię sobie z tym poradzić. Proszę o jakieś wskazuówki lub przykładowy kod. Z góry dziękuję i pozdrawiam.

Napisany przez: Turson 25.08.2014, 08:46:38

Napisz parser XML => twoja baza
Cronem odpalaj co 30min

Napisany przez: brzanek 25.08.2014, 08:53:45

Ah żeby to było takie proste jak piszesz to pewnie bym to zrobił. Możesz podać jakieś większe szczegóły. Nie znam się na tym.

Napisany przez: aniolekx 25.08.2014, 08:58:25

Cytat(brzanek @ 25.08.2014, 08:53:45 ) *
Ah żeby to było takie proste jak piszesz to pewnie bym to zrobił. Możesz podać jakieś większe szczegóły. Nie znam się na tym.


auto tez sam naprawiasz jak się nie znasz?

Napisany przez: Pyton_000 25.08.2014, 09:14:02

Może coś takiego:
http://rpbouman.blogspot.com/2006/03/importing-xml-data-into-mysql-using.html

Napisany przez: brzanek 25.08.2014, 09:52:10

Cytat(Pyton_000 @ 25.08.2014, 10:14:02 ) *
Może coś takiego:
http://rpbouman.blogspot.com/2006/03/importing-xml-data-into-mysql-using.html


Może to i dobry sposób ale coś mi nie wychodzi.
Z podanego pliku xml potrzebuję wyciągnąć tylko wybrane dane
  1. <time from="2014-08-25T10:00:00" to="2014-08-25T12:00:00" period="1"><!-- Valid from 2014-08-25T10:00:00 to 2014-08-25T12:00:00 --><symbol number="2" numberEx="2" name="Fair" var="02d"/><precipitation value="0"/><!-- Valid at 2014-08-25T10:00:00 --><windDirection deg="253.6" code="WSW" name="West-southwest"/><windSpeed mps="4.9" name="Gentle breeze"/><temperature unit="celsius" value="14"/><pressure unit="hPa" value="1014.9"/></time>

Oraz na kolejne godziny i dni
Zrobiłem już tabele w bazie danych
  1. CREATE TABLE `choszczno` (
  2. `id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `time_from` varchar(255) DEFAULT NULL,
  4. `time_to` varchar(255) DEFAULT NULL,,
  5. `symbol_var` int(255) DEFAULT NULL,
  6. `precipitation_value` int(255) DEFAULT NULL,
  7. `windDirection_code` int(255) DEFAULT NULL,
  8. `windSpeed_mps` int(255) DEFAULT NULL,
  9. `temperature_value` int(255) DEFAULT NULL,
  10. `pressure_value` int(255) DEFAULT NULL,
  11. PRIMARY KEY (`id`)
  12. ) ENGINE=MyISAM;

Ale dalej nie bardzo wiem jak napisać plik php aby otwierał plik z podanego pliku xml http://www.yr.no/place/Polen/Vest-Pommern/Choszczno/forecast.xml wybierał podane wcześniej potrzebne dane i zapisywał je w tabeli w bazie danych sql.
Ma ktoś jakiś pomysł albo jakiś dobry tutorial jak to zrobić?


Napisany przez: nospor 25.08.2014, 13:54:32

Czas to ma byc DATETIME a nie zadne VARCHAR
Inne wartosci liczbowe to z tego co widze w XML to są liczby rzeczywiste a nie całkowite.

Jak odczytac XML? uzyj SimpleXML - patrz manual php.
Gdy odczytasz XML przejdziemy do zapisu w bazie

Napisany przez: brzanek 25.08.2014, 19:53:42

Dobra udało mi się ocdczytać plik xml

  1. <?php
  2.  
  3. $weatherdata = simplexml_load_file('http://www.yr.no/place/Polen/Vest-Pommern/Choszczno/forecast.xml');
  4. $name = $weatherdata->location->name;
  5. $time = $weatherdata->forecast->tabular->time;
  6. $symbol = $weatherdata->forecast->tabular->time->symbol;
  7. $temperature = $weatherdata->forecast->tabular->time->temperature;
  8. $windDirection = $weatherdata->forecast->tabular->time->windDirection;
  9. $windSpeed = $weatherdata->forecast->tabular->time->windSpeed;
  10. $pressure = $weatherdata->forecast->tabular->time->pressure;
  11. ?>
  12. <style>
  13. .temp {
  14. background-color: #FEB100;
  15. color: #fff;
  16. font-family: arial;
  17. font-size: 12px;
  18. font-weight: bold;
  19. padding-bottom: 3px;
  20. padding-top: 3px;
  21. padding-left: 6px;
  22. padding-right: 6px;
  23. -webkit-border-radius: 6px;
  24. -moz-border-radius: 6px;
  25. border-radius: 6px;
  26. text-align: center;
  27. }
  28. .wiatr {
  29. background-color: #464646;
  30. color: #fff;
  31. font-family: arial;
  32. font-size: 12px;
  33. font-weight: bold;
  34. padding-bottom: 3px;
  35. padding-top: 3px;
  36. padding-left: 6px;
  37. padding-right: 6px;
  38. -webkit-border-radius: 6px;
  39. -moz-border-radius: 6px;
  40. border-radius: 6px;
  41. text-align: center;
  42. }
  43. .cisnienie {
  44. background-color: #e4e4e4;
  45. color: #444;
  46. font-family: arial;
  47. font-size: 12px;
  48. font-weight: bold;
  49. padding-bottom: 3px;
  50. padding-top: 3px;
  51. padding-left: 6px;
  52. padding-right: 6px;
  53. -webkit-border-radius: 6px;
  54. -moz-border-radius: 6px;
  55. border-radius: 6px;
  56. text-align: center;
  57. }
  58. .data {
  59. background-color: #f5f5f5;
  60. color: #555;
  61. font-family: arial;
  62. font-size: 12px;
  63. font-weight: bold;
  64. padding-bottom: 3px;
  65. padding-top: 3px;
  66. padding-left: 5px;
  67. padding-right: 5px;
  68. -webkit-border-radius: 5px;
  69. -moz-border-radius: 5px;
  70. border-radius: 5px;
  71. border: 1px solid #e4e4e4;
  72. width: 350px;
  73. text-align: center;
  74. }
  75. .miejscowosc {
  76. background-color: #2bb853;
  77. color: #fff;
  78. font-family: arial;
  79. font-size: 12px;
  80. font-weight: bold;
  81. padding-bottom: 3px;
  82. padding-top: 3px;
  83. padding-left: 5px;
  84. padding-right: 5px;
  85. -webkit-border-radius: 5px;
  86. -moz-border-radius: 5px;
  87. border-radius: 5px;
  88. text-align: center;
  89. }
  90. .tekst {
  91. color: #fff;
  92. font-family: arial;
  93. font-size: 12px;
  94. font-weight: bold;
  95. padding-bottom: 3px;
  96. padding-top: 3px;
  97. padding-left: 8px;
  98. padding-right: 8px;
  99. text-align: center;
  100. }
  101. .brak {
  102. padding-bottom: 3px;
  103. padding-top: 3px;
  104. padding-left: 4px;
  105. padding-right: 4px;
  106. text-align: center;
  107. }
  108. </style>
  109. <?php
  110. http://www.php.net/echo "<table border='0'>
  111. <tr>
  112. <td class='miejscowosc'>$name</td>
  113. <td class='tekst'>Prognoza na najbliższe godziny</td>
  114. </tr>
  115. </table>\n";
  116.  
  117. foreach ($weatherdata->forecast as $time) {
  118. http://www.php.net/echo '<table border="0" cellpadding="0" cellspacing="0">
  119. <tr>
  120. <td></td>
  121. </tr>
  122. </table>';
  123. http://www.php.net/echo '<table border="0" cellpadding="0" cellspacing="0" width="300px">
  124. <tr><td>';
  125. http://www.php.net/echo '<table border="0" cellpadding="0" cellspacing="0" width="60px">
  126. <tr>
  127. <td class="ikon"><img src="infusions/prognozy_panel/ikonki/'.$symbol['var'].'.png"</td>
  128. </tr>
  129. </table>';
  130. http://www.php.net/echo '</td><td align="left">';
  131. http://www.php.net/echo '<table border="0" cellpadding="0" cellspacing="5">
  132. <tr>
  133. <td class="temp">'.$temperature['value'].' ?C</td>
  134. <td class="brak"> </td>
  135. <td class="wiatr">'.$windSpeed['mps'].' m/s</td>
  136. <td class="brak"> </td>
  137. <td class="cisnienie">'.$pressure['value'].' hPa</td>
  138. </tr>
  139. </table>';
  140. http://www.php.net/echo '</td></tr></table>';
  141. }
  142.  
  143. ?>

http://djdandi.nazwa.pl/1/2015/choszcznomini.php
Brak ikonki oznacza że nie ma jej na serwerze ale to nie problem
W bazie danych zmieniłem tabele i dałem na datę DATATIME
Co dalej jak dodać do tego możliwość zapisania danych w bazie sql?

Napisany przez: nospor 26.08.2014, 07:01:03

Tym kodem pobierasz tylko po jednym rekordzie. A chyba ci chodzilo o pobranie wszystkich.

Napisany przez: brzanek 26.08.2014, 09:39:57

Tak dokładnie ale nie wiem jak to zrobić aby pobrał kolejne rekordy.

Napisany przez: nospor 26.08.2014, 11:38:09

http://pl1.php.net/manual/en/simplexml.examples-basic.php
Przyklad Example #4 Accessing non-unique elements in SimpleXML
Masz tam pokazane jak pobrac wszystkie CHARACTER. Analogicznie masz zrobic u siebie

Napisany przez: brzanek 26.08.2014, 14:50:50

W jakim miejscu mam umieścić ten kod?

Napisany przez: nospor 26.08.2014, 15:04:40

Ten kod pobiera dane z xml, więc masz go umieścić tam, gdzie chcesz pobrać dane z XML.

Napisany przez: brzanek 27.08.2014, 07:09:40

Coś nie mogę sobie z tym poradzić.
Daję taki kod.

  1. foreach ($weatherdata->forecast->time as $time) {
  2. http://www.php.net/echo $time->time, ' played by ', $time->time, PHP_EOL;


Ale nadal pojawia się pierwszy rekord.

Napisany przez: Pyton_000 27.08.2014, 07:16:48

  1. foreach ($weatherdata->forecast->tabular as $time) {
  2. http://www.php.net/echo $time->time, ' played by ', $time->time, PHP_EOL;

Napisany przez: nospor 27.08.2014, 07:42:59

Pyton ty tez źle napisales....

  1. foreach ($weatherdata->forecast->tabular->time as $time) {
  2. //i dopiero teraz lecisz po kazdym znaczniku <time> twojego XML
  3. }


Całość dobrania się do poszczegolnych danych:
  1. $weatherdata = simplexml_load_file('http://www.yr.no/place/Polen/Vest-Pommern/Choszczno/forecast.xml');
  2. foreach ($weatherdata->forecast->tabular->time as $time) {
  3. http://www.php.net/echo 'od: '.$time['from'].' do:'.$time['to'].' temperatura: '.$time->temperature['value'].' itd. <br />';
  4.  
  5. }

Napisany przez: brzanek 27.08.2014, 07:45:23

Dałem tak

  1. foreach ($weatherdata->forecast->tabular->time as $time) {
  2. //i dopiero teraz lecisz po kazdym znaczniku <time> twojego XML
  3. http://www.php.net/echo $time->symbol, ' played by ', $time->symbol, PHP_EOL;
  4. http://www.php.net/echo $time->temperature, ' played by ', $time->temperature, PHP_EOL;
  5. http://www.php.net/echo $time->windDirection, ' played by ', $time->windDirection, PHP_EOL;
  6. http://www.php.net/echo $time->windSpeed, ' played by ', $time->windSpeed, PHP_EOL;
  7. http://www.php.net/echo $time->pressure, ' played by ', $time->pressure, PHP_EOL;


Ale nadal wyświetla się tylko pierwszy rekord.
Dałem to zamiast tego.
  1. foreach ($weatherdata->forecast as $time) {


Napisany przez: nospor 27.08.2014, 07:46:26

Spojrz jeszcze raz na moj poprzedni post.... Masz tam podany cały poprawny kod...

Napisany przez: brzanek 27.08.2014, 08:11:14

Super wielkie dzięki teraz jeszcze pozostaje kwestia jak te dane zapisywać w bazie danych z możliwością nadpisywania i dodawania nowych rekordów.

Napisany przez: nospor 27.08.2014, 08:13:53

No dobra, ale czego nie wiesz? Jak wlozyc dane do bazy? Z innego tematu wiem, że wpisywales już coś do bazy, wiec z czym problem?

Napisany przez: brzanek 27.08.2014, 08:19:58

W innym temacie dane piszę ręcznie i tam wszystko idzie do bazy danych.
A w tym muszę zapisać dane pobierane przez xml typu temperatura i inne do bazy danych chodzi mi o same wartoście i z tym mam problem.

Napisany przez: nospor 27.08.2014, 08:21:50

Ale to nie ma zadnej roznicy czy wkladasz dane recznie czy ze zmiennych.

Poza tym w tamtym temacie tez nie wkladasz recznie tylko ze zmiennych.... O to
VALUES('$dzien', '$godzina', '$intensywnostmin', '$lat','$lng','$flaga','$miejsce')");
to jest wkladanie ze zmiennych.

Napisany przez: brzanek 27.08.2014, 08:26:35

Pewnie masz rację zwał jak zwał, ale możesz mi z tym pomóc? Nie wiem jak napisać kod, który doda mi rekordy z tymi danymi.

Napisany przez: nospor 27.08.2014, 08:28:01

No weź napisz tego insserta i nie czaruj... Przeciez juz inserty umiesz pisac. Wysil sie troche wkoncu sam.
Jak cos napiszesz i nie bedzie dzialac, to pomoge dalej, ale zacznij chociaz sam.

W tej petli co masz teraz zrobioną przeze mnie, masz dodac INSERT do bazy. Niczym to sie nie rozni od inserta, ktorego robisz w innym temacie.

Napisany przez: brzanek 27.08.2014, 09:18:41

Dobra zmieniłem trochę bazę danych
Do pliku dodałem to

  1. include ("db.php");
  2.  
  3. $time = $_POST['time'];
  4. $symbol = $_POST['symbol'];
  5. $temperature = $_POST['temperature'];
  6. $windDirection = $_POST['windDirection'];
  7. $windSpeed = $_POST['windSpeed'];
  8. $pressure = $_POST['pressure'];
  9. $add = http://www.php.net/mysql_query("INSERT INTO choszczno(time, symbol, temperature, windDirection, windSpeed, pressure) VALUES('$time', '$symbol', '$temperature', '$windDirection','$windSpeed','$pressure')");

Po odświerzeniu strony dodało jeden rekord ale z wartością 0
Więc coś nie tak.

Napisany przez: nospor 27.08.2014, 09:21:18

Jaki post? A gdzie petla?

Przeciez napisalem wyraznie:
zapytanie masz wlozyć w petle, którą ci napisalem. A wartosci to są te wartosci, ktore w tej petli wyswietlales a nie jakies rzeczy niz gruszki ni z pietruszki z posta.

Napisany przez: brzanek 27.08.2014, 09:29:08

ok dałem to w tej pętli

  1. include ("db.php");
  2. $add = http://www.php.net/mysql_query("INSERT INTO choszczno('.$time['from'].', '.$time->symbol['var'].', '.$time->temperature['value'].', '.$time->windDirection['value'].', '.$time->windSpeed['mps'].', '.$time->pressure['value'].') VALUES('$time', '$symbol', '$temperature', '$windDirection','$windSpeed','$pressure')");

Wyskakuje błąd w tej linii
  1. $add = http://www.php.net/mysql_query("INSERT INTO choszczno('.$time['from'].', '.$time->symbol['var'].', '.$time->temperature['value'].', '.$time->windDirection['value'].', '.$time->windSpeed['mps'].', '.$time->pressure['value'].') VALUES('$time', '$symbol', '$temperature', '$windDirection','$windSpeed','$pressure')");


Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/djdandi/ftp/1/2015/choszcznomini.php on line 111

Napisany przez: nospor 27.08.2014, 09:35:55

Przepraszam, wlasnie stracilem cierpliwosc... Moze odzyskam za kilka godzin smile.gif Byc moze w tym czasie pomoze ci ktos inny.

Napisany przez: Turson 27.08.2014, 09:45:20

1. Poprawna składnia wygląda np. tak

  1. INSERT INTO users(`id`, `login`) VALUES(1, 'Jan Kowalski')

2. Nazwy kolumn bierze się w ` (przykład wyżej), a nie ' (twój kod)
3. Jakim cudem nazwy kolumn masz w zmiennych ohmy.gif
4. '.$time['from'].' - takie coś jest bez sensu w tym przypadku. Podstawy: łączenie stringów/zmiennych


@edit
Literówka poprawiona. smile.gif

Napisany przez: brzanek 27.08.2014, 09:52:47

Zrobiłem tak jak podałeś ale wyskakuje błąd

  1. $add = http://www.php.net/mysql_query("INSERT INTO choszczno(`time` `symbol` `temperature` `windDirection` `windSpeed` `pressure`) VALUES('.$time['from'].', '.$time->symbol['var'].', '.$time->temperature['value'].', '.$time->windDirection['value'].', '.$time->windSpeed['mps'].', '.$time->pressure['value'].')");

Napisany przez: nospor 27.08.2014, 09:56:01

Nazwy kolumn oddziela się przecinkiem a nie spacją
Jesli do łączenia tekstow uzywasz '..' to i tekst ma sie zaczynac i konczyc ' a nie "
A wartosci tekstowe w zapytaniu bierze się w apostrofy, czego nadal nie robisz.

@Turson a Ty jak podajesz jak ma wygladac poprawna składnia, to patrz czy sam nie robisz w niej bzdurnych literowek.... tongue.gif

Napisany przez: brzanek 27.08.2014, 10:09:34

Dałem tak

  1. $add = http://www.php.net/mysql_query('INSERT INTO choszczno(`time`,`symbol`,`temperature`,`windDirection`,`windSpeed`,`pressure`) VALUES('.$time['from'].', '.$time->symbol['var'].', '.$time->temperature['value'].', '.$time->windDirection['value'].', '.$time->windSpeed['mps'].', '.$time->pressure['value'].')');

Strona wyświetla się ale nie dodają się rekordy do bazy danych sql

@nospor Nazwy kolumn oddziela się przecinkiem a nie spacją (zrobione)
Jesli do łączenia tekstow uzywasz '..' to i tekst ma sie zaczynac i konczyc ' a nie " (zrobione)
A wartosci tekstowe w zapytaniu bierze się w apostrofy, czego nadal nie robisz. '.$time->windDirection['value'].' czy to o to chodzi? Tak zawsze były.

Napisany przez: Turson 27.08.2014, 10:11:59

A gdzie masz tekst w apostrofach? :/ Bo jedyne co zrobiłeś to zmieniłeś " na ' i łączysz zmienne...
"INSERT INTO tabela(dupa1, dupa2) VALUES('$dupa1', '$dupa2')"
to nie jest naprawde trudne

@down
Nie trzyma jednej, bo już sam zmienił na inną.

Napisany przez: nospor 27.08.2014, 10:14:54

Super, zdecydowanie lepiej.
A wartosci tekstowe docelowo mają wygladac tak:
values ('wartosc tekstowa')
A u ciebie docelowo wygladaja tak
values (wartosc tekstowa)

Tak ma byc:

  1. $add = http://www.php.net/mysql_query('INSERT INTO choszczno(`time`,`symbol`,`temperature`,`windDirection`,`windSpeed`,`pressure`) VALUES(\''.$time['from'].'\', \''.$time->symbol['var'].'\', '.$time->temperature['value'].', '.$time->windDirection['value'].', '.$time->windSpeed['mps'].', '.$time->pressure['value'].')');

Jako tekst potraktowalem czas i symbol. Jesli jakies inne wartosci są tez tekstem, to masz zrobic analogicznie jak z czasem i symbolem

@Turson nie mieszaj już mu tych składni. Jak się trzyma jednej to niech się jej trzyma. I tak ledwo to ogarnia...

Napisany przez: brzanek 27.08.2014, 10:28:32

Ok działa zapisuje się tylko jest jeden problem jak odświerzam stronę to robią się nowe rekordy a powinno jeśli jest zmiana tylko je nadpisywać. Jutro jak wejdę ponownie na stronę to powinien pojawić się nowy rekord z nowymi danymi na kolejny dzień.

Napisany przez: nospor 27.08.2014, 10:32:49

Po pierwsze: zacznij w koncu uzywac znakow interpunkcyjnych... no wiesz: kropka, przecinek itp.

To zdanie:
Ok działa zapisuje się tylko jest jeden problem
powinno wygladac tak:
Ok, działa. Zapisuje się. Tylko jest jeden problem:
prawda ze czytelniej? Czytajacy nie musi sie zastanawiac gdzie konczy jedno a zaczyna drugie przez co czyta sie o wiele przyjemniej a nie jak u Ciebie wszystko ciurkiem i samemu trzeba wyłapywac kontekst :/

Co do problemu:
Mozesz to rozwiązac np. poprzez założenie unikalnych kluczy na wartosci, ktore będą mowic, ze dany zestaw danych moze pojawic sie tylko raz w tabeli smile.gif

Napisany przez: brzanek 27.08.2014, 10:35:55

Cytat(nospor @ 27.08.2014, 11:32:49 ) *
Co do problemu:
Mozesz to rozwiązac np. poprzez założenie unikalnych kluczy na wartosci, ktore będą mowic, ze dany zestaw danych moze pojawic sie tylko raz w tabeli smile.gif

To mnie zastrzeliłeś. Nie mam pojęcia jak to zrobić.

Napisany przez: nospor 27.08.2014, 10:38:33

Odnosze wrazenie, ze w tym temacie to wielokrotnie Cię zastrzeliłem i powinienes juz dawno 5 razy umrzec wink.gif

Manual mysql: UNIQUE KEY

Napisany przez: brzanek 27.08.2014, 11:30:01

Ale widzisz na raz wykonuje się kilkanaście rekordów z racji tego, że to jest prognoza na kilka dni. Parametry w tym czasie mogą się powtarzać. Chodzi o to że jak będę odświerzał stronę to pojawiają się aktualizacje prognozy z pliku xml
Przykładowo:
Dzisiaj o 18:00 temperatura ma być 17 stopni (i tak też zapisało się do bazy danych)
Jak wejdę np: za godzinę to temperatura na godzinę 18:00 może wynieść 14 stopni i tu powinno to się nadpisać.
Oczywiście po 3 godzinach pojawiają się prognozy na kolejne dni co powinno dawać nowe rekordy do bazy danych.

Napisany przez: nospor 27.08.2014, 11:34:31

No dobrze, wszystko się zgadza.
Dlatego ci tlumacze, że masz zalozyc UNIQUE KEY a zamiast
INSERT masz dac
INSERT....ON DUPLICATE KEY UPDATE
i wszystko bedzie cacy smile.gif

Jesli wiec to godzina jest wyznacza unikalnosc, to masz załozyc UNIQUE KEY na pole z data/godziną.

Napisany przez: brzanek 27.08.2014, 12:26:40

Ale jak zalozyc UNIQUE KEY?
Czy to robi się w bazie danych?

Napisany przez: Turson 27.08.2014, 12:29:36

Tak.
PhpMyAdmin -> baza -> tabela -> struktura

Napisany przez: brzanek 27.08.2014, 12:40:12

Nie mam pojęcia jak to zmienić w bazie danych nie mam takiej opcji UNIQUE

Napisany przez: Turson 27.08.2014, 12:45:24

W strukturze na dole jest "Indeksy" i tam dodajesz nowy

Napisany przez: brzanek 27.08.2014, 15:11:57

Cytat(nospor @ 27.08.2014, 12:34:31 ) *
No dobrze, wszystko się zgadza.
Dlatego ci tlumacze, że masz zalozyc UNIQUE KEY a zamiast
INSERT masz dac
INSERT....ON DUPLICATE KEY UPDATE
i wszystko bedzie cacy smile.gif

Jesli wiec to godzina jest wyznacza unikalnosc, to masz załozyc UNIQUE KEY na pole z data/godziną.

Dobra dodałem ten parametr UNIQUE w pole time

Teraz jak dać ten warunek INSERT....ON DUPLICATE KEY UPDATE

Napisany przez: Pyton_000 27.08.2014, 15:47:45

Jesteś LEŃ:
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

Napisany przez: brzanek 22.08.2016, 12:35:25

Przepraszam za odkopanie tematu ale dotyczy tej samej bazy i pliku xml więc nie zakładałem nowego.
Obecnie działa to na zasadzie, że po wywołaniu pliku php zostają zapisane dane z xml do bazy danych. Ponieważ te dane w pliku xml zmieniają się co 3 godziny potrzebne też są zmiany w bazie danych. Zależy mi na tym aby dane były nadpisywane bo nie potrzebne mi są kolejne rekordy. Tym bardziej, że rekordów jest zawsze tyle samo, zmieniają się tylko dane.
Próbowałem robić to przez UPDATE ale nie działa.
Proszę o pomoc.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)