Drzewka w PHP

1. Wprowadzenie

Artykuł zawiera prosty przepis jak zaimplementować drzewa w php.

2. Wstęp

Skrypt jest dość prosty, więc na pewno będzie wiele modyfikacji. Za które będę oczywiście wdzięczny. Bardzo ważną rzeczą jest fakt ze jest napisany strukturalnie a nie obiektowo. Nie wiem, czemu nie lubię obiektowego pisania, choć niewątpliwie ma wiele zalet. Przyczyna tego jest pewnie fakt ze wychowałem się na strukturalnych językach.
Z drzewkami spieram się już jakiś czas. A wczoraj po prostu usiadłem i napisałem wszystko od ręki.

3. Struktura bazy oraz podstawowe założenia

Do analizy wykorzystamy drzewko z artykułu rzSeattle o drzewkach.

0 0.SYSTEMY OPERACYJNE
/ \
1 1.LINUX 2.WINDOWS
/ \ / \
2. 3.SLACK 4.DEBIAN 5.NT 6.NO NT
/ \ / | \
3 7.WIN 2000 8.WIN XP 9.WIN 95 10.WIN 98 WIN ME

Podstawową rzeczą jest zastanowić się jak ma wyglądać baza danych.
Ja zrobiłem taka.

CREATE TABLE `foto_cat` (
`id` mediumint(100) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default ”,
`url` varchar(255) NOT NULL default ”,
`parent` varchar(10) NOT NULL default ”,
`user` varchar(100) NOT NULL default ”,
`data` datetime NOT NULL default ‘0000-00-00 00:00:00′,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

Wiadomo, co to jest id, name to nazwa katalogu. url to jest cala ścieżka od głównego katalogu. Parent to katalog nadrzędny. I na koniec data która dodaje z przyzwyczajenia a która może służyć do chociażby sortowania.

Trzeba przyjrzeć się dokładniej kolumnie url. Pierwsze katalogi maja wartość ‘0’
Format tej kolumny jest taki dla przykładu debiana będzie wyglądało tak:

0|1:LINUX a dla przykładu windowsa xp będzie cos takiego:
0|2:WINDOWS|5:NT

Czyli po pierwsze określa nie katalog docelowy tylko ten, w którym znajduje się katalog nas interesujący. I zawiera najpierw 0 potem id i nazwę katalogów. Oddzielanych ‘|’ a id i nazwę znakiem ‘:’. Mam nadzieje ze dosadnie wytłumaczyłem.

Read the rest of this entry »

System komentarzy


Komentarze, szczerze powiedziawszy jeszcze nie wiem jak to zrobic. Po to pisze ten artykuł, mam nadzieje ze mi pomoze. Zaczne od definicji słowa komentarz, jest to opinia kogos do czegos i wyraża stosunek osoby do jakiejś sprawy, przedmiotu; pozytywny lub negatywny.
Zatem potrzebna będzie nam baza danych lub cokolwiek żeby mieć gdzie trzymac te opinie. Może być nawet czysty zeszyt w kratke ale musi mieć dużo kartek. ^_^
Ale ja zrobie to na bazie o takiej postaci:


CREATE TABLE `comments` (
`id` mediumint(10) NOT NULL auto_increment,
`what` varchar(255) NOT NULL default ”,
`idwhat` varchar(255) NOT NULL default ”,
`guest` varchar(255) NOT NULL default ”,
`user_id` varchar(10) NOT NULL default ”,
`content` text NOT NULL,
`mail` varchar(255) NOT NULL default ”,
`data` datetime NOT NULL default ‘0000-00-00 00:00:00′,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;


A teraz opis:

id to jest id, taka liczba porządkowa, what tutaj trzymane jest to co ma rozruznić czy komentarzowi podlega obrazek, artykół czy inny urzytkownik, w moim przypadku jest to id modułu który obsługuje daną treść ale równie dobrze może on odnosic się do jakiejś tablicy czy czegoś co wskaże baze danych w ktorej znajduje się element. Idwhat to id tego elementu w bazie. Guest to nick gościa ktury daje komentarz jeśli nie jest zalogowany, user_id to id gościa który jest zalogowany, content to treść komentarza, mail to mail a data to data.


Read the rest of this entry »