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 >
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
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.
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
Bu mesaja 1 cevap geldi. Cevapları Gizle