Kategoria bezdomnych php. Budowa drzewa kategorii w PHP
I tak na początek opiszę, z czym będziemy pracować i czego będziemy potrzebować.
System: PHP 5 i nowsze, mySQL 4 i nowsze
Klasy pomocnicze: dbsql.class.php (klasa do pracy z bazą danych)
Klasa zagnieżdżonych kategorii: classTreeCategory.php (bezpośrednio klasa główna, poniżej znajduje się jej lista i objaśnienia.
Tworzymy tabelę w bazie danych o następującej strukturze:
Zobacz kod MYSQL
Tabela ta zawiera pole ID - numer seryjny kategorii, podcat - ma wartość zero dla kategorii pierwszego rzędu lub identyfikator kategorii nadrzędnej, nazwa - nazwa kategorii.
Przykład działania klasy, wyświetlającej kategorie na liście z podkategoriami:
Zobacz kod PHP
include("dbsql.class.php" ); include("classTreeCategory.php" ); $DB = nowy silnik DB_Engine("mysql" , $settings [ "dbHost"] , $settings [ "dbUser"] , $settings [ "dbPass"] , $settings [ "dbName"] ) ; // połącz się z bazą danych, wskazując dane dostępowe $category = new TreeCategory ($DB ) ; // przejście do klasy kategorii, obiektu do pracy z bazą danych $category -> table = "category" ; // nazwa tabeli w bazie danych zawierającej kategorie $array = $category -> getCategory() ; // pobierz wszystkie kategorie z bazy danych w postaci wielopoziomowej tablicy, posortowane i zagnieżdżone w takiej kolejności, w jakiej potrzebujemy $category -> outCategory ($array, "option" ); // przygotowanie wyniku kategorii (tworząc HTML), przekazanie tablicy z kategoriami echo $category -> html ; //wypisz kategorie jako nazwę HTML |
Jak widać na powyższym przykładzie wszystko jest niezwykle proste, tworzymy nowy obiekt $category, ustalamy z jaką tabelą bazy danych będziemy pracować: 'kategoria', następnie pobieramy z tabeli listę wszystkich kategorii już sformatowanych jako tablicy i ułożone w sposób hierarchiczny, z uwzględnieniem wszystkich podkategorii. następnie przekazujemy tablicę do metody outCategory(), która generuje dla nas gotowy kod HTML, który wystarczy nam wyświetlić w przeglądarce.
Jak widzimy, metoda outCategory() przyjmuje dwa parametry @array i @string, w pierwszym parametrze tablicę ze wszystkimi kategoriami, a w drugim wiersz zawierający opcję lub wartość tabeli, wartość ta wskazuje, jaki typ kodu HTML jest potrzebny zostać wygenerowane.
Wartość opcji
Zobacz kod HTML
-kategoria 1 --podkategoria 1 ---podkategoria 1 -kategoria 2 |
Aby wstawić ten kod HTML do pola wyboru dowolnego formularza.
Wartość tabeli generuje następujący kod HTML:
Zobacz kod HTML
Ten kod HTML można wygodnie wstawić do tabeli wyświetlającej wszystkie nasze kategorie i podkategorie.
Klasa posiada również następujące metody:
usuńItem($id); — usuwa jedną kategorię, pomimo zagnieżdżonych
delCategory($tablica, $id); — usuwa kategorię ze wszystkimi zagnieżdżonymi podkategoriami, $array — tablica ze wszystkimi kategoriami przygotowana metodą $category->getCategory(), $id — numer kategorii do usunięcia
Dodaj Przedmiot(); — tę metodę należy wywołać, jeśli chcemy dodać kategorię i ta metoda odczytuje wartości z danych przesyłanych metodą POST, tj. z tablicy $_POST.
$name=$this->PHP_slashes(strip_tags($_POST[‚nazwa’])); // Nazwa Kategorii
$podcat=intval($_POST['podcat']); // Identyfikator kategorii nadrzędnej. Jeśli podano 0, kategoria będzie znajdować się w katalogu głównym.
aktualizacjaPozycji() ; — podobnie jak poprzednia metoda, z tą różnicą, że metoda ta aktualizuje kategorię, jej nazwę i poziom zagnieżdżenia.
Całość została napisana w ciągu godziny i oczywiście ma pewne niedociągnięcia, ale tę da się naprawić. Jego użycie jest wskazane w celach edukacyjnych, choć kończąc go trochę, możesz zintegrować go z dowolnym systemem i cieszyć się jego pracą)).
Byłbym wdzięczny, gdybyście w komentarzach zaproponowali własne rozwiązania tego problemu - uporządkowanie kategorii o nieskończonym poziomie zagnieżdżenia.
Widok drzewa podkategorii kategorii zapewnia przyjazny dla użytkownika sposób wyświetlania kategorii nadrzędnych i podrzędnych. Kategorię i jej podkategorię można łatwo oddzielić za pomocą struktury drzewiastej. Zawsze zaleca się widok drzewa kategorii, aby wyświetlić nieskończony poziom kategorii i podkategorii.
W tym samouczku pokażemy, jak utworzyć dynamiczne drzewo podkategorii kategorii przy użyciu PHP i MySQL. Rekurencyjne drzewo kategorii jest bardzo przydatne do wyświetlania kategorii n poziomów na liście rozwijanej. Przykładowy kod pomaga zbudować listę rozwijaną podkategorii kategorii na poziomie n w PHP. Dane kategorii dynamicznych zostaną pobrane z bazy danych MySQL i wyświetlone w formacie drzewa kategorii nadrzędny-podrzędny.
Utwórz tabelę bazy danychAby zapisać kategorie i podkategorie należy w bazie danych utworzyć tabelę. Poniższy kod SQL tworzy tabelę kategorii w bazie danych MySQL.
UTWÓRZ TABELĘ `kategorie` (`id` int (11 ) NIE NULL AUTO_INCREMENT, `parent_id` int (11 ) NIE NULL DOMYŚLNIE "0" , `name` varchar (100 ) COLLATE utf8_unicode_ci NOT NULL , `utworzono` datetime NIE NULL , `modified` datetime NOT NULL , `status` enum("1" "0" ) COLLATE utf8_unicode_ci NOT NULL DOMYŚLNY "1" KOMENTARZ "1:Aktywny, 0:Nieaktywny" , KLUCZ PODSTAWOWY (`id`)) SILNIK= InnoDB DOMYŚLNY ZESTAW ZNAKÓW= utf8 COLLATE= utf8_unicode_ci;Kolumna parent_id określa, czy kategoria jest nadrzędna czy podrzędna. Jeśli parent_id wynosi 0, będzie to kategoria nadrzędna. W przeciwnym razie będzie to kategoria podrzędna, a identyfikator będzie elementem nadrzędnym tej kategorii.
Konfiguracja bazy danych (dbConfig.php)Do połączenia i wyboru bazy danych służy plik dbConfig.php. Określ hosta bazy danych ($dbHost), nazwę użytkownika ($dbUsername), hasło ($dbPassword) i nazwę ($dbName) zgodnie z poświadczeniami MySQL.
Funkcja rekurencyjna PHP do generowania drzewa nadrzędnego/podrzędnegoFunkcja CategoryTree() generuje drzewo podkategorii n-poziomowej kategorii przy użyciu języka PHP. Spowoduje to utworzenie rozwijanych opcji drzewa kategorii.
- $parent_id – opcjonalne. Określ identyfikator nadrzędny, aby uzyskać kategorie podrzędne tej kategorii nadrzędnej.
- $sub_mark – Opcjonalne. Zaznacz, który zostanie dodany na początku nazwy kategorii podrzędnej.