v2.5.2
Giriş yap

Kategorileri başlık olacak şekilde listeleme mantığı

emregemici
226 defa görüntülendi

örneğin, bir veritabanım var:

tablo adı: category

id 1 value PHP
id 2 value CSS
id 3 value HTML

olsun.

dersler diye ayrı bir tablom var o da
tablo adı: lessons

id 1 value Diziler category 1
id 2 value Fonksiyonlar category 1
id 3 value Formlar category 3
id 4 value Sıfırlama category 4

olsun

LEFT JOIN veya INNER JOIN kullanarak verileri çekiyorum.
ancak;

PHP
    Diziler
    Fonskiyonlar
CSS
    Sıfırlama
HTML
    Formlar

şeklinde çekmek istiyorumç. Kategorileri çekeyim. altında hangi kategoriye ait dersler varsa onlar gelsin. recursive dışı bi şekilde yapılıyodu mantığını kuramadım.

gokcin
301 gün önce

<?php
try {
    // Veritabanı bağlantısı
    $pdo = new PDO("mysql:host=localhost;dbname=your_database_name;charset=utf8", "your_username", "your_password");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Kategorilere ve derslere ait verileri çek
    $query = "
        SELECT c.id AS category_id, c.value AS category_value, l.value AS lesson_value
        FROM category c
        LEFT JOIN lessons l ON c.id = l.category_id
    ";
    $stmt = $pdo->prepare($query);
    $stmt->execute();
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // Verileri düzenleyip ekrana bastır
    $categories = [];
    foreach ($result as $row) {
        $category_id = $row['category_id'];
        $category_value = $row['category_value'];
        $lesson_value = $row['lesson_value'];

        if (!isset($categories[$category_id])) {
            // Kategori ilk defa karşılaşıldıysa, yeni bir dizi oluştur
            $categories[$category_id] = [
                'category_value' => $category_value,
                'lessons' => [],
            ];
        }

        // Kategoriye ait dersleri ekleyerek düzenle
        if ($lesson_value !== null) {
            $categories[$category_id]['lessons'][] = $lesson_value;
        }
    }

    // Sonuçları ekrana bastır
    foreach ($categories as $category) {
        echo "<b>{$category['category_value']}</b><br>";

        foreach ($category['lessons'] as $lesson) {
            echo "&nbsp;&nbsp;&nbsp;$lesson<br>";
        }
    }
} catch (PDOException $e) {
    echo "Veritabanı hatası: " . $e->getMessage();
}
?>