Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Closed TopicStart new topic
> Moja koncepcja cms-a, Czy dobra ?
Diwi
post 30.09.2005, 20:01:43
Post #1





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

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


Ostatnio zaświtał mi pomysł na wykonanie zarządzania treścią w systemie cms. Moja koncepcja wygląda tak

Mamy tabele w bazie danych o nazwie "content". W tej tabeli znajdują się kolumny takie jak:

Kod
value | id | tpl


Gdzie:

I. value to wartość treści
II. ID chyba wiadomo
III. Nazwa przydzielonego szablonu

Teraz przykład zastosowania mojej koncepcji a więc dodajemy sobie nowy rekord o wartości kolumny "value":

Kod
title: Nazwa artykuły;
text: Jakiś tekst
author: autor
create-date: 28.08.2005
contact: php.diwi@gmail.com


Tak więc moja wizja jest taka. W katalogu templates gdzie trzymamy szablony znajdują się podfoldery o nazwach page_"nazwa_szablonu". Wewnątrz każdego takiego podfolderu mamy 2 pliki:

-config.inc
-template.tpl

config.inc przechowuje informacje na temat elementów danej strony, przykładowa budowa dla wyżej wymienionej treści będzie wyglądać tak:

Kod
title | varchar;
text | big_varchar;
author | varchar;
create-date | date_format;
contact | varchar;


Co to oznacza ? A więc część przed znakiem "|" to nazwa elementu a po tym znaku to rodzaj wartości (Przyda się to potem przy tworzeniu formularza do dodawania treści) Dzięki takiemu rozwiązaniu możemy budować podstrony składającą się z bardzo dużej ilości elementów bez ograniczenia związanego z określonymi polami w formularzu dodawania treści.

Co do drugiego pliku template.tpl to odpowiada on za wyświetlanie informacji i może on dla powyższego przykładu wyglądać tak:

Kod
<b>{content.title}</b>
<p>{content.text}</p>
<br />
<span>Autor: <a href="mailto:{content.contact}">{content.autor}</a></span>
<br /><br />
Data dodania: {content.creation-date}



Niestety co do szablonów to ich zawartość jest przydzielana na stałe ale można tworzyć nowe dlatego jest to dosyć elastyczne rozwiązanie.

I teraz pytanie do was czy taka koncepcja jest dobra i czy iść w tą stronę ?

Pozdrawiam
Go to the top of the page
+Quote Post
sf
post 1.10.2005, 08:36:29
Post #2





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


mi sie nie podoba... zreszta jak znam zycie to trzeba napisac 2-3 cmsy lub ( co jest lepszym rozwiazaniem ) popracowac / robic poprawki do 3 cmsow + jakis wlasny... i wtedy wyjdzie jakas lepsza koncepcja na to jak napisac taka aplikacje... wiec napisz pierwszego cmsa.. zobacz jak dzialaja inne i sam odpowiesz sobie na pytanie co bylo zle i dlaczego, zreszta wazne jest takze co Twoj cms ma robic.. dlaczego go piszesz, a nie korzystasz z gotowego? czym sie ma wyrozniac od juz istniejacych?


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
Diwi
post 1.10.2005, 09:54:15
Post #3





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

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


Hmm.. no cóż, mi się wydawała dobra dlaczego ? Jeżeli będe potrzebował zrobić sobie bazę produktów to nie będe klepał modułu do tego tylko w bardzo krótkim czasie zrobie sobie szablon w którym ustale sobie odpowiednie pola (w pliku config.inc) takie jak np:

-Nazwa produktu
-Cena
-Dane techniczne
-Dodatkowe informacje

Potem będe miał odrazu stworzone pola w panelu administracyjnym do dodawnia produktów biggrin.gif.

Pozdrawiam
Go to the top of the page
+Quote Post
GrayHat
post 1.10.2005, 11:14:02
Post #4





Grupa: Zarejestrowani
Postów: 566
Pomógł: 18
Dołączył: 23.08.2003
Skąd: Łomża

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


IMHO konstruktywne smile.gif


--------------------
*Note: No animals were killed durning the construction of this post.
Go to the top of the page
+Quote Post
sf
post 1.10.2005, 11:37:55
Post #5





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


jak dla mnie bardziej sie przydaja takie pliki konfiguracyjne do walidacji


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
Diwi
post 1.10.2005, 12:06:44
Post #6





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

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


Cytat
jak dla mnie bardziej sie przydaja takie pliki konfiguracyjne do walidacji


Nie rozumiem. Możesz rozwinąć swoją myśl ?

Pozdrawiam
Go to the top of the page
+Quote Post
sf
post 1.10.2005, 13:44:10
Post #7





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


Cytat(Diwi @ 2005-10-01 12:06:44)
Nie rozumiem. Możesz rozwinąć swoją myśl ?

mojavi.org .. sciagnij sobie wersje 3.0 i w katalogu samples masz plik validator.ini

lub tutaj tez masz cos w tym stylu..

http://www.xisc.com/wiki/index.php/A_tutor...sing_validators

jesli chcesz tworzyc cmsa to mozesz tez wykorzstac jakis framework, dzieki temu bedziesz mial mniej roboboty

Ten post edytował sf 1.10.2005, 13:47:01


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
Diwi
post 1.10.2005, 13:50:21
Post #8





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

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


Hmm.. a jaki framework polecalibyście do tego typu aplikacji ?

Pozdrawiam
Go to the top of the page
+Quote Post
bela
post 1.10.2005, 14:40:27
Post #9


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


Wybór frameworka zależy tylko i wyłącznie od Twoich preferencji i oczekiwań, a więc ściągnij na co się natrawisz i testuj, testuj


--------------------
Go to the top of the page
+Quote Post
Diwi
post 1.10.2005, 18:56:03
Post #10





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

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


Acha a teraz mam jeszcze pytanie co do koncepcji związanej z użytkownikami. Tak więc wszystko będzie wyglądać dosyć podobnie. Tabela users w bazie danych będzie miała taką strukturę:

Kod
id | username | password | additional_info | group


Przy czym:

I. ID to chyba wiadomo (jak zwykle biggrin.gif)
II. Username czyli nazwa użytkownika
III. Password czyli hasło
IV. Additional info czyli dodatkowe informacje które mogą wyglądać np. tak:

Kod
email: diwi@diwi.pl;
gg: 3088731;
tlen:;
data_urodzenia: 31-12-9999;
ranga: administrator;


No i znowu tak jak w przypadku zarządzania treścią additional info zawiera dodatkowe informacje o użytkowniku biggrin.gif. Np. jeżeli będe chciał moge sobie odrazu dodać numer icg, adres jabbera itd.

V. Grupa do której należy użytkownik. Oczywiście każda grupa będzie posiadała określone prawa biggrin.gif.

No i oczywiście czy takie rozwiązanie jest również dobre ?

Pozdrawiam
Go to the top of the page
+Quote Post
sf
post 1.10.2005, 19:25:44
Post #11





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


a nie mozesz zrobic dla kazdej tej danej osobnej kolumny? dla nr gg osobna kolumne, dla ragni osobna kolumna itd., np. chcesz wyswietlic uzytkownikow, ktory dzis maja urodziny.. i co robisz? ;] wyciagasz wszystkie rekordy.. potem je obrabiasz w php i spradzasz? ;}


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
Diwi
post 1.10.2005, 19:46:49
Post #12





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

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


Ale takie rozwiązanie jest bardziej elastyczne dla klienta. Jeżeli nie zna się on wogóle na programowaniu ani bazach danych to napewno nie umie dodać sobie dodatkowej kolumny do tabeli. Tutaj wystarczy tylko dodanie odpowiedniej opcji w panelu administracyjnym. Co do wyciągania użytkowników którzy mają urodziny:

  1. <?php 
  2. mysql_query("SELECT * FROM
  3. `users`
  4. WHERE 
  5. `additional_info` LIKE '%data_urodzenia: ".date('d-m-Y').";%'");
  6. ?>


Aż tak trudno ułożyć takie zapytanie worriedsmiley.gif ?

Pozdrawiam

Edit:

No cóż w sumie można by jeszcze robić alter table w panelu administracyjnym. Chociaż nie mam pewności czy zapytanie biorące dane z kolumny a nie pola typu text będzie wydajniejsze. W sumie także nie trzeba będzie robić explode przy oddzielaniu danych.

Ten post edytował Diwi 1.10.2005, 20:11:25
Go to the top of the page
+Quote Post
aleksander
post 1.10.2005, 21:46:28
Post #13





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


a nie lepiejzrobic dodatkową tabelę z atrybuitami? tj tabela:
key |val | userid

i przykładowy wpis
key = gg val = 41843 userid = n
kay = dbirth val = 30.01.1989 userid = n
Go to the top of the page
+Quote Post
Diwi
post 1.10.2005, 22:20:40
Post #14





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

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


NO tak ale wtedy zapychamy strasznie bazę rekordami. IMHO lepiej wrzucić wszystko do jednej kolumny niż mieć bardzo dużo rekordów. Wg twojego rozwiązania dla n liczby użytkowników miałbym tyle rekordów:

n = ilość userów
v = ilość dodatkowych atrybutów

ilosc_rekordow = n*v

I jest jakiś sens zapychać tak bazę ? Jak dla mnie to lepiej puścić explode w skrypcie niż mieć zapchaną bazę smile.gif

Pozdrawiam
Go to the top of the page
+Quote Post
ebe
post 1.10.2005, 22:26:18
Post #15





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 23.01.2004

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


Nie podoba mi się to trzymanie całych obiektów w jednym polu, operacje na takiej tabeli są bardzo utrudnione, ale może u Ciebie to zda egzamin. Pozatym jak już to nie lepiej wrzucić tam xmla? a nie jakieś "nazwa: procesor" tylko <nazwa>procesor</nazwa> ponadto argument o dużej ilości argumentów do mnie nie trafia, po to są bazy by do nich pchać co popadnie tongue.gif ważniejsze jest to jak z nich wybieramy by było optymalnie. Tak jak ktoś pisał, od atrybutów już krok o wirtualnych klas contentu, a stąd coraz bliżej do prawdziwego cms'a podobnego w swoim założeniu do eZ (choć ten ma nieźle nabrudzone smile.gif)


--------------------
Słyszałem, że macie tutaj jakieś takie php... fajne to, dobre to jest?
Go to the top of the page
+Quote Post
Diwi
post 1.10.2005, 22:36:47
Post #16





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

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


Hmm.. pomysł z xml-em podoba mi się biggrin.gif. Pewnie przerzuce się na niego biggrin.gif. A jak myślisz jak wybierać dane. Parsować jak normalny plik xml ? Chciałbym powiedzieć tylko że będe to pisał pod php 4 więc narazie funkcji z piątki nie biorę pod uwage smile.gif.

Pozdrawiam
Go to the top of the page
+Quote Post
ebe
post 1.10.2005, 22:40:30
Post #17





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 23.01.2004

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


Prasuj to domem, bo jabyś chciał robić na pregach to byłoby bez sensu wtedy lepiej tak jak proponujesz, ale mimo wszystko zachęcam do sposobu z atrybutami i wirtualnymi klasami contentu, a może zainteresuj się xslt i przerabiaj obiekty z bazy na xhtml odrazu, wtedy może nie dajesz użytkonikom większego wyboru jeśli chodzi o strukturę, ale w dobie css2 i css3 grafikę powinno się robić w stylach, podobnie jak pozycjonowanie a nie wykorzystywać do tego xhtml...


--------------------
Słyszałem, że macie tutaj jakieś takie php... fajne to, dobre to jest?
Go to the top of the page
+Quote Post
mike
post 1.10.2005, 22:43:17
Post #18





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Nie no ludzie, opanujcie się.

Trzymać w bazie XML'a, to szczyt braku umiejętności projektowania struktur danych i ich przechowywania! Poza tym poroniony pomysł.

Najlepszym wyjściem jest trzymanie danych w tej sytuacji w bazie, w tabelach. Nawet jeśli miałyby mieś bardzo dużo pól. Dane są wtedy bardzo łatwo dostępne, bez problemu można po nich wyszukiwać, sortować, i.t.d.

A z XML'em :?:
Ciekawe jak byś zrobił cos w stylu:
  1. DELETE
  2. FROM tabela WHERE pole1 = 'value1' AND pole2 = 'value2'

Musiałbys pobrać wszystkie pliki XML sparsować porównać warunkami potem usunąć pola z bazy. A jak masz 10000 rekordów :?: Co wtedy :?:

Szaleństwo i głupota.
Go to the top of the page
+Quote Post
Diwi
post 1.10.2005, 22:44:14
Post #19





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

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


Cytat
wszystko zachęcam do sposobu z atrybutami i wirtualnymi klasami contentu


Sczerze mówiąc nie wiem o czym mówisz sad.gif. Mógłbyś dokładnie wytłumaczyć o co chodzi ? Bo nie mam pojęcia jak coś takiego implementować (ponieważ nie wiem co to jest biggrin.gif)

Pozdrawiam

Edit:

@Mike_Mech: Ale przy contencie tak niestety nie mam jak zrobić. Rozumiem przy userach da się to zrobić ale przy treści nie ma jak bo wtedy wszystko znowu zostaje przydzielone na stałe :/

Ten post edytował Diwi 1.10.2005, 22:48:19
Go to the top of the page
+Quote Post
.rh-
post 13.07.2006, 08:09:35
Post #20





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 16.07.2005

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


Cytat(sf @ 1.10.2005, 18:25 ) *
a nie mozesz zrobic dla kazdej tej danej osobnej kolumny? dla nr gg osobna kolumne, dla ragni osobna kolumna itd., np. chcesz wyswietlic uzytkownikow, ktory dzis maja urodziny.. i co robisz? ;] wyciagasz wszystkie rekordy.. potem je obrabiasz w php i spradzasz? ;}


Rozwiązanie które proponujesz nie jest dobre, sprzyja powstawaniu redundancji.


---
~.rh- zwracaj uwagę na daty postów na które odpowiadasz.
Ten wątek jest z przed prawie roku, jest duuuuże prawdpodobieństwo że jest nieaktualny.
~mike_mech
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Closed 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: 28.06.2025 - 02:12