Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zapis do bazy.
Forum PHP.pl > Forum > Przedszkole
lordwader
Witam.

Pobieram kursy walut. Wszystko gra. Teraz napotkał mnie problem zapisu do bazy.

Chodzi o to ze skrypt ma się wykonywać raz dziennie. Póki co testuję sobie na webservie. Wiadomo, że jak zacznę odświeżać stronę to skrypt będzie wywoływany. Wtedy te same dane się powielają. Jak można to zabezpieczyć?

Wpadłem też na pomysł aby codziennie tworzyć tabele. Pomysł fajniejszy. Jakiś porządek byłby zachowany.

CODE
mysql_query("CREATE TABLE $data_publikacji (test varchar(50)) ")


Wtedy można by łatwo pozbyć się problemu dodając IF NOT EXIST.
Tak mi się wydaję. Jednak problem z tym, że nie chce mi takiej tabeli tworzyć. Ogólnie zauważyłem, że nie można tworzyć tabel gdzie nazwą mają być cyferki.

Help!
czachor
A po co tworzyć nową tabelę? Dodaj do tabeli pole "date", wstawiaj tam bieżącą datę. Potem tylko sprawdzasz, czy data w bazie jest wcześniejsza niż obecna i wtedy aktualizujesz dane.
lordwader
hm.. nie bardzo rozumiem. Może jeszcze raz wyjaśnię.


Pobieram codziennie kursy walut (około 10 kursów). Muszą być one zapisywane do bazy. Mogą być w jednej tabeli. Chodzi o to by zabezpieczyć samo zapisywanie.

Struktura tabeli będzie wyglądać mniej więcej tak (id, data, nazwa, kurs).

Gdy skrypt wykona się np. 2 razy (co nie powinno mieć miejsca ;p) to do tabeli właduje mi niepotrzebnie dodatkowe 10 wpisów (zdubluje się).

Dane ogólnie są gromadzone w celu prognozowania kursów.

Jeżeli jest jakiś prosty sposób to bym to zrobił. Jak nie to odpuszczę sobie
ADeM
To w takim razie stwórz tabele z polami data, nazwa, kurs i możesz ustawić klucz głowny jako data+nazwa. Więcej Ci chyba nie jest potrzebne.
jacusek
Po pierwsze żeby Ci się nie dublowały wpisy z różnymi kursami możesz założyć na kilku kolumnach klucz unique - choć można sobie wyobrazić sytuację, że jednago dnia będzie więcej niż jeden kurs na daną walutę. jeżeli nie ten sposób jest dość skuteczny. U mnie przynajmniej działa, choć w innych okolicznościach
Też nie bardzo rozumiem jaki jest sens wpisywania tego w kilka tabel na raz.
a tu kod tabeli:
  1. CREATE TABLE `waluty` (
  2. `id` INT(10) NOT NULL AUTO_INCREMENT,
  3. `data` TIMESTAMP NOT NULL,
  4. `walut` VARCHAR(10) NOT NULL DEFAULT NULL,
  5. `kurs` FLOAT NOT NULL DEFAULT NULL,
  6. PRIMARY KEY (`id`),
  7. UNIQUE INDEX `data_walut` (`data`, `walut`)
  8. )
  9. COLLATE='utf8_general_ci'
  10. ENGINE=InnoDB
  11. ROW_FORMAT=DEFAULT


ADeM mnie wyprzedził aaevil.gif
lordwader
Dzięki za proste i skuteczne rozwiązanie smile.gif
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.