Własna baza danych |
Własna baza danych |
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
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 |
|
|
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 a może użyj MySQL lub PostgeSQL -------------------- .: [ DV ] :.
|
|
|
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 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
0510utworkompozytor 0706RequiemMozart 1216Stabat materJacopone da Todi 0904O FortunaOrff 1405Missa pro paceKilar 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 |
|
|
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 :?:
|
|
|
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 |
|
|
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... |
|
|
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 |
|
|
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 ] :.
|
|
|
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 |
|
|
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 -------------------- .: [ DV ] :.
|
|
|
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?
|
|
|
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 ] :.
|
|
|
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 |
|
|
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...
|
|
|
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:
kryr: miałem taki sam pomysł 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 ] :.
|
|
|
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 :!: )
|
|
|
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 ] :.
|
|
|
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... :?
|
|
|
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
(czytaj dwa przed ostatnie moje posty na tym forum) ------ -------------------- .: [ DV ] :.
|
|
|
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
-------------------- Pozdrawiam,
Mistycus |
|
|
Wersja Lo-Fi | Aktualny czas: 23.04.2024 - 08:14 |