cari

Rumah  >  Soal Jawab  >  teks badan

Paparkan kategori sebagai (ul) item dan subkategori sebagai (li) item dalam php

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粉052724364P粉052724364238 hari yang lalu352

membalas semua(2)saya akan balas

  • P粉317679342

    P粉3176793422024-04-01 16:10:54

    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

    balas
    0
  • P粉513318114

    P粉5133181142024-04-01 12:10:04

    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;

    balas
    0
  • Batalbalas