Paparkan kategori sebagai (ul) item dan subkategori sebagai (li) item dalam php
P粉052724364
P粉052724364 2024-03-31 17:06:59
0
2
380

rreeee

Saya mempunyai treeview yang dibuat menggunakan PHP dan fungsi yang mengekstrak treeview mengekstrak kategori dan subkategorinya dengan betul. Jadual kategori dalam pangkalan data mempunyai lajur yang memegang nilai yang ditentukan (1/0), dengan 1 mewakili kategori utama dan 0 mewakili subkategori. Masalah yang saya hadapi ialah apabila saya menarik kategori daripada pangkalan data, tidak ada bezanya sama ada kategori itu adalah kategori utama atau subkategori. Kesemuanya dipaparkan sebagai elemen li dan saya menggunakan pemformatan CSS pada paparan pokok untuk mencipta ikon folder pada item senarai. Persoalannya ialah bagaimana untuk memaparkan kategori utama dengan nilai 1 dalam jadual kategori sebagai elemen ul yang mengandungi ikon folder yang boleh dibuka untuk menunjukkan kandungan di dalam, dan subkategori dengan nilai 0 dalam jadual kategori harus dipaparkan sebagai li elemen tanpa Sebarang ikon folder (bermaksud hanya nama subkategori dipaparkan sebagai teks).

Keluaran saya

Saya perlu mendapatkan output seperti yang ditunjukkan dalam gambar.

P粉052724364
P粉052724364

membalas semua(2)
P粉317679342

Saya cadangkan anda mengubah suai kod anda untuk mengambil kira sama ada item tersebut adalah kategori utama atau subkategori.

"Simpan lajur dengan nilai yang ditentukan (1/0), dengan 1 mewakili kategori utama dan 0 mewakili subkategori" - Katakan lajur itu dinamakan type.

function showcategory($parentid)
{
    $sql = "select * from categories where parent_id='".$parentid."'";
    $result = mysqli_query($GLOBALS['conn'],$sql);
    $output ="
    \n"; while($data=mysqli_fetch_array($result)) { $output.= '
  • '.$data['name']; if ($data['type']) { $output.=showcategory($data['id']); } $output.="
  • "; } $output.="
"; return $output; }

Anda sepatutnya boleh menggunakan CSS untuk menggayakan nod subkategori untuk dipadankan li.type0

P粉513318114

Saya mengesyorkan anda hanya menanya pangkalan data sekali sahaja dan bukannya meletakkan pertanyaan pangkalan data ke dalam fungsi rekursif.

Anda perlu menyemak kedudukan utama item menu (berdasarkan nilai jenis 0/1). Ini akan menambah class='main' pada projek utama dan anda boleh menggunakan css untuk menggayakan ikon utama. Jom cuba ubah suai ini.

function showcategory($data, $parentId = 0) {
$menu = '
    '; foreach ($data as $item) { if ($item['parent_id'] == $parentId) { $menu .= '
  • '; // Recursive call to build sub-menu if it has children $submenu = showcategory($data, $item['id']); if ($submenu) { $menu .= $submenu; } $menu .= '
  • '; } } $menu .= '
'; return $menu; } $sql = "select * from categories where parent_id='".$parentid."'"; $result = mysqli_query($GLOBALS['conn'],$sql); $data=mysqli_fetch_array($result) $menu = showcategory($data); echo $menu;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan