• 27-08-2009, 00:55:13
    #1
    S.a. arkadaşlar,
    Codum:
    try {
            $sql=mysql_query("SELECT GROUP_CONCAT(i.icerik_adi) as icerik_adi,kategori_adi FROM kategoriler AS k, icerik AS i WHERE k.kategori_id=i.kategori_id GROUP BY k.kategori_adi")or die(mysql_error());
            while($satir =mysql_fetch_object($sql)){
                printf('Kategori_adi["%s"] = "Makele_adi[%s"]<br>',htmlspecialchars($satir->kategori_adi),htmlspecialchars($satir->icerik_adi));
            }
         }catch (Exception $a) {
            echo 'yanlışlık var: ' . htmlspecialchars($a->getMessage());
        }
    Çıktı
    Alıntı
    Kategori_adi["saglik"] = "Makele_adi[müdür,aşlkdsşaskdşak,deneme,hoppapa"]
    Kategori_adi["Medikal"] = "Makele_adi[nasılsın,php,webmaster"]
    Kategori_adi["Tıbbi Cihazlar"] = "Makele_adi[yuyayay"]
    GROUP_CONCAT Kullanmadan yukarıdaki codun bir alternatifini veya daha kolay bir yolunu bilen varmıdır. Siz bu şekilde kategorileri ve ona ait olan makaleleri tek seferde çekmek zorunda olsaydınız nasıl bir kod kullanırdınız.
    İlginize şimdiden teşekkür ederim.
    Saygılar...
  • 27-08-2009, 01:39:28
    #2
    Hata vermesinin bir sebebi, SELECT teki kategori_adi nin hangi tabloya ait olduğunu belirtmemiş olman olabilir.

    $sql=mysql_query("SELECT i.icerik_adi,k.kategori_adi FROM kategoriler k, icerik i WHERE k.kategori_id=i.kategori_id");
    while($satir=mysql_fetch_assoc($sql)) {
    $tampon[$satir['kategori_adi']][]=$satir['icerik_adi'];
    }
    foreach($tampon as $kategori=>$icerikler) {
     printf('Kategori_adi["%s"] = "Makele_adi[%s"]<br>',htmlspecialchars($kategori),htmlspecialchars(implode(',',$icerikler));
    }
    Aynı çıktıyı almak için biraz dolambaçlı bi yol da olsa sanırım çalışacaktır
  • 27-08-2009, 01:50:27
    #3
    Evet concat kullanmadan oluyor. Tşkler seyranlı. Fakat sorgu içinde sorguda load zamanını yükseltebilir diye korkuyorum.Ama kod ufkumu açtı diyebilirim.İlgin için tşkler.