Өнөөдөр би яаж хийхийг танд хэлэх болно MySQLшаталсан модыг бий болгох.
Ийм модыг динамик сайтын ангиллыг бий болгоход, жишээлбэл, онлайн дэлгүүрт эсвэл нийтлэл дээрх сэтгэгдлийг харуулахад ашигладаг.
Ер нь бол боломжтой газар л барьдаг. Хамгийн гол нь үүнийг зөв барьж, хэрэглэх явдал юм.
Шаталсан модыг бүтээхэд хамгийн чухал зүйл бол мэдээллийн сангийн зөв бүтэц юм! Жишээлбэл, сайтын категориуд хадгалагддаг мэдээллийн сангийн бүтцийг авч үзье. Учир нь энгийн жишээ, хүснэгт нь 3 талбартай байна:
- ID- категорийн түлхүүр
- эцэг эхийн дугаар- эцэг эхийн ангиллын id
- нэр- хэсгийн гарчиг
PHPMyAdmin дээр SQL асуулга ажиллуулж хүснэгт үүсгэцгээе:
CREATE TABLE `categories` (`id` INT NOT NULL AUTO_INCREMENT , `parent_id` INT NOT NULL , `name` VARCHAR(50) NOT NULL, PRIMARY KEY (`id`));
Одоо бид хүснэгтээ бичлэгээр дүүргэх хэрэгтэй. Үүний үр дүнд та дараах хүснэгттэй төстэй зүйлийг авах хэрэгтэй.
Та тестийн хүснэгтийг дараах асуултаар дүүргэж болно.
`Ангилал` (`id`, `эцэг эхийн_id`, `нэр`) ҮНЭ ЗҮЙН ОРУУЛАХ (1, 0, "1-р хэсэг"), (2, 0, "2-р хэсэг"), (3, 0, "3-р хэсэг" ), (4, 1, "Хэсэг 1.1"), (5, 1, "Хэсэг 1.2"), (6, 4, "Хэсэг 1.1.1"), (7, 2, "Хэсэг 2.1"), (8) , 2, "Хэсэг 2.2"), (9, 3, "Хэсэг 3.1");
Тэгээд одоо анхаарлаа хандуулаарай! Цаашилбал, логикийн хувьд та категори болон түүний дэд ангилал бүрийг сонгохын тулд өгөгдлийн сангаас гогцоонд сонголт хийх хэрэгтэй. ГЭХДЭЭ! За, хэрэв мэдээллийн санд хэд хэдэн ангилал байгаа бол энэ нь зарчмын хувьд зөв биш юм. Хэрэв сайт нь онлайн дэлгүүр бөгөөд зуун ангилалтай, ижил тооны дэд ангилалтай бол? Дараа нь асуудал! Өгөгдлийн сангийн үл мэдэгдэх тооны асуулга нь сайтыг удаашруулж эсвэл MySQL серверийг бүрэн сүйрүүлнэ.
Та бүх категори болон тэдгээрийн дэд ангиллыг сонгохын тулд мэдээллийн санд зөвхөн нэг асуулга ашиглаж болно.
Хүсэлт гаргаж, цаашдын ажилд тохиромжтой массив үүсгэцгээе.
//Өгөгдлийн сангаас өгөгдлийг сонгож байна $result=mysql_query("SELECT * FROM категори"); //Хэрэв өгөгдлийн санд бичлэг байгаа бол бид массив үүсгэдэг if (mysql_num_rows($result) > 0)( $cats = array(); // Давталт дээр бид хэсгүүдийн массив үүсгэдэг, түлхүүр нь үндсэн ангиллын id, түүнчлэн массив хэсгүүдийн түлхүүр нь категорийн id байх болно while($cat = mysql_fetch_assoc($result))( $cats_ID[$cat["id"]] = $cat; $cats[ $cat["parent_id"]][$cat["id"]] = $cat; ))
Хүснэгтээс бүх өгөгдлийг сонгох ангилалмөн ассоциатив массив үүсгэнэ $ муур, түлхүүр нь эх ангиллын id байх болно.
Одоо бид мод барих болно. Бид барилгын ажилд ашиглах болно рекурсив функц.
Шаталсан мод нь дараах бүтэцтэй байна.
- 1-р хэсэг
- 1.1-р хэсэг
- 1.1.1-р хэсэг
- 1.2-р хэсэг
- 1.1-р хэсэг
- 2-р хэсэг
- 1.1-р хэсэг
- 1.2-р хэсэг
- 3-р хэсэг
- 3.1-р хэсэг
Рекурсив функц үүсгэцгээе барих_мод() . Энэ нь бидний ямар ч үүрлэх шаталсан модыг бий болгоно.
Функц build_tree($cats,$parent_id,$ only_parent = false)( if(is_array($cats) and isset($cats[$parent_id]))( $tree = "
- "; if($only_parent==false)( foreach($cats[$parent_id] as $cat)( $tree .= ""; ))elseif(is_numeric($only_parent))( $cat = $cats[$parent_id) ][$ only_parent]; $tree .= "
- ".$cat["нэр"]." #".$cat["id"]; $tree .= build_tree($cats,$cat["id"]); $tree .= " "; ) $ мод. = "
Уг функц нь хэсэг хэсгүүдийн массив болон хэсгийн ID-г авдаг. Гогцоонд бид дэд категоруудаар дамждаг бөгөөд хэрэв тэдгээр нь илүү олон хэсгүүдтэй бол функцийг шинэ параметрүүдээр (хэсгүүдийн шинэ массив болон баригдах хэсгийн id) дахин ажиллуулдаг. Ямар ч үүрлэсэн мод ийм байдлаар үүсдэг!
Мод барихын тулд бид кодонд бичнэ:
echo build_tree($cats,0);
Тиймээс, хоёр алхамаар бид сайтын хэсгүүдийн шаталсан модыг үүсгэсэн бөгөөд хичнээн хэсэг байх нь хамаагүй!
UPDХэрэв танд ангиллын мод хэрэгтэй бол урвуу дараалалкатегорийн ID-г мэдэж байгаа тул та функцийг ашиглах хэрэгтэй:
find_parent функц ($tmp, $cur_id)( if($tmp[$cur_id]["parent_id"]!=0)( return find_parent($tmp,$tmp[$cur_id]["parent_id"]); ) буцах ( int)$tmp[$cur_id]["id"]; )
Энэ функц нь ангиллын массивыг авдаг бөгөөд тэдгээрийн түлхүүр нь ангиллын id болон дээш гарах ангиллын id юм.
Ийм модыг бүтээхийн тулд build_tree функцийг дараах параметрүүдээр ажиллуулна.
echo build_tree($cats,0,find_parent($cats_ID, YOUR_CATEGORY_ID));
Асуулт байна уу? Сэтгэгдэл дээр асуугаарай
Өнөөдөр бидний зорилго бол ангиллын шаталсан бүтцийг бий болгох явдал юм. Ангилал хадгалах нь тохиромжтой бөгөөд тэдгээрийг шаардлагатай газарт харуулахад хялбар байх нь бидний хувьд чухал юм.
Заримдаа энгийн зүйл нь төвөгтэй мэт санагддаг тул би танд мод хэлбэрээр php категорийг хэрэгжүүлэхэд хэрэг болно гэж найдаж буй хэд хэдэн кодын хэсэгчлэн гаргах болно.
Тиймээс бүтэц нь категорийн id (id), категорийн нэр (нэр) ба мэдээж эцэг эхийн ангиллын id (parent_id) зэргээс бүрдэх ёстой. MySQL дээр энэ нь иймэрхүү харагдаж байна:
`Ангилал` БАЙХГҮЙ БОЛ ХҮСНЭГТ ҮҮСГЭ (`id` int(10) гарын үсэг зураагүй NULL АВТО_НЭМЭЛТ, `name` varchar(255) NULL БИШ, `parent_id` int(11) NULL БИШ, АНХАН ТҮЛХҮҮР (`id`)) ХӨДӨЛМӨР =InnoDB өгөгдмөл CHARSET=utf8 AUTO_INCREMENT=0 ;
Ангилал хадгалах хамгийн бага бөгөөд ойлгомжтой хүснэгтийн бүтэц.
`Ангилал` (`id`, `нэр`, `эцэг эхийн_id`) ҮНЭ ЗҮЙН ОРУУЛАХ (1, "Утас ба таблет", "0"), (2, "Машин", "0"), (3, "Samsung" ", "1"), (4, "Apple", "1"), (5, "LG", "1"), (6, "Форд", "2"), (7, "Lexus", "2"), (8, "BMW", "2"), (9, " Galaxy Tab 4", "3"), (10, "Galaxy S6", "3");
parent_id=0 бол энэ ангилалд эцэг эх ангилал байхгүй.
Энд бүх зүйл ойлгомжтой бөгөөд энгийн байдаг. Одоо ангиллыг жагсаах руу шилжье. Гэхдээ жагсаалтыг зөв гаргахын тулд бид эхлээд php ангиллын жагсаалтыг бүхэлд нь авах хэрэгтэй бөгөөд зөвхөн дараа нь рекурсийг ашиглан модыг бий болгоно. Дараагийн функцЭнэ жагсаалтыг авах нь:
Функц get_cat() ( // өгөгдлийн сангаас асуух $sql = "СОНГОХ * категороос"; $үр дүн = mysql_query($sql); if(!$үр дүн) ( NULL буцаана; ) $arr_cat = массив(); if( mysql_num_rows ($үр дүн) != 0) ( //For($i = 0; $i< mysql_num_rows($result);$i++) { $row = mysql_fetch_array($result,MYSQL_ASSOC); //Формируем массив, где ключами являются адишники на родительские категории if(empty($arr_cat[$row["parent_id"]])) { $arr_cat[$row["parent_id"]] = array(); } $arr_cat[$row["parent_id"]] = $row; } //возвращаем массив return $arr_cat; } }
//каталогийн массивыг авах $үр дүн = get_cat();
Одоо бидэнд рекурс бүхий функц хэрэгтэй байна
Функц view_cat($arr,$parent_id = 0) ( //Recursion гарах нөхцөл if(empty($arr[$parent_id])) ( return; ) echo "
- "; // массиваар гүйлгэж, for($i = 0; $i) харуулах< count($arr[$parent_id]);$i++) {
echo "
- " .$arr[$parent_id][$i]["name"].""; //recursion - хүүхдийн ангилал байгаа эсэхийг шалгах view_cat($arr,$arr[$parent_id][$i]["id "] ); цуурай " "; ) цуурай "
Одоо зөвхөн рекурсив функцийг ашиглан лавлахыг дэлгэцэн дээр харуулахад л үлддэг
Харах_муур($үр дүн);
Тэгээд ерөнхийдөө энэ л байна. Ингэснээр бид хязгааргүй дэд категори бүхий категорийн бүрэн модыг авах боломжтой.
Тиймээс, эхлээд бид юутай ажиллах, юу хэрэгтэй болохыг тайлбарлах болно.
Систем: PHP 5 ба түүнээс дээш, mySQL 4 ба түүнээс дээш
Туслах ангиуд: dbsql.class.php (өгөгдлийн сангийн анги)
Оруулсан ангиллын анги: classTreeCategory.php (шууд үндсэн анги, түүний жагсаалт, тайлбарыг доор өгөв.
Өгөгдлийн санд дараах бүтэцтэй хүснэгт үүсгэ.
MySQL кодыг үзэж байна
Энэ хүснэгтэд талбар байгаа ID- ангиллын серийн дугаар, podcat- эхний эрэмбийн категори эсвэл үндсэн ангиллын ID-ийн хувьд тэг утгатай байх; нэр- ангиллын нэр.
Ангиудыг дэд категори бүхий жагсаалт болгон харуулах ангийн жишээ:
PHP кодыг харах
оруулах("dbsql.class.php"); include("classTreeCategory.php" ); $DB = new DB_Engine("mysql" , $settings [ "dbHost" ] , $settings [ "dbUser" ] , $settings [ "dbPass" ] , $settings ["dbName" ] ); // мэдээллийн санд холбогдож, хандалтын өгөгдлийг зааж өгнө$category = шинэ TreeCategory ($DB ); // мэдээллийн сантай ажиллах объект болох категорийн анги руу шилжих$category -> table = "category" ; // категори бүхий мэдээллийн сан дахь хүснэгтийн нэр$ массив = $ категори -> getCategory() ; // мэдээллийн сангаас бүх категорийг олон түвшний массив хэлбэрээр авах, бидэнд хэрэгтэй дарааллаар эрэмбэлж, үүрлэх$category -> outCategory ($массив , "сонголт" ); // категорийн гаралтыг бэлтгэх (HTML үүсгэх), категори бүхий массив дамжуулах echo $ категори -> html ; // HTML хэлбэрээр ангиллыг гаргана |
Дээрх жишээнээс харахад бүх зүйл маш энгийн бөгөөд бид шинэ $category объект үүсгэж, ямар өгөгдлийн сангийн хүснэгттэй ажиллахыг тохируулна: 'category', дараа нь бид хүснэгтээс массив хэлбэрээр форматлагдсан бүх категорийн жагсаалтыг авна. бүх дэд ангиллыг харгалзан шаталсан дарааллаар задалсан. Дараа нь бид массивыг outCategory() арга руу дамжуулдаг бөгөөд энэ нь бидэнд зориулж бэлэн HTML кодыг үүсгэдэг бөгөөд энэ нь зөвхөн хөтөч дээр харагдах болно.
Бидний харж байгаагаар outCategory() арга нь @array ба @string гэсэн хоёр параметрийг эхний параметрт бүх категори бүхий массив, хоёрдугаарт утга агуулсан мөрийг авдаг. сонголтэсвэл ширээ, энэ утга нь ямар төрлийн HTML код үүсгэхийг заадаг.
Утга сонголт
HTML кодыг харах
Аливаа маягтын сонгох талбарт өгөгдсөн HTML кодыг оруулах.
Утга ширээ- дараах HTML кодыг үүсгэнэ:
HTML кодыг харах
Энэ HTML код нь манай бүх дэд категориудыг харуулсан хүснэгтэд буулгахад тохиромжтой.
Анги нь дараахь аргуудтай.
устгах зүйл($id);- үүрлэсэн ангиллаас үл хамааран нэг ангиллыг хасна
delCategory($массив, $id);— бүх дэд категори бүхий категорийг устгана, $array — $category->getCategory() аргаар бэлтгэсэн бүх категори бүхий массив, $ ID дугаарустгах ангилал
addItem();- Хэрэв та категори нэмэхийг хүсвэл энэ аргыг дуудах хэрэгтэй бөгөөд энэ арга нь POST аргаар дамжуулсан өгөгдлөөс утгыг уншдаг, өөрөөр хэлбэл. $_POST массиваас.
$name=$this->PHP_slashes(srip_tags($_POST['name'])); // категорийн нэр
$podcat=intval($_POST['podcat']); // Үндсэн категорийн ID, хэрэв 0 гэж заасан бол категори нь үндэс дээр байх болно.
updateItem(); - өмнөх аргатай төстэй, зөвхөн энэ арга нь ангилал, нэр, үүрлэх түвшинг шинэчилдэг.
Анги бүхэлдээ нэг цагийн дотор бичигдсэн бөгөөд мэдээжийн хэрэг алдаа дутагдалтай боловч энэ бүгдийг засах боломжтой. Үүнийг боловсролын зорилгоор ашиглахыг зөвлөж байна, гэхдээ дашрамд хэлэхэд, үүнийг бага зэрэг дуусгасны дараа та үүнийг ямар ч системд суулгаж, ажлыг нь эдлэх боломжтой)).
Сэтгэгдэл бичихдээ та энэ асуудлыг шийдэх өөрийн сонголтуудыг санал болгож байвал хязгааргүй үүрлэх түвшний категориудыг зохион байгуулбал би талархах болно.
Нэг ч сайт нь навигацигүйгээр бүрэн дүүрэн байдаггүй, эсвэл "сайт цэс" гэж нэрлэдэг. Тиймээс сайтын цэс нь модны хэлбэрээр нэг түвшний, олон түвшний байж болно. Хэрэв нэг түвшний цэсийг хэрэгжүүлэхэд тодорхой бэрхшээл гарахгүй бол үүсгэх үед олон түвшний цэссайн бодох хэрэгтэй.
Энэ даалгаварт хамгийн чухал зүйл бол манай олон түвшний цэсэнд зориулсан мэдээллийн санг зохиох явдал юм. Гурван талбар бүхий Categories хүснэгтийг үүсгэцгээе ID, гарчиг, эцэг эххаана:
- ID- танигч
- Гарчиг- Цэсийн нэр
- эцэг эх- Үндсэн ангилалын эцэг эх 0
Талбар нь цэсийг салбарлах үүрэгтэй эцэг эххэрэв эцэг эх = 0, тэгвэл энэ ангилал нь эх ангилал болно. Эцэг эхийн ангилалд хүүхдүүдийг нэмэхийн тулд эцэг эхийн талбарт зааж өгөх шаардлагатай IDхүссэн эцэг эх. Жишээлбэл:
Ангилал бүхий хүснэгтүүд
Хүснэгтээс харахад эцэг эхийн ангилал Машинуудхоёр үр удам бий Маздаболон Хондасалбараар холбоотой эцэг эх. Мөн ангилал Мотоциклхоёр үр төл байна кавасакиболон Харли. Үүний зэрэгцээ завь ангилалд үр удам байхгүй. Та категорийг хэрхэн холбохыг ойлгосон гэж найдаж байна.
Дараа нь бид үг хэллэгээс дасгал руу шилждэг. Ангилалуудын хүснэгтийг үүсгэцгээе.
"Ангилал" БАЙХГҮЙ БОЛ ХҮСНЭГТ ҮҮСГЭ (`id` int(10) тэмдэггүй NULL БУС AUTO_INCREMENT, `title` varchar(255) NULL БИШ, `parent` int(10) тэмдэггүй NULL БИШ, АНХАН ТҮЛХҮҮР (`id`)) ENGINE=MyISAM-н өгөгдмөл CHARET=utf8 AUTO_INCREMENT=20 ; -- -- `Ангилал` хүснэгтийн өгөгдлийг хаях -- `Ангилал` (`id`, `гарчиг`, `эцэг эх`) INSERT INTO VALUES (1, "Машин", 0), (2, "Мотоцикл", 0) , (3, Mazda, 1), (4, Honda, 1), (5, Kawasaki, 2), (6, Harley, 2), (7, Mazda 3, 3), (8, "Mazda 6", 3), (9, "Седан", 7), (10, "Хэтчбек", 7), (11, "Завь", 0), (12, "Лифтбек", 8), (13, "Кроссовер", 8), (14, "Цагаан", 13), (15, "Улаан", 13), (16, "Хар", 13), (17, "Ногоон", 13), (18, Mazda CX, 3) ), (19, Mazda MX, 3);Ажлын алгоритм нь дараахь зүйлээс бүрдэнэ.
Өгөгдлийн сангийн холболт үүсгэх
query("SET NAMES "utf8""); /* * Энэ бол үүнийг хийх "албан ёсны" объект хандалтат арга юм * гэхдээ $connect_error нь PHP 5.2.9 болон 5.3.0 хүртэл ажиллаагүй. */ if ($mysqli->connect_error) ( die("Холболт амжилтгүй болсон (" . $mysqli->connect_errno. ") " . $mysqli->connect_error; ) /* * Хэрэв та хувилбаруудтай нийцэж байгаа эсэхийг шалгахыг хүсвэл 5.2 .9-ээс өмнө * ийм код илүү сайн */ if (mysqli_connect_error()) ( die("Холболт амжилтгүй болсон (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); )Ангилал хүснэгтээс өгөгдөл авах функц бичих
//Өгөгдлийн сангаас манай цэсийн массивыг массив функцээр авна getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Массив үүсгэнэ үү. массивын түлхүүр нь цэсийн ID $cat = array(); while($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) буцаана $cat; )Бид иймэрхүү массивыг авдаг бөгөөд массивын түлхүүр нь категорийн ID юм.
Томми Лакруйсын бичсэн массив модны функц
//Tommy Lacroix-ийн массиваас мод бүтээх функц getTree($dataset) ( $tree = array(); foreach ($id => &$зангилаа) ( //Хэрэв хавсралт байхгүй бол (!$node[" parent"])( $tree[$id] = &$node; )else( //Хэрэв хүүхдүүд байгаа бол $dataset[$node["parent"]][" массиваар давталт хийнэ үү. childs"][$id] = &$ зангилаа; ) ) $tree; ) буцаана.Мод хэлбэрээр массив авах
Бүхэл бүтэн скрипт
query("SET NAMES "utf8""); /* * Энэ бол үүнийг хийх "албан ёсны" объект хандалтат арга юм * гэхдээ $connect_error нь PHP 5.2.9 болон 5.3.0 хүртэл ажиллаагүй. */ if ($mysqli->connect_error) ( die("Холболт амжилтгүй болсон (" . $mysqli->connect_errno. ") " . $mysqli->connect_error; ) /* * Хэрэв та хувилбаруудтай нийцэж байгаа эсэхийг шалгахыг хүсвэл 5.2 .9-ээс өмнө * энэ кодыг ашиглах нь илүү дээр юм */ if (mysqli_connect_error()) ( die("Холболтын алдаа (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); ) //Манай цэсийн массивыг авах өгөгдлийн сангаас массив функцээр авах getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Масивын түлхүүр нь цэс болох массив үүсгэ. ID $cat = array(); while ($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) буцаах $cat; ) //Мод барих функц Tommy Lacroix функцийн массиваас getTree($dataset) ( $tree = array(); foreach ($id => &$ зангилаа) ( //Хэрэв хавсралт байхгүй бол (!$ зангилаа["эцэг эх" ])( $tree[$id] = &$node; )else( //Хэрэв хүүхдүүд байгаа бол $dataset[$node["parent"]]["childs"][$id] массиваар давтана уу. &$зангилаа; ) ) $tree; буцаана; ) //Бэлтгэлтэй бай $cat = getCat($mysqli) бүхий th массив; //Модны цэс үүсгэх $tree = getTree($cat); //Цэсийг модны функц хэлбэрээр харуулах загвар tplMenu($category)( $menu = "- ".showCat($category["хүүхдүүд"]) ."
- ". $cat_menu ."
Ажлын үр дүн
Админд зориулсан PHP + MySQL дээрх олон түвшний цэс
Хэрэв та ашиглахыг хүсвэл энэ цэссайтынхаа админ самбар дээр та хэд хэдэн функцийг дахин бичих хэрэгтэй tplMenu(), showCat().
".$ категори["гарчиг"].""; ) else( $ цэс = " "; ) if(isset($category["childs"]))( $i = 1; for($j = 0; $j)< $i; $j++){ $str .= "→"; } $i++; $menu .= showCat($category["childs"], $str); } return $menu; } /** * Рекурсивно считываем наш шаблон **/ function showCat($data, $str){ $string = ""; $str = $str; foreach($data as $item){ $string .= tplMenu($item, $str); } return $string; } //Получаем HTML разметку $cat_menu = showCat($tree, ""); //Выводим на экран echo ""; ?>
Ажлын үр дүн
Машинууд → Mazda →→ Mazda 3 →→→ Седан →→→ Хэтчбек →→ Mazda 6 →→→ Лифтбек →→→ Кроссовер →→→→ Цагаан →→→ Улаан →→→→ Хар →→→→Ногоон →→ Mazda CX → → Mazda MX → Хонда мотоцикл → Kawasaki → Harley BoatsДараагийн ажил бол PHP ашиглан хязгааргүй үүрлэх категориудыг гаргах явдал юм. Хэд хэдэн сайт руу авирч, би олон шийдлийг олсон боловч бүгдийг нь ойлгох боломжгүй, учир нь. тэнд програмчлалын түвшин минийхээс өндөр. Тиймээс, би хамгийн энгийн, магадгүй хамгийн гоёмсог биш, гэхдээ ажиллах шийдлийг олсон.
Эхлээд мэдээллийн санд юу байгааг харцгаая
- id - манай ангиллын танигч
- категори — ангиллын нэр
- category_id - эцэг эхийн ангиллын ID. parent_id руу залгах боломжтой байсан ч энэ нь надад илүү танил юм
- lvl — ангиллын үүрлэх түвшин. бүрдүүлэх шаардлагатай
- Түрхсэн бүхэн чамд ямар ч хэрэггүй, учир нь Би хувьдаа надад хэрэгтэй мэдээлэл байгаа бөгөөд таныг төөрөгдүүлэхгүйн тулд би энэ шаардлагагүй мэдээллийг устгасан.
ангилалд харуулж байна
echo " "; ?>Энд хэлэх онцгой зүйл байхгүй, хэрэв танд асуулт байвал сэтгэгдэл дээр бичээрэй, энд бичсэн зүйл огт хамаагүй хүмүүст би үр дүнг шууд харахыг зөвлөж байна.
Хэрэв та ойлгохгүй байгаа бол категориудын нэрний өмнө хэр их "-" оруулахыг мэдэхийн тулд мэдээллийн санд lvl талбар хэрэгтэй болно. Мэдээжийн хэрэг, lvlгүйгээр илүү боловсронгуй арга байдаг, гэхдээ дээр Энэ мөчНадад ганц л шийдэл байна. Энэ нь өөрчлөгдөхийн хэрээр би нийтлэлийг шинэчлэх болно.
ангилалд харуулж байна
Үүнийг маягтаар биш, харин жагсаалтаар харуулах шаардлагатай үед танд зориулсан өөр нэг шийдэл энд байна.
$out; function foo($category_id){ global $out; $res = mysql_query("SELECT * FROM category WHERE category_id = $category_id"); $out .= "
- "; while($rows = mysql_fetch_assoc($res))( $out .= "
- ".$rows["category"]." "; foo($rows["id"]); ) $out .= "
Энд бидэнд lvl хэрэггүй болсон тул код бага байна. Тэгээд үр дүн нь доор байна