• 20-09-2018, 16:53:16
    #1
    arkadaşlar merhaba anasayfada haberleri kategorısıne gore gosterıyorum ama haber olmayan bos olan kategorıyıde anasayfada gosterıyo bunu nasıl bos ıse gosterme dıyebılırım



    $kategoriler=$db->prepare("SELECT * from kategoriler order by kategori_sira ASC");
    $kategoriler->execute(array( ));
    $kategoriler=$kategoriler->fetchAll(PDO::FETCH_ASSOC);

    if ($haberler==true) {
    foreach ($kategoriler as $kategori) {
    $haberler=$db->prepare("SELECT * from haberler where durum=:drm && kategori=:kat order by haberzaman ASC limit 6");
    $haberler->execute(array( 'drm' => 1, 'kat'=>$kategori["id"] ));
    $goster=$haberler->fetchAll(PDO::FETCH_ASSOC);
  • 20-09-2018, 17:05:59
    #2
    if($query->rowCount()<1)
    { 
    echo "boş veri";
     }
    veya direk sorguya if çekerseniz öyle de olabilir.
  • 20-09-2018, 17:08:25
    #3
    Şimdi 2 veri geliyor olarak düşünelim. $haberler ve $kategoriler

    Database tasarımınızı görmedim ama muhtemelen yazılar için kategori_id adında bir tablo vardır.

    Kategoriler ile birlikte yazıların olduğu alanı blok olarak adlandıracağım.

    En üste yani blok kısmının dışına bir if else ekleyebilirsiniz diye düşünüyorum.

    Bir bloğa bu şekilde yaklaşın. Eğer Gelen $haberler içerisindeki kategori_id si, $kategoriler değerindeki id değerine eşit ise, blok göstersin. Eşit yok ise blok gösterilmez. Bu if elsin en dışına da klasik foreach döngüsünü yerleştirebilirsiniz.

    Böylece foreach döner. İçindeki if else bakar. Şart sağlanıyorsa gösterir yoksa göstermez o blok kısmını. Böylece bir kategoriye yazı eklendiği an gösterilebilir. Sıkıntısız ve stabil bir kod olacaktır diye düşünüyorum.

    Elimde geldiğince yardımcı olmaya çalıştım database kısmını ve genel olarak tüm kod kısmını html alanı vs bilmediğim için böyle bir senaryo kurdum.

    Yine de yapamazsanız elimden geldiğince yardımcı olurum.
  • 20-09-2018, 17:12:48
    #4
    önce
    SELECT DISTINCT kategori FROM haberler
    ile kategori numaralarını cektirip sonrasında bu kategori numaralarını döngü ile okutup kategori verilerini cektirip yazdırabilirsin

    veya kategorileri listeletirken
    SELECT COUNT(*) FROM haberler WHERE kategori =:kategori_id
    ile o kategorideki içeriklerin sayısının kontrolü ile döngüyü bir sonrakite atabilirsin continue ile
  • 20-09-2018, 17:21:11
    #5
    $kategoriler=$db->prepare("SELECT * from kategoriler order by kategori_sira ASC");
    yerine

    $kategoriler=$db->prepare("SELECT * FROM kategoriler AS k WHERE EXISTS (SELECT * FROM haberler AS h WHERE k.id = h.kategori AND h.durum = 1) order by k.kategori_sira ASC");
  • 21-09-2018, 10:15:40
    #6
    arkadaşlar cevaplarınız için teşekkür ederim ancak hiçbiri istenilen sonuca ulaşmadı