Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Prosiłabym o odpowiedź na 4 konkretne pytania.
jolam
post
Post #1





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

Ostrzeżenie: (10%)
X----


1 Czy jak mam w bazie strukturę drzewkaIP to na dysku też powinnam mieć taką strukturę katalogów do trzymania w nich plików, które nie mogą być w bazie? Czy może wygodniej mieć jeden katalog "BazaDanych" a w nim podkatalogi o nazwach np "numerID_skrócona_nazwa"? Bo tak sobie myślę, że mogłabym oszczędzić trochę czasu na wchodzeniu w strukturę katalogów i jej kolejne poziomy wykorzystując takie bardziej płaskie rozwiązanie. Ale tracę też troszkę czytelności i może coś jeszcze o czym nie wiem. Co wybrać?

2 Co powinno być pierwsze wpis w bazie czy katalog na dysku? Teraz najpierw mam katalog ze obrazami i potem dodaje wpis. Ale może lepiej najpierw dodawać wpis do bazy a później jakiś skrypt samemu utworzy katalog? Ale co wtedy z dodawaniem obrazów? Poprzez formularz? Wczytuję plik i skrypt ma go umieścić w odpowiednim katalogu? Tylko wtedy, jeśli obraz pochodzi z sieci to najpierw muszę go zapisać na dysku i dopiero otem dodać poprzez formularz. Teraz jak najpierw mam katalog na dysku to od razu do niego zapisuję plik z sieci. Co wybrać, jak będzie lepiej na dłuższą metę?

3 Czy da się uniknąć powtarzania danych w tabelach bazy? Np jak chce mieć tagi to mam tabelę tagów a w niej kolumny: id, tag. I jak jeden id ma kilka tagów to wtedy muszę na to poświęcić ileś wierszy. Czy da się to zmienić, czy lepiej zostawić?

4 Nie umiem sobie poradzić z dziedziczeniem np tagów. Mam takie zapytanie:
  1. $q = sqlite_query( $base, "
  2. SELECT id, parentid, depth FROM '$tab' ORDER BY depth ASC
  3. ");
  4. while( $r = sqlite_fetch_array( $q, SQLITE_ASSOC) )
  5. {
  6. $id = $r['id'];
  7. $parentid = $r['parentid'];
  8. $depth = $r['depth'];
  9. if( $depth != 0 )
  10. {
  11. $q = sqlite_query( $base, "
  12. SELECT f FROM '$tab'
  13. WHERE id = '$parentid' AND f IS NOT NULL
  14. ");
  15. $parentf = sqlite_fetch_single( $q );
  16. $q = sqlite_query( $base, "
  17. UPDATE '$tab'
  18. SET f = '$parentf
  19. WHERE id = '$id' AND f IS NULL
  20. ");
  21. }
  22. }


Wiecie czemu to nie działa? Powinno pobierać niezerowy tag od rodzica i przypisać go potomkowi. Ale nie działa. A może jakoś inaczej trzeba podejść do takich dziedziczonych zagadnień?


pozdrawiam Jola

Ten post edytował jolam 9.08.2009, 12:14:58
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Proszę dodać BBcode.
Go to the top of the page
+Quote Post
jolam
post
Post #3





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

Ostrzeżenie: (10%)
X----


Spawnm już poprawiłam. Mógłbyś mi teraz pomóc z tymi 4 pytaniami?

Zapomniałam jeszcze o jedno spytać. Jak tworzę formularz który dodaje zdjęcia do różnych pozycji w bazie, to czy lepiej te zdjęcia wgrywać na serwer właśnie poprzez formularz i potem skrypt je przenosi do odpowiendiej lokalizacji. Czy może lepiej ustalić jakiś katalog tymczasowo, do niego wgrywać dodawane zdjęcia. I potem automatycznie skrypt by je przenosił do odpowiedniego katalogu. Czyli pomijałabym wybieranie pliku za pomocą formularza. Czy tak byłoby lepiej?

pozdrawiam Jola
Go to the top of the page
+Quote Post
andycole
post
Post #4





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 14.12.2004

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


2. Jezeli nazwa pliku ma byc zalezna od id (autoinkrementacja) rekordu w bazie to najpierw zapis do bazy pozniej pliku. W przeciwnym wypadku wg mnie lepszym rozwiazaniem wydaje sie byc zapis pliku, pozniej dopiero do bazy. Wtedy gdy zapis pliku sie nie powiedzie, nie zapisujemy do bazy i po problemie.

3. Robisz dwie tablice glowne:

tagi:
id|nazwa_taga

artykuly (lub cos innego co chcesz tagowac):
id|tytul|autor|data

i tworzysz tabele pomocnicza (tzw relacja wiele do wielu tabel tagi i artykuly):

tagi_artykuly:
id_taga|id_artykulu


Wtedy zakladajac ze artykul o id=8 ma przypisane tagi o id=5, id=99, id=44 bedziemy mieli w tabeli tagi_artykuly 3 rekordy:
5|8
99|8
44|8

Do wyciagniecia informacji nt tagow powiazanych z danym artykulym korzystasz z JOIN'a.

To jest chyba najlepszy sposob na tagi.

Ogolnie zasada jest taka, ze normalizujac tabele bazy danych dazymy do tego zeby pola ktore sie powtarzaja wyciagac do osobnych tabel. Poczytaj o zasadach normalizacji baz danych.

http://gryf.mif.pg.gda.pl/~mate/wyklady/bazy/podstawy.html
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: 22.08.2025 - 04:49