v2.5.2
Giriş yap

Gelen veriyi php tarafından oturtamıyorum. Yardım edermisiniz?

acemi
290 defa görüntülendi
<div data-kt-menu-trigger="{default: 'click', lg: 'hover'}" data-kt-menu-placement="bottom-start" class="menu-item menu-lg-down-accordion menu-sub-lg-down-indention me-0 me-lg-2">
	<span class="menu-link py-3"><span class="menu-title">Ayarlar</span><span class="menu-arrow d-lg-none"></span></span>
	<div class="menu-sub menu-sub-lg-down-accordion menu-sub-lg-dropdown px-lg-2 py-lg-4 w-lg-200px">
		
		<div data-kt-menu-trigger="{default:'click', lg: 'hover'}" data-kt-menu-placement="right-start" class="menu-item menu-lg-down-accordion">
			<span class="menu-link py-3"><span class="menu-icon"><i class="ki-duotone ki-rocket fs-2"><span class="path1"></span>
			<span class="path2"></span></i></span><span class="menu-title">Site Ayarları</span><span class="menu-arrow"></span></span>
			<div class="menu-sub menu-sub-lg-down-accordion menu-sub-lg-dropdown menu-active-bg px-lg-2 py-lg-4 w-lg-225px">
				<div class="menu-item">
					<a class="menu-link py-3" href=""><span class="menu-bullet"><span class="bullet bullet-dot"></span></span>
					<span class="menu-title">ayar 2</span></a>
				</div>
				<div class="menu-item">
					<a class="menu-link py-3" href=""><span class="menu-bullet"><span class="bullet bullet-dot"></span></span>
					<span class="menu-title">ayar 3</span></a>
				</div>
			</div>
		</div>
		<div class="menu-item">
			<a class="menu-link py-3" href="" target="_blank" title="test" data-bs-toggle="tooltip" data-bs-trigger="hover" data-bs-dismiss="click" data-bs-placement="right"><span class="menu-icon"><i class="ki-duotone ki-rocket fs-2"><span class="path1"></span><span class="path2"></span></i></span><span class="menu-title">test</span></a>
		</div>
		<div class="menu-item">
			<a class="menu-link py-3" href="" target="_blank" title="test" data-bs-toggle="tooltip" data-bs-trigger="hover" data-bs-dismiss="click" data-bs-placement="right"><span class="menu-icon"><i class="ki-duotone ki-abstract-26 fs-2"><span class="path1"></span><span class="path2"></span></i></span><span class="menu-title">test 2</span></a>
		</div>
		<div class="menu-item">
			<a class="menu-link py-3" href="" title="test" data-bs-toggle="tooltip" data-bs-trigger="hover" data-bs-dismiss="click" data-bs-placement="right"><span class="menu-icon"><i class="ki-duotone ki-switch fs-2"><span class="path1"></span><span class="path2"></span></i></span><span class="menu-title">test 3</span></a>
		</div>
		<div class="menu-item">
			<a class="menu-link py-3" href="" target="_blank"><span class="menu-icon"><i class="ki-duotone ki-code fs-2"><span class="path1"></span><span class="path2"></span><span class="path3"></span><span class="path4"></span></i></span><span class="menu-title">test 5</span></a>
		</div>
	</div>
</div>

sql tablo

idadikategoriparent_id
1Değer 100
2Değer 200
2Değer 310
2Değer 410
2Değer 524
2Değer 624
2Değer 721

tabloda bu şekilde kafam sürekli karışmtı takıldım
acaba bunu mysql çekerken burdaki kurala uygun bir şekilde nasıl birşey yapabilirim.

teşekkürler.

Cevap yaz
Cevaplar (5)
ulusanyazilim
360 gün önce
<?php
// Veritabanı bağlantısı yapılır
$conn = new mysqli("localhost", "kullanici_adi", "parola", "veritabani_adi");

// SQL sorgusu çalıştırılır ve sonuç `$result` değişkenine atanır
$result = $conn->query("SELECT * FROM kategoriler");

// HTML çıktısı oluşturulur
echo '<div id="accordion">';
while ($row = $result->fetch_assoc()) {
  if ($row['parent_id'] == 0) {
    echo '<div class="card">
            <div class="card-header" id="heading'.$row['id'].'">
              <h5 class="mb-0">
                <button class="btn btn-link" data-toggle="collapse" data-target="#collapse'.$row['id'].'" aria-expanded="true" aria-controls="collapse'.$row['id'].'">
                  '.$row['adi'].'
                </button>
              </h5>
            </div>';
    echo '<div id="collapse'.$row['id'].'" class="collapse" aria-labelledby="heading'.$row['id'].'" data-parent="#accordion">
            <div class="card-body">';
    
    // Alt kategorileri bulmak için yeni bir sorgu yapılır ve sonuç `$result2` değişkenine atanır
    $result2 = $conn->query("SELECT * FROM kategoriler WHERE parent_id = ".$row['id']);
    while ($row2 = $result2->fetch_assoc()) {
      echo '<p>'.$row2['adi'].'</p>';
    }
    echo '</div></div></div>';
  }
}
echo '</div>';
?>
istek61
362 gün önce

acaba kulağını tersten kaşımak gibi mi olmuş ? farklı birşey yapmaya çalışmışsın belkide işlevseldirde ama alt kategori mantığıyla diğer menüde gözükmesini istediğin şeyi bir daha yazsan olmaz mı ?

acemi
362 gün önce

@abdullahx
@h4ckdr0
böyle bir sınıf hazırladım fakat yine istediğim gibi olmadı malesef.

ne varsa ekrana basıyor
ilk çıkan menü düzgün çıkıyor
sonraki menü ilk menünün içindeki menüler çıkıyor
sonra o içindeki mönüler

böyle böyle devam ediyor örnekle söyle açıklayayım.

https://www.hizliresim.com/56r8pte

https://www.hizliresim.com/8tqsclh

bu resimlerdeki gibi saçma bir hal aldı
acaba nerde hata yapıyorum.
class CategoryTree {

    
  private $db;

  public function __construct($db) {
      $this->db = $db;
  }

    public function getMenu() {
        $menu = ''; 
        $categories = $this->getCategories();

        foreach ($categories as $category) {
            $subCategories = $this->getCategories($category['id']);
            $menu .= '<div data-kt-menu-trigger="{default: \'click\', lg: \'hover\'}" data-kt-menu-placement="bottom-start" class="menu-item menu-lg-down-accordion menu-sub-lg-down-indention me-0 me-lg-2">';
            $menu .= '<span class="menu-link py-3"><span class="menu-title">' . $category['cat_name'] . '</span><span class="menu-arrow d-lg-none"></span></span>';
            if (!empty($subCategories)) {
                $menu .= '<div class="menu-sub menu-sub-lg-down-accordion menu-sub-lg-dropdown px-lg-2 py-lg-4 w-lg-200px">';
                foreach ($subCategories as $subCategory) {
                    $menu .= '<div data-kt-menu-trigger="{default:\'click\', lg: \'hover\'}" data-kt-menu-placement="right-start" class="menu-item menu-lg-down-accordion">';
                    $menu .= '<span class="menu-link py-3"><span class="menu-icon"><i class="ki-duotone ki-rocket fs-2"><span class="path1"></span>';
                    $menu .= '<span class="path2"></span></i></span><span class="menu-title">' . $subCategory['cat_name'] . '</span><span class="menu-arrow"></span></span>';
                    $subSubCategories = $this->getCategories($subCategory['id']);
                    if (!empty($subSubCategories)) {
                        $menu .= '<div class="menu-sub menu-sub-lg-down-accordion menu-sub-lg-dropdown menu-active-bg px-lg-2 py-lg-4 w-lg-225px">';
                        foreach ($subSubCategories as $subSubCategory) {
                            $menu .= '<div class="menu-item">';
                            $menu .= '<a class="menu-link py-3" href="' . $subSubCategory['url'] . '">';
                            $menu .= '<span class="menu-bullet"><span class="bullet bullet-dot"></span></span>';
                            $menu .= '<span class="menu-title">' . $subSubCategory['cat_name'] . '</span></a></div>';
                        }
                        $menu .= '</div>';
                    }
                    $menu .= '</div>';
                }
                $menu .= '</div>';
            }
            $menu .= '</div>';
        }

        return $menu;
    } 
  private function getCategories($parent_id = null) {
    $query = "SELECT * FROM admin_menu";
    if ($parent_id !== null) {
      $query .= " WHERE parentID = :parentID";
    }
    $stmt = $this->db->prepare($query);
    if ($parent_id !== null) {
      $stmt->bindValue(":parentID", $parent_id, PDO::PARAM_INT);
    }
    $stmt->execute();
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
  }
}
acemi
363 gün önce

@kitfox

evet sizde haklısınız

söyle yapmak istiyorum

kategorisi 0 olanların html deki ayarlar kısmına gelmesi gerekiyor
kategorisi 1 olanların html deki site ayarları kısmını temsil ediyor.
kategorisi 2 olanların html deki ayar 2, ayar3 ve en alttaki test 2-3-4-5 alanlarına listelenmesi gerekiyor.
yada bağlı olduki parent_id ler ve kategorisi 2 olanlar menu-item class ını yerleşmesi gereiyor anlatırken bile kafam karıştı :)))

kitfox
363 gün önce

kardeşim sana çok yardımcı olmak isteriz ama daha açıklayıcı olmaz lazım birde html kodun yanında bize görselde gönder birde tam olarak ne yapmak istiyorsun yoksa veri çekmek çok basit bir işlem php de