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
dvc
post 12.05.2002, 12:02:44
Post #21





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

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


przecież ładnie opisałem co i jak biggrin.gif

plik np.: ver.txt
linie w pliku:
0.78
index.php3:101551616
mod.php3:12121213

koniec pliku ver.txt

plik index.php3
...
include(ver.php3);
..


plik ver.php3:

sprawdzam date aktualizacji aktualnego pliku czyli index.php3
tu musze pobrać numer wersji czyli 1 linie z pliku ver.txt [0.78]
teraz sprawdzić czy aktualna nazwa pliku czyli index.php3 jest w pliku
ver.txt
jeśli jest to sprawdzić czy czas aktualizacji różni się od obecnego jesli tak
to numer wersji +1 oraz dokonać aktualizacji czasu modyfikacji pliku index.php3 w ver.txt ale dane o innych plikah muszą być nie naruszone

nie wiem co jeszce chcesz wiedzieć Mistycus


--------------------
.: [ DV ] :.
Go to the top of the page
+Quote Post
Mistycus
post 12.05.2002, 23:54:39
Post #22





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

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


Z tego co Ty napisałeś, wnioskuję, że nie użwasz żadnej bazy danych, ani nie napisałeś sobie skryptu do obsługi bazy na plikach. Mylę się :?:


--------------------
Pozdrawiam,
Mistycus
Go to the top of the page
+Quote Post
Mistycus
post 13.05.2002, 00:00:52
Post #23





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

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


Zajrzyj DVC do tematu o cnotkach, bo czeka tam na Ciebie kilka wazeliniarskich (tak je nazwał Seth) przeprosin za pisanie Twojego nicka z małych liter. Swoją drogą nie wiem, czemu Ci to przeszkadza. DVC, dvc (a może DVD tongue.gif ) - hmm... wielka różnica


--------------------
Pozdrawiam,
Mistycus
Go to the top of the page
+Quote Post
castor
post 13.05.2002, 07:36:04
Post #24





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

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


Cytat
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) :?


uzyj znaku ktoregonie mozna wprowadzic klawiatura!
np:
Kod
chr(7)


--------------------
pozdrawiam
CASTOR
Go to the top of the page
+Quote Post
dvc
post 13.05.2002, 08:26:21
Post #25





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

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


Mistycus: oczywiście, że napisałem skrypcik do obsługi swojej bazy na plikach, a właściwie na jednym pliku, bo po co mi więcej w tym wypadku

hmm, tak się zastanawiam cze czasem Mistycus nie chodziło ci o co innego
z tym skrypcikiem tzn. funkcie przeszukującą, wstawiającą itd....

nie, ja to mam przecież tylko nie jako funkcie smile.gif

i nie jestem taki obrażalski tylko tak wyszło z DVC
nie jestem DVD

wracając do bazy to wczoraj jeszcze posiedziałem nad swoim problemem
zrobilem jak napisałem wcześniej, ale gdzieś jeszcze jest mały błąd,
przez chwile działało ale ostatecznie się rozjechało
spoko w końcu kiedyś zrobie, nie ?


--------------------
.: [ DV ] :.
Go to the top of the page
+Quote Post
kryr
post 13.05.2002, 13:28:15
Post #26





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

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


castor: czy w tedy nie trzeba czasem uzywac binary-safe : fread fwrite questionmark.gif?
Go to the top of the page
+Quote Post
dvc
post 13.05.2002, 15:19:02
Post #27





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

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


a myślicie, że ktoś będzie chciał wpisać do bazy [n] ?


--------------------
.: [ DV ] :.
Go to the top of the page
+Quote Post
castor
post 13.05.2002, 18:09:32
Post #28





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

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


Cytat
castor: czy w tedy nie trzeba czasem uzywac binary-safe : fread fwrite questionmark.gif?


NIE!

przeciez to znak z tatbeli ASCII

ja uzywam od 28 do 31 bo to separatory smile.gif


--------------------
pozdrawiam
CASTOR
Go to the top of the page
+Quote Post
Mistycus
post 13.05.2002, 21:14:57
Post #29





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

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


Cytat
uzyj znaku ktoregonie mozna wprowadzic klawiatura!
np:
Kod
chr(7)
Racja, dzięki biggrin.gif
Cytat
Mistycus: oczywiście, że napisałem skrypcik do obsługi swojej bazy na plikach, a właściwie na jednym pliku, bo po co mi więcej w tym wypadku
Podejrzewałem, że zrobiłeś skrypt do obsługi tylko jednego pliku, ale czy nie lepiej używać uniwersalniejszych rozwiązań :?:
Cytat
wracając do bazy to wczoraj jeszcze posiedziałem nad swoim problemem
zrobilem jak napisałem wcześniej, ale gdzieś jeszcze jest mały błąd,
przez chwile działało ale ostatecznie się rozjechało
spoko w końcu kiedyś zrobie, nie ?
Powodzenia smile.gif :!:
Cytat
a myślicie, że ktoś będzie chciał wpisać do bazy [n] ?
Wystarczy, że wstawi entera


--------------------
Pozdrawiam,
Mistycus
Go to the top of the page
+Quote Post
dvc
post 14.05.2002, 08:25:34
Post #30





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

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


Mistycus: ale jak nie skorzystam z gotowych rozwiązań to więcej sie nauczę, prawda?
bedę mógł komus pomóc jak będzie miał problem (taki jak ja miałem)


--------------------
.: [ DV ] :.
Go to the top of the page
+Quote Post
Mistycus
post 15.05.2002, 03:17:13
Post #31





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

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


Nie piszę o rozwiązaniach gotowych, ale uniwersalnych - chodzi o to, abyś stworzył sobie skrypt do obsługi więcej niż jednego pliku. Ja ostatnio sobie taki zrobiłem, ale stwierdziłem, że to chyba jednak nie ma sensu (mój skrypt miał za wiele wad sad.gif ), więc zacznę używać MySQL'a :?


--------------------
Pozdrawiam,
Mistycus
Go to the top of the page
+Quote Post
dvc
post 15.05.2002, 08:28:16
Post #32





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

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


Mistycus: ale tak myśle, że na moje potrzeby i z założenia jakie przyjąłem powino mi to w zupełności wystarczyć

ten licznik wersji ma być uniwersalnym rozwiązaniem, gdyż
tam gdzie nie będę miał dostępu do bazy danych typu MySQL lub PostgrSQL będzie w 100% funkcjonalny biggrin.gif


--------------------
.: [ DV ] :.
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: 14.08.2025 - 06:17