Gelen veriyi php tarafından oturtamıyorum. Yardım edermisiniz?
<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
id | adi | kategori | parent_id |
---|---|---|---|
1 | Değer 1 | 0 | 0 |
2 | Değer 2 | 0 | 0 |
2 | Değer 3 | 1 | 0 |
2 | Değer 4 | 1 | 0 |
2 | Değer 5 | 2 | 4 |
2 | Değer 6 | 2 | 4 |
2 | Değer 7 | 2 | 1 |
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.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (5)
<?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>';
?>
@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);
}
}
@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ı :)))