v2.5.2
Giriş yap

kategori adı ve ait olduğu banner'lar join ile kayıtlar çift geliyor.

kartal
614 defa görüntülendi

Kategori var ve başka tabloda da kategori id li banner lar var
ben

  1. Kategori 1
    Banner 1 (kategori 1)
    Banner 2 (kategori 1)

  2. Kategori 2
    Banner 1 (kategori2)
    Banner 2 (kategori2)

    Bu şekilde listeletmek istiyorum

    $banner = $db->prepare("SELECT * FROM banner INNER JOIN kategoriler ON kategoriler.kategori_id = banner.kategori_id GROUP BY kategoriler.kategori_ad");
    $banner->execute();
    $banner_r = $banner->fetchAll(PDO::FETCH_OBJ);

    foreach ile birleştiriyorum ama
    yukarıda ki gibi listeletemedim

    Yani yapmak istediğim kategori adı ve sayısı altında da ona ait banner ve resimlerini listeletmek :)

farukdst
1595 gün önce

Tek sorgu kullanarakta şöyle yapılabilir:

<?php

$db = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
$banner = $db->prepare("
    SELECT * FROM banner 
    INNER JOIN kategoriler ON kategoriler.kategori_id = banner.kategori_id
");
$banner->execute();
$banner_r = $banner->fetchAll(PDO::FETCH_OBJ);

$dizi = [];
foreach( $banner_r as $veriler ):
    $dizi[$veriler->kategori_ad][] = $veriler->banner_ad;
endforeach;

foreach( $dizi as $kategori => $banners ):
    echo "<h4>$kategori</h4>";
    foreach( $banners as $banner ):
        echo '<p style="margin-left:10px">'.$banner.'</p>';
    endforeach;
endforeach;

/*
ÇIKTI:
Kategori 1
    Banner 1
    Banner 2
Kategori 2
    Banner 1
    Banner 2
*/