Mysql In Kullanımı
-
Merhaba hocalar,
blog table ımın içinde her bir makalade çoklu kategori işlemi var.
Yani bir makale yönetim panelinde eklenirken birden fazla kategori seçilebiliyor. ben bu kategorilerin id lerini 1,3,5,7 diye blog table ında kategoriID kolonumda tutuyorum. Yani kategoriID Kolonum daki veriler genelde 1,3,5,7 Şeklinde kategorileri idleri var.
Ben örnek bir kategoriye tıklayıp id yi aldıktan sonra aşağıdaki yöntem ile kategori id yi bulup listeleyebilirmiyim ?
$blogkategori = 3;
$query = mysql_query("SELECT * FROM blog WHERE kategoriID IN ('$blogkategori')");
bu şekilde yazdığımda sonuç 0 dönüyor.
Halbuki kategoriID kolonunda 1,3,5 değerleri var.
Bunun başka bir yöntemi varmı yada bunu nasıl çözerim
-
burda veritabanı yapılandırmasında hata yapmışsın şu şekilde hazırlamalısın
Blog Tablosu
Kategori Tablosu
Relation Tablosu
relation tablonda şu şekilde olucak BlogID, KategoriID şeklinde misal 1 IDli blogunun 3 kategorisi var bunlarda 3, 4 ve 2 şu şekilde kayıt ediceksin
BlogID | KategoriID
1 | 3
1 | 4
1 | 2
Ccaglayan tarafından 15/May/15 11:50 tarihinde düzenlenmiştir
umarım anlatabilmişimdir yoksa virgül ile ayırıp yazman çok sakat bir iş aramalarda sorun yaşarsın. -
// edit: olayı yanlış anlamışım, mesaja lüzum yok. Üstteki arkadaşın dediği gibi yapılandırmayı yeniden yapmakta fayda var.
Austen tarafından 15/May/15 11:54 tarihinde düzenlenmiştir -
Ccaglayan bunu yazdı
burda veritabanı yapılandırmasında hata yapmışsın şu şekilde hazırlamalısın
Blog Tablosu
Kategori Tablosu
Relation Tablosu
relation tablonda şu şekilde olucak BlogID, KategoriID şeklinde misal 1 IDli blogunun 3 kategorisi var bunlarda 3, 4 ve 2 şu şekilde kayıt ediceksin
BlogID | KategoriID
1 | 3
1 | 4
1 | 2
umarım anlatabilmişimdir yoksa virgül ile ayırıp yazman çok sakat bir iş aramalarda sorun yaşarsın.Hocam dediğin tamam. olmazsa onu yapcam. Ama ben bu şekilde yapamammı
BlogID | KategoriID
1 | 3,5,7
2 | 4,3,2
3 | 2,1
Ben şimdi burdan kategoriid si 3 olan değeri aldığımda 1 ve 2 id li makaleleri listeyememmi
kategoriid = 3
SELECT * FROM blog WHERE kategoriid IN (KategoriID); -
zor bir şekilde listelersin misal 3 diye LIKE ile aratırsın 33 üde getirir sana 30 uda o yüzden virgül kullanımı çok yanlış bir yapıdır multiple alanlarda relation yapısı kullanılmalıdır. Yoksa ilerde problemlerle karşılaşırsın.
-
istediğin şey düzgün bir kullanıl şekli değil. ama illa böyle istiyorum dersen 1,3,5 şeklinde değilde ,1,3,5, şeklinde kayıt ettirirsin daha sonra ,3, şeklinde aramanı yaparsın. böylelikle 33 olduğu zaman 3 ü arattığında hepsini göstermez sadece 3 ü gösterir