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);
pdo boş veri kontrolu
5
●483
- 20-09-2018, 17:08:25Ş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ö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