![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 25.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam problem, ponieważ chcę stworzyć kod, który umożliwiłby edytowanie/usuwanie znalezionych pozycji z pliku.
Tak wyglądają fragmenty plików: baza.txt każda linia to kolejny element zbioru Cytat Mickiewicz Adam||Dziady||PWN||1985||456123-987-987 Sienkiewicz Henryk||Potop||PWN||1992||1236-9875-4865 Jajuga Krzysztof||Inwestycje||WN PWN||2007||7896-5235-7842 Szewczyk Ryszard||Bankowa obsługa firmy||Oficyna Ekonomiczna||2002||7896-5654-5456 do tego użyć chciałem już wcześniej stworzonej wyszukiwarki: edytor.php fragment kodu
I teraz powstaje problem ponieważ zawsze może zdażyć sie sytuacja, że wyszukany autor bedzie miał kilka książek, a my chcemy edytować tą jedną bez konieczności kolejnego wpisywania inf do wyszukiwarki. Myślałem o tym aby do każdego z wyszukanych elementów dodatkowo pojawiał sie przycisk [Edytuj] ale nie wiem jak to wykonać bo moja propozycja wykonania jest błędna. "Edycja.php" - to jest formularz do którego chcę wczytać wybrany element. I tutaj również powstaje problem typu: Jak przesłać dane, ale narazie nie zagłębiam sie w ten temat, ponieważ póki nie rozwiąże tego nic wiecej nie ma sensu robić. Edit: 17:00 Właśnie wpadłem na pomysł,ale nie wiem czy to jest logiczne, aby funkcja [Edytuj] powodowała zapis wybranego elementu do pliku np: edyt.txt i nastepnie formularz uzupełniany byłby za pomocą odczytu z tego pliku. Wtedy moglibyśmy wprowadzić zmiany i zapisać spowrotem do baza.txt. Tylko ze powstałby wtedy problem z tym aby nowa wersja nadpisała starą wersję. Ponieważ jakbyśmy przy zapisie do "edyt.txt" usunęli jednocześnie nasz wybrany element z bazy to w wypadku awarii utracilibysmy tą daną. Ten post edytował Krisso 6.01.2008, 17:02:41 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 439 Pomógł: 21 Dołączył: 28.06.2007 Skąd: Bielsko-Biała Ostrzeżenie: (0%) ![]() ![]() |
a czy nie lepiej użyć SQL?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 25.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Ogólnie to chcę wszystko stworzyc na plikach, wiem że z baza danych byłoby łatwiej, ale ja wolę sobie wszystko troche utrudniać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Jak opanuję zasady działania na plikach wtedy ruszę do SQL znając wszystkie kruczki łatwiej będzie mi sie później poruszać w PHP i MYSQL. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 439 Pomógł: 21 Dołączył: 28.06.2007 Skąd: Bielsko-Biała Ostrzeżenie: (0%) ![]() ![]() |
no nie wiem... pliki Ci nic nie pomogą w SQL... jak poznasz ogólnie to nie raz przypadkiem poznasz funkcjie która pomoże Ci w innym wypadku.... jeśli tak bardzo chcesz na plikach.. to może lepiej na zserializowanych tablicach? serialize" title="Zobacz w manualu PHP" target="_manual
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 25.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dobra stworzyłem juz formularz który pozwala edytować i zapisywać zmiany:
edytor.php
Sprawa polega na tym, że to jest do edycji całego pliku a ja jak miałem problem tak mam z przesłaniem tylko wyszukanego fragmentu. Proszę o możliwie szybka pomoc, ponieważ na czwartek musze oddać projekt a brakuje mi jeszcze edycji,usuwania i logowania. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 439 Pomógł: 21 Dołączył: 28.06.2007 Skąd: Bielsko-Biała Ostrzeżenie: (0%) ![]() ![]() |
Jak na moje oko powinno działać... ale już się gubie... w pliku baza masz jedną czy więcej książek? jak pare to tu masz jak sobie z tym poradzić...
Pewnie nie dziala 50 lini kodu itd.... ale tu już sam kombinuj i napraw:) nie sprawdzałem, pisałem to w oknie szybkiej odpowiedzi:) Ten post edytował dadexix 7.01.2008, 14:49:03 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 318 Pomógł: 6 Dołączył: 27.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Poszukaj w necie informacji na temat indeksowania bazy danych. To podstawa, bo jak na moje, ŻADNE z pól nie wskazuje JEDNOZNACZNIE rekordu.
Po prostu dodaj pole id. To jest podstawa KAŻDEJ bazy - czy to SQL, czy to opartej na plikach. Ten post edytował uli 7.01.2008, 14:50:48 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 439 Pomógł: 21 Dołączył: 28.06.2007 Skąd: Bielsko-Biała Ostrzeżenie: (0%) ![]() ![]() |
Cytat To podstawa, bo jak na moje, ŻADNE z pól nie wskazuje JEDNOZNACZNIE rekordu. ale wszystkie razem wskazują chyba co nie? bo to hm... nie mądre by były w bazie 2 identyczne "rekordy"... a tym bardziej w tej bazie - jest ISBN - czy to czasem nie jest unikatowy "id" każdej książki? tak jest to unikatowy id:) http://pl.wikipedia.org/wiki/International...ard_Book_Number
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 318 Pomógł: 6 Dołączył: 27.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
ale wszystkie razem wskazują chyba co nie? bo to hm... nie mądre by były w bazie 2 identyczne "rekordy"... a tym bardziej w tej bazie - jest ISBN - czy to czasem nie jest unikatowy "id" każdej książki? tak jest to unikatowy id:) http://pl.wikipedia.org/wiki/International...ard_Book_Number Prawa. Ale szukanie po ISBN w pliku tekstowym (gdzie ISBN nie jest pierwszym rekordem) to trochę szaleńcze:) Nie uważasz? Niemniej zwracam honor - jest to jakiś klucz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#10
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
(...) w tej bazie - jest ISBN - czy to czasem nie jest unikatowy "id" każdej książki? tak jest to unikatowy id:) http://pl.wikipedia.org/wiki/International...ard_Book_Number To nic nie zmienia. Przykładowy format takiego numeru to 0-306-40615-2Format przede wszystkim zajmuje więcej miejsca i jest dużo bardziej uciążliwy dla systemów informatycznych. Gwarantuję Ci że zapytanie będę szybciej działać jeśli kluczem głównym będzie sztucznie wprowadzony indeks numeryczny. Nazwa takiego klucza to surrogate key, inaczej mówiąc - klucz sztuczny. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 439 Pomógł: 21 Dołączył: 28.06.2007 Skąd: Bielsko-Biała Ostrzeżenie: (0%) ![]() ![]() |
Cytat Format przede wszystkim zajmuje więcej miejsca i jest dużo bardziej uciążliwy dla systemów informatycznych. no ale ten ciąg był i będzie - jest potrzebny autorowi... a powiedz mi co zajmuje więcej miejsca... "UNIKALNE_ID||[....]||0-306-40615-2"(UNIKALNE ID - nasze id, [...] - reszta danych - autor, nazwa itd.) czy "[....]||0-306-40615-2"Robienie tego na plikcah to chyba nie zbyt dobry pomysł tak czy tak... ale jak już się chce na plikach to chyba najlepiej ograniczyć ilość danych w pliku do minimum nie? Ale ja się kłócić nie chce, jesteś napewno lepszy w temacie więc pewnie masz racje... czy Krisso wprowadzi te ID czy nie - jego wybór:) |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 25.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie chce zakładać kolejnego tematu więc spytam sie tutaj jak przesłać zmienną z jednego pliku do drugiego tzn.
zmiennaz pliku "edycja.php" i chciałbym ją odczytać na samym początku w "edytor.php", dlatego sie ptam czy istnieje tak możliwość (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) A jeśli tka to proszę o małe wskazanie kierunku w którym miałbym się poruszać. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 850 Pomógł: 120 Dołączył: 15.02.2007 Skąd: Łódź Ostrzeżenie: (10%) ![]() ![]() |
możesz przesłać w linku
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 439 Pomógł: 21 Dołączył: 28.06.2007 Skąd: Bielsko-Biała Ostrzeżenie: (0%) ![]() ![]() |
w linku to troche jest... hm.. nie mądre - ograniczona długość... zalecam sessje albo post:)
|
|
|
![]()
Post
#15
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
@dadexix odnośnie kluczy głównych
Za tworzeniem kluczy głównych jako pole liczb całkowitych (nawet w przypadku jeśli równie dobrze może być to numer ISBN) przemawiają 2 przesłanki: - wyszukiwanie po kluczach numerycznych jest zdecydowanie bardziej wydajne (szybsze) niż po kluczach znakowych; straty poniesione w wyniku dodania nowej (teoretycznie zbędnej) kolumny zostają wynagradzane wzrostem wydajności - utworzenie takiej kolumny dodaje faktyczny identyfikator dla rekordu. To co teraz napiszę nie jest moim wymysłem, tylko zostało przedstawione na zajęciach w firmie Kamsoft (duża firma operująca na komercyjnych wersjach Oracle - więc nie w kij pierdział). Argumentem przemawiającym za wprowadzeniem takiego klucza jest fakt, iż mimo wszystko może się zdażyć duplikacja numeru ISBN. W Kamsofcie zdarzały się przypadki osób o taki samych numerach PESEL - niby nieprawdopodobne ale jednak... i wtedy robi się kupka. Albo wyobraź sobie sytuację, że musisz powiązać tabelę główną z innymi tabelami; dodajesz wtedy do nich klucze obce będące numerem ISBN. No i fajnie. Ale co w przypadku gdy po np. miesiącu zauważysz, że się machnąłeś? Wtedy trzeba poprawiać ISBN wszędzie. id rulez! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 439 Pomógł: 21 Dołączył: 28.06.2007 Skąd: Bielsko-Biała Ostrzeżenie: (0%) ![]() ![]() |
a taqk nawiasem... jak się chce plików to może SQL lite? też plik (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif) (IMG:http://forum.php.pl/style_emoticons/default/aarambo.gif) (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 25.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, a ja ciągle z tym samym problemem tutaj tkwie :/
Ogólnie rzecz biorąc dużo mi już nie brakuje, tzn: baza.txt Kod Sienkiewicz Henryk||Pan Wołodyjowski||PWN||1785||45632/75645||powiesc||historyczna||ciekawa Sienkiewicz Henryk||Potop||PWN||1784||45562/74525||powiesc||historyczna||ciekawa Sienkiewicz Henryk||Ogniem i Mieczem||PWN||1984||541/53||powiesc historyczna||||fajna Ps. prosze nie sugerowac sie numerami ISDN, ponieważ w obecnej sytuacji sa to losowo trafione liczby. edytor.php
Tak jak jest powyżej zapisany ten program pozwala na wyszukanie odpowiedniego elementu w bazie. Edycja jest możliwa, lecz z powodu funkcji "eregi" nie dochodzi do zapisu: Kod Warning: eregi() [function.eregi]: REG_EMPTY in C:\Program Files\WebServ\httpd\edytor.php on line 24 (6 takich komunikatów jednoczesnie otrzymuje, jeden pod drugim)Chętnie wysłucham wszelkich porad. Ps. Nie namawiajcie mnie na sql-a, ponieważ chce ten projekt wykonac tylko na plikach. Nastepny moze zrobie już w bazie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
-php newbie- |
![]() ![]()
Post
#18
|
Goście ![]() |
Też przydał by mi się taki edytor mugłby ktoś poprawi tamten kod lub podać poprawny bo nie da się tu połapać (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.09.2025 - 04:03 |