• 12-10-2020, 10:44:51
    #1
    <?php
    $kontrol = $db->query("SELECT title, name from icerikler WHERE kategori = 2 ", PDO::FETCH_ASSOC);
    ?>

    $kontrol değişkenin içinde bişey olup olmadığını kontrol etmek istiyorum ama ekrana belirttiğim kriterlerde bişey gelmese de
    Dolu gösteriyor.

    <?php if (empty($kontrol)) { echo ‘malesef içerik yok ama boş göstermiyor.’} ?>

    foreach döngüye soktuğumda varsa belirtilen kritededekiler geliyor. Yoksa gelmiyor. Ben foreache sokmadan önce kritere uyan içerik varmı yokmu nasıl öğrenebilirim?
  • 12-10-2020, 10:48:59
    #2
    Merhaba,
    Sorun muhtemelen şu, sorguyu direk array'e çeviriyorsun. Bu yüzden PHP empty() fonksiyonu da dolu olarak görüyor. Önce sorgunu çalıştırır boş olup olmadığını kontrol edersin daha sonra fetch_assoc yaparsın. Ya da $kontrol değişkeninin içindeki array'in boş olup olmadığını kontrol edersin.
  • 12-10-2020, 10:56:09
    #3
    rowCount fonksiyonunu kullanabilirsin.

    $query = $db->query("SELECT * FROM users", PDO::FETCH_ASSOC);
    if ( $query->rowCount() ){
    foreach( $query as $row ){
    ///
    }
    } else {
    // Not found.
    }
  • 12-10-2020, 10:59:16
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    MSA nın dediğini yaptığınızda olacaktır. Birde kodları renkli paylaşırsanız iyi olue böyle okunmuyor
  • 12-10-2020, 11:35:59
    #5
    MaviBilisim adlı üyeden alıntı: mesajı görüntüle
    Merhaba,
    Sorun muhtemelen şu, sorguyu direk array'e çeviriyorsun. Bu yüzden PHP empty() fonksiyonu da dolu olarak görüyor. Önce sorgunu çalıştırır boş olup olmadığını kontrol edersin daha sonra fetch_assoc yaparsın. Ya da $kontrol değişkeninin içindeki array'in boş olup olmadığını kontrol edersin.

    Sizin dediğiniz nasıl oluyor hocam?
    Örnek verebilir misiniz?
  • 12-10-2020, 11:44:49
    #6
    Merhaba,
    Aşağıdaki kodu deneyebilirsiniz. Bu arada var_dump() ile $kontrol değişkeninizin ne verdiğini görmek önemli. Bu yazdığımız kodlar varsayım üzerinedir.

    $kontrol = array();
    if (!$kontrol) {
       echo "Boş Dizi";
    } else {
       echo "Dolu Dizi";
    }
    // VEYA
    if(count($kontrol) >0):
        echo "Dolu Dizi";
    else:
        echo "Boş Dizi";
    endif;
  • 12-10-2020, 12:10:53
    #7
    Hocam $kontrol değişkenini kontrol ettiğimde var_dump ile string ifade olduğu yazıyor. İçeriğini de;

    $db->query("SELECT title, name from icerikler WHERE kategori = 2 ", PDO::FETCH_ASSOC);

    bu şekilde gösteriyor. Sanırım bu yüzden çekilecek veri olmasa bile dolu görünüyor.

    MaviBilisim adlı üyeden alıntı: mesajı görüntüle
    Merhaba,
    Aşağıdaki kodu deneyebilirsiniz. Bu arada var_dump() ile $kontrol değişkeninizin ne verdiğini görmek önemli. Bu yazdığımız kodlar varsayım üzerinedir.

    $kontrol = array();
    if (!$kontrol) {
       echo "Boş Dizi";
    } else {
       echo "Dolu Dizi";
    }
    // VEYA
    if(count($kontrol) >0):
        echo "Dolu Dizi";
    else:
        echo "Boş Dizi";
    endif;
  • 12-10-2020, 12:29:06
    #8
    buddy adlı üyeden alıntı: mesajı görüntüle
    Hocam $kontrol değişkenini kontrol ettiğimde var_dump ile string ifade olduğu yazıyor. İçeriğini de;

    $db->query("SELECT title, name from icerikler WHERE kategori = 2 ", PDO::FETCH_ASSOC);

    bu şekilde gösteriyor. Sanırım bu yüzden çekilecek veri olmasa bile dolu görünüyor.
    Merhaba,
    Sonucu görmeden net bir şey söyleyemiyorum. Dilerseniz PM ile iletişime geçin daha detaylı yardımcı olayım.
  • 12-10-2020, 12:31:40
    #9
    MaviBilisim adlı üyeden alıntı: mesajı görüntüle
    Merhaba,
    Sonucu görmeden net bir şey söyleyemiyorum. Dilerseniz PM ile iletişime geçin daha detaylı yardımcı olayım.

    Teşekkür ederim hocam halletim şimdilik.

    sadece;

    fetcAll kullanarak ve
    if (!empty($kontrol[0]['ID']))
    yazarak içeriğinin dolu olup olmadığını alabildim.