Şimdi Ara

Mysql like ile and kullanım sorunu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
9
Cevap
0
Favori
772
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • merhaba arkadaşlar php'de bir sorunla karşılaştım ve ne yaptıysam hatayı bulamadım

    MYSQL tablolarım
    Yazilar
    Kategori

    kategori idleri "1,2,3"
    Yazilarda kategorilerin tutulma şekli "k1,k2,k3"

    Mysql kodlarım
     $sql=mysql_query("select * from Yazilar where yayinlandi=0 and projemi=0 and kategori like '%k1%' or 
    kategori like '%k89%' or kategori like '%k90%' and zaman<=now() order by zaman
    desc LIMIT ". $limit . ", " . $sayfada);


    Şimdi bu kodu çalıştırdığımda paylaşımlar doğru kategoride geliyor fakat yayinlandi=0 olsada yayinlandi=1 olsada gösteriyor ben yayinlandi=0 olanları yalnızca göstermek istiyorum lütfen yardımcı olabilirmisiniz. teşekkürler.



    < Bu mesaj bu kişi tarafından değiştirildi ahmet1340 -- 12 Ekim 2018; 14:58:2 >



  • Merhaba,

    Sorunuz ne tam olarak anlasilmiyor, anlayabildigim kadariyla cevap vermeye calisayim.

    oncelikle verdiginiz condition bu

    yayinlandi=0 and projemi=0 and kategori like '%k1%' or kategori like '%k89%' or kategori like '%k90%' and zaman<=now()

    bu kosullardan herhangi birisi false donerse "and" operatoru yuzunden hepsi false donecek. Sanirim yapmak istediginiz sey boyle olmali

    yayinlandi=0 and projemi=0 and ( kategori like '%k1%' or kategori like '%k89%' or kategori like '%k90%') and zaman<=now()

    kategori id'leri 1,2,3 ise neden like kullandiniz? id'ler numerik ise like kullanamazsiniz.

    yayinlandi=0 and projemi=0 and zaman<=now() and kategori in (1,2,3)

    seklinde birden fazla or yerine in operatoru kullanmak daha mantikli
  • bestanealtcizgi B kullanıcısına yanıt
    Yazılarda çoklu kategori seçimi yaptırdığım için mecburen like kullanmak zorunda kalıyorum

    yzıların tutulduğu sql tablosu
    Mysql like ile and kullanım sorunu


    kategorileri bu şekilde tuttuğum için in kullanamıyorum

    parantez olayını denedim ama yine çalışmadı hocam

    zaman<=now() komutu sorunsuz çalışıyor ama ne hikmetse yayinlandi=1 olduğunda yinede veriyi gösteriyor




  • quote:

    Orijinalden alıntı: ahmet1340

    Yazılarda çoklu kategori seçimi yaptırdığım için mecburen like kullanmak zorunda kalıyorum

    yzıların tutulduğu sql tablosu



    kategorileri bu şekilde tuttuğum için in kullanamıyorum

    parantez olayını denedim ama yine çalışmadı hocam

    zaman<=now() komutu sorunsuz çalışıyor ama ne hikmetse yayinlandi=1 olduğunda yinede veriyi gösteriyor
    Merhaba,

    Birden fazla kategorisi varsa bunun icin 1-n tablo yapmaniz gerekli.

    like %k1% diye kosul veriyorsunuz, bu k1 ve k11 icin de gecerli, aradaki farkli nasil ayirdedeceksiniz?




  • bestanealtcizgi B kullanıcısına yanıt
    Haklısınız hocam k yı ekleyerek bu sorunun önüne geçtiğimi sanıyordum fakat geçmemişim 1-n tablo derken neyi kastettiniz hocam nasıl yapabilirim örnek verebilirmisiniz
  • quote:

    Orijinalden alıntı: ahmet1340

    Haklısınız hocam k yı ekleyerek bu sorunun önüne geçtiğimi sanıyordum fakat geçmemişim 1-n tablo derken neyi kastettiniz hocam nasıl yapabilirim örnek verebilirmisiniz
    Tekrar merhaba,

    Bahsettigim sey veritabani tasariminin temeli. Normalizasyon diye google'dan aratip baslayabilirsiniz.
  • bestanealtcizgi B kullanıcısına yanıt
    Tmmdır hocam Çok teşekkürler vakit ayırdığınız
  • quote:

    Orijinalden alıntı: ahmet1340

    Tmmdır hocam Çok teşekkürler vakit ayırdığınız
    Rica ederim, kolay gelsin.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.