Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Zapis do bazy.
lordwader
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.11.2010

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


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!
Go to the top of the page
+Quote Post
czachor
post
Post #2





Grupa: Zarejestrowani
Postów: 897
Pomógł: 40
Dołączył: 16.12.2003
Skąd: Warszawa

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


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.


--------------------
how many SEO experts does it take to change a light bulb,lightbulb,light,bulb,lamp,lighting,switch,sex,xxx
5-Reasons-why-you-should-NEVER-fix-a-computer-for-free
Go to the top of the page
+Quote Post
lordwader
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.11.2010

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


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
Go to the top of the page
+Quote Post
ADeM
post
Post #4





Grupa: Zarejestrowani
Postów: 455
Pomógł: 69
Dołączył: 23.10.2004
Skąd: Oświęcim

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


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.


--------------------
Go to the top of the page
+Quote Post
jacusek
post
Post #5





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

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


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

Ten post edytował jacusek 19.01.2011, 13:52:23
Go to the top of the page
+Quote Post
lordwader
post
Post #6





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.11.2010

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


Dzięki za proste i skuteczne rozwiązanie smile.gif
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 Aktualny czas: 19.08.2025 - 04:51