Kategorileri Göstermek
Merhaba arkadaşlar sizlere bir sorum olacak.
Tablolarım;
Kategoriler Tablom
id | kategoriadi olmak üzere iki sutundan oluşuyor.
Konular Tablom
id | konuadi | katid olmak üzere üç bölümden oluşuyor.
Konularımı kaydederken birden fazla kategoriyi seçtiriyorum ve veritabanıma kayıt ediyorum..
id | konuadi | katid
1 | deneme | 1,3,5,6
yukarıdaki gibi bir şekilde mysql tablomda duruyor. ben bir türlü
konuya girdiğimde kategorilerin isimlerini yazdıramıyorum.. sadece 1 id li kategorim gözüküyor.. diğerleri görünmüyor..
nasıl bir yol izlemeliyim baya araştırdım ama hep tek kategori üzerinden gösterim yapılmış... Codeignitır yapısını kullanıyorum.. yardımcı olabilirseniz sevinirim.
Modal kodlarım
public function kategoriler($id){
$result = $this
->db
->select('*')
->from('kategoriler')
->where('kategoriler.id',$id)
->join('konular','kategoriler.id=konular.katid')
->get()
->result();
return $result;
}
Controller kodlarım
$viewData->kategoricek = $this->konular_model->kategoriler($viewData->konular->katid);
ve view kodlarım
if (is_array($kategoricek[0]->katadi)) {
foreach ($kategoricek as $v){
echo $v->katadi;
}
}
@makifgokce tesekkür ederim..
@tayfunerbilen söylediğiniz şeyleri yaptım ve alttaki gibi düzenledim..
$result = $this
->db
->select('konular.*, GROUP_CONCAT(kategoriler.katadi) as kategoriadi,GROUP_CONCAT(kategoriler.kategori_id) as kategoriid')
->from('konular')
->join('kategoriler','konular.katid=kategoriler.kategori_id',"inner")
->where_in("FIND_IN_SET('.$id.','konular.katid')")
->group_by('konular.id')
->get()
->result();
if($result){
return $result;
}else{
return FALSE;
}
gibi yaptım çıkan sonuç ; 1-13-7-6 tek o konuya ait id leri vermedi diğer konuların kategori idleri verdi sadece ilk sıradakileri bi de.
hatam nerede acaba..
döngüyüde şu şekilde yapıyorum..
foreach ($kategoricek as $kategori) {
echo $kategori->kategoriid;
}
}