Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Własna baza danych
Mistycus
post 8.05.2002, 09:53:50
Post #1





Grupa: Zarejestrowani
Postów: 234
Pomógł: 0
Dołączył: 9.04.2002
Skąd: Łódź

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


Nie wiem, do którego działu najlepiej pasowałby ten temat (MySQL, PostgreSQL), więc piszę tu smile.gif
Ostatnio pisałem skrypt bazy danych na plikach CSV, czyli takich, w których pierwsza linia zawiera nazwy pól pooddzielane jakimś separatorem, a następne linie zawierają dane (również oddzielone tym samym separatorem). Porzuciłem ten projekt i zacząłem pisać skrypt na nieco innej zasadzie. Otórz założyłem, iż dane w bazie nie będą oddzielane separatorami, lecz będzie podawana długość każdego pola, czyli taki zapis: 004016MarsCzerwona planeta oznacza, że pierwsze pole (4 znaki) ma wartość "Mars", a drugie (16 znaków) "Czerwona planeta". Taki zapis ma jednak wady, ponieważ na początku bazy (pliku z danymi) muszę podawać z ilu cyfr ma się składać każda liczba reprezentująca ilość znaków pola, czyli np. muszę podać 3, aby liczby miały postać: 001, 002, 003 itd., lub wpisać 4 dla licyb w postaci 0001, 0002, 0003 itd.
Mój problem polega na tym, że nie wiem jak mogę to uprościć, aby liczby mogły być zapisywane jako 1, 2, ... 7, 8, 9 , 10 , 11, ... 98, 99, 100, 101, a nie 001, 002, ... 007, 008, 009 , 010 , 011, ... 098, 099, 100, 101, bo przecież skrypt musi wiedzieć, jak odczytać na przykład coś takiego 123456(tak 123, 456, czy może tak 12, 34, 56, a może 12, 3, 456, albo jeszcze inaczej). Myślałem także nad liczbami w systemie 16-wym, dzięki czemu dwucyfrowa liczba mogła by mieć wartości od hex:00 (dec:0) do hex:ff (dec:255), jednakże czasami potzrebna jest większa liczba, więc musiałbym stosować trzyznakowe od 000 do fff i tu znów pojawia się ten sam problem, bo liczby muszą się składać aż z trzech znaków. Czy da się coś zrobić, aby każdy rekord w bazie danych nie rozpoczynał się długim ciągiem cyfr typu 0080050090a40060040100c2:?:


--------------------
Pozdrawiam,
Mistycus
Go to the top of the page
+Quote Post
dvc
post 8.05.2002, 15:46:27
Post #2





Grupa: Zarejestrowani
Postów: 139
Pomógł: 0
Dołączył: 29.04.2002
Skąd: Warszawa

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


jak dla mnie to nie masz wyjścia separator musisz zastosować;
np. 3;156alama kota
nawet nie widze jakiegos innego wyjscia nawet teoretycznego,
bo skad skrypt bedzie wiedzial to:

3156alama kota

Separator bedzie tu jedynym rozwiazaniem rolleyes.gif

a może użyj MySQL lub PostgeSQL


--------------------
.: [ DV ] :.
Go to the top of the page
+Quote Post
Mistycus
post 8.05.2002, 16:52:48
Post #3





Grupa: Zarejestrowani
Postów: 234
Pomógł: 0
Dołączył: 9.04.2002
Skąd: Łódź

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


Mój pierwszy skrypt zapisywał dane do bazy w postaci:
Kod
utwor;kompozytor

Requiem;Mozart

Stabat mater;Jacopone da Todi

O Fortuna;Orff

Missa pro pace;Kilar

Potem zmieniłem skrypt pozbywając się separatorów, więc zapis w bazie wyglądał mniej więcej tak:
Kod
2

0510utworkompozytor

0706RequiemMozart

1216Stabat materJacopone da Todi

0904O FortunaOrff

1405Missa pro paceKilar
Ta dwójka na początku oznacza, że każda liczba składa się z dwóch cyfr, czyli np. 05, a nie 5 :!: W rzędzie niżej znajdują się nazwy zmiennych, a w następnych wartości smile.gif

Czy macie może jakiś inny pomysł na stworzenie bazy danych :?:

[quote] 3;156alama kota (...)Pozbyłem się separatorów między poszczególnymi polami, aby zastąpić je separatorami między liczbami na początku :?: To chyba lepszy już był mój poprzedni skrypt :?


[quote]a może użyj MySQL lub PostgeSQL[/quote]MySQL'a, ani żadnej innej tego typu bazy nie chcę używać, bo mało który darmowy polski serwer obsługuje którąkolwiek z nich.


--------------------
Pozdrawiam,
Mistycus
Go to the top of the page
+Quote Post
Seth
post 8.05.2002, 16:56:52
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Dlaczego nie chcesz uzywac separatorow :?:
Go to the top of the page
+Quote Post
Mistycus
post 8.05.2002, 17:17:45
Post #5





Grupa: Zarejestrowani
Postów: 234
Pomógł: 0
Dołączył: 9.04.2002
Skąd: Łódź

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


Cytat
Dlaczego nie chcesz uzywac separatorow :?:
Bo znak, którego użyłem do separacji, mógłby wystąpić również wewnątrz jakiegoś wpisu w bazie, więc przed dopisaniem czegokolwiek do bazy, dane musiałyby być sprawdzane na zawartość tego znaku, a jeśli by wystąpił, musiałby być przekonwertowany na jakiś "zastępnik", np. w przypadku ; mógłbym użyć &średnik, a zatem i znak & musiałbym przekonwertować na coś innego (np. &and) :?


--------------------
Pozdrawiam,
Mistycus
Go to the top of the page
+Quote Post
kryr
post 9.05.2002, 11:53:29
Post #6





Grupa: Zarejestrowani
Postów: 268
Pomógł: 0
Dołączył: --
Skąd: kielce

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


Mozesz tez uzyc jakiegos "dziwnego" separatora np: ~`~ chyba nikt nie bedzie chcial wpisywac czegos takiego do bazy...
Mozesz tez kazde pole oddzielic "n" - czemu nie, problem bedzie tylko, jezeli bedziesz chcial dodac jeszcze jedno pole...
Albo ustalic szerokosc kazdego pola, zpiasywac i wczytywac dane przez scanf, sprintf...
Go to the top of the page
+Quote Post
post 9.05.2002, 13:13:02
Post #7





Grupa:
Postów: 0
Pomógł:
Dołączył: --

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


kryr masz racje najlepiej zastosować jakiś nietypowy
separator i po bulu np. n
takiego to chyba nikt nie wpisze
a nawet jeśli ktoś będzie chciał coś takiego wpisać to można temu łatwo
zaradzić pisząc funkcję która sprawdza czy we wpisanych danych jest
ten separator n jesli bedzie to zamienic na coś innego np. (n)
lub coś innego
Go to the top of the page
+Quote Post
dvc
post 9.05.2002, 13:17:29
Post #8





Grupa: Zarejestrowani
Postów: 139
Pomógł: 0
Dołączył: 29.04.2002
Skąd: Warszawa

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


znowu mój tekst poszedł jako anonymous

bo się nie zalogowałem :oops:

a tak wogóle to pierwszy pomysł z separatoem
był najlepszy czyli:

ala;ma kota;i już


--------------------
.: [ DV ] :.
Go to the top of the page
+Quote Post
Mistycus
post 9.05.2002, 18:46:18
Post #9





Grupa: Zarejestrowani
Postów: 234
Pomógł: 0
Dołączył: 9.04.2002
Skąd: Łódź

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


W moim pierwszym skrypcie "baza danych" użyłem separatora -|- i chyba do tego wrócę. Tak czy siak, wprowadzę zastępowanie niektórych znaków (dla bezpieczeństwa :wink: ).


--------------------
Pozdrawiam,
Mistycus
Go to the top of the page
+Quote Post
dvc
post 10.05.2002, 08:38:39
Post #10





Grupa: Zarejestrowani
Postów: 139
Pomógł: 0
Dołączył: 29.04.2002
Skąd: Warszawa

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


pierwsze pomysły zawsze są najlepsze, prawda?

podobnie mam ze swoimi wierszami rolleyes.gif


--------------------
.: [ DV ] :.
Go to the top of the page
+Quote Post
kryr
post 10.05.2002, 09:27:05
Post #11





Grupa: Zarejestrowani
Postów: 268
Pomógł: 0
Dołączył: --
Skąd: kielce

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


wierszopleta?questionmark.gif
Go to the top of the page
+Quote Post
dvc
post 10.05.2002, 13:52:11
Post #12





Grupa: Zarejestrowani
Postów: 139
Pomógł: 0
Dołączył: 29.04.2002
Skąd: Warszawa

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


kiedyś się pisało teraz rzadziej

teraz moją miłością oraz poezją jest php
aczkolwiek coś od czasu do czasu bazgrnę
---------------------------------------------------

Mam pytanie:
robię sobie licznik wersji, przy każdej modyfikacji pliku
licznik zwiększa się o jeden, żeby tego było mało nie robię tego dla jednego pliku tylko dla całej masy plików;
najpierw mój skrypcik sprawdza czy dany plik, ten który się w danym momencie otwiera jest w bazie czy nie...
i tu się zaczyna już problem ...
do bazy zapisywana jest nazwa pliku ze scieszką, czas ostatniej modyfikacji itp., wszystko to czyli dane na temat jednego pliku zapisywane są w jednej linii (na szczęście nie jest tego dużo)
kolejny plik kolejna linia w bazie itd.

ale gdy plik jest w bazie i czas ostatniej akutalizacji różni się od faktycznego to chciałbym zmodyfikować dane w bazie a tym samym licznik zwiększyć o jeden (licznik to mi się zwiększa z tym nie mam problemu) tylko z modyfikacja są problemy czy wiecie jak to zrobić?


--------------------
.: [ DV ] :.
Go to the top of the page
+Quote Post
Mistycus
post 10.05.2002, 23:47:07
Post #13





Grupa: Zarejestrowani
Postów: 234
Pomógł: 0
Dołączył: 9.04.2002
Skąd: Łódź

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


Cytat
tylko z modyfikacja są problemy czy wiecie jak to zrobić?
Chodzi Ci o modyfikację wpisu w bazie :?: Jeśli tak, to jakiej używasz :?: Swojej własnej :?: Pewnie tak, skoro piszesz w tym wątku. Domyślam się, że nie masz wszystkich potrzebnych funkcji, skoro nie potrafisz wyedytować wprowadzonych już danych.


--------------------
Pozdrawiam,
Mistycus
Go to the top of the page
+Quote Post
kryr
post 11.05.2002, 13:54:18
Post #14





Grupa: Zarejestrowani
Postów: 268
Pomógł: 0
Dołączył: --
Skąd: kielce

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


No niestety trzeba cala baze skopiowac podmieniajac jeden wpis...
Go to the top of the page
+Quote Post
dvc
post 11.05.2002, 16:36:42
Post #15





Grupa: Zarejestrowani
Postów: 139
Pomógł: 0
Dołączył: 29.04.2002
Skąd: Warszawa

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


Mistycus: questionmark.gifquestionmark.gif
kryr: miałem taki sam pomysł biggrin.gif

Mam pliczek a w nim wpisy np.
0.78!index.php3:1016205306
0.78!index2.php3:1016205306
...
itd.

gdzie 0.78 to nr ver. potem jest plik a na końcu data ost. modyfikacji
ale dzisiaj stwierdziłem, że tak być nie może i postanowiełem, że zrobie to tak
0.78
index.php3:1016205306
index2.php3:1016205306
...

no właśnie tylko mam problem z aktualizacją

Mistycus: o jakie funkcie chodzi :?:


--------------------
.: [ DV ] :.
Go to the top of the page
+Quote Post
kryr
post 11.05.2002, 16:47:35
Post #16





Grupa: Zarejestrowani
Postów: 268
Pomógł: 0
Dołączył: --
Skąd: kielce

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


sproboj z fseek() cos pokombinowac ... mozesz dzieki temu nadpisac jeden rekord w bazie, chyba... (nie mam pojecia, czy to zadziala :!: )
Go to the top of the page
+Quote Post
dvc
post 11.05.2002, 16:54:54
Post #17





Grupa: Zarejestrowani
Postów: 139
Pomógł: 0
Dołączył: 29.04.2002
Skąd: Warszawa

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


a jak ustawić fseek() w nowej linii ?
skoro podaje się jako tylko jedną wartość
chyba ze 255 to koniec jednej linii , hmm?

(czytaj poprzedni mój post)

prosze o pomoc....


--------------------
.: [ DV ] :.
Go to the top of the page
+Quote Post
kryr
post 11.05.2002, 16:58:14
Post #18





Grupa: Zarejestrowani
Postów: 268
Pomógł: 0
Dołączył: --
Skąd: kielce

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


Ugh, niestety takowej mozliwosci nie ma... :?
Go to the top of the page
+Quote Post
dvc
post 11.05.2002, 17:04:39
Post #19





Grupa: Zarejestrowani
Postów: 139
Pomógł: 0
Dołączył: 29.04.2002
Skąd: Warszawa

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


no właśnie to jest ten ból sad.gif

(czytaj dwa przed ostatnie moje posty na tym forum)
------


--------------------
.: [ DV ] :.
Go to the top of the page
+Quote Post
Mistycus
post 11.05.2002, 21:48:13
Post #20





Grupa: Zarejestrowani
Postów: 234
Pomógł: 0
Dołączył: 9.04.2002
Skąd: Łódź

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


Cytat
Mistycus: o jakie funkcie chodzi :?:
Nadal nic nie wiem o Twojej bazie rolleyes.gif


--------------------
Pozdrawiam,
Mistycus
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 23.04.2024 - 08:14