• 20-11-2009, 13:13:48
    #1
    merhaba,


       topicid int(3) NOT NULL auto_increment, 
       topicname varchar(20), 
       topictext varchar(40), 
    );
    bu şekilde bir tablom var, bu tabloda kategoriler tutuluyor

    haber eklerken alttaki kodlar ile kategorileri seçiyorum

    $toplist = $db->sql_query("select topicid, topictext from ".$prefix."_topics order by topictext"); 
        echo "<select name=\"topic\">"; 
        echo "<option value=\"\">"._SELECTTOPIC."</option>\n"; 
        while(list($topicid, $topics) = $db->sql_fetchrow($toplist)) { 
            $topicid = intval($topicid); 
            if ($topicid == $topic) { 
            $sel = "selected "; 
        } 
            echo "<option $sel value=\"$topicid\">$topics</option>\n"; 
        $sel = ""; 
        }
    <label><input name="checkbox" value="$topicid">$topics</label>

    kategori seçim alanını checkbox ile sıralayıp birden çok kategori seçimini sağlarsam

    bunu veritabanına nasıl yazdırım ?
    veritabanında birden çok id nasıl tutarım?
  • 20-11-2009, 13:16:23
    #2
    Üyeliği durduruldu
    veritabaninda tek bir alanda tutmak isterseniz bunlarin arasina bir ayıraç koyarak mesela virgül (implode)

    1,2,5,6

    gibi bunu geri okurken explode ile tekrar diziye dönüştürebilirsiniz. eş benzer işem olarak serialize,unserialize

    yada bir tablo daha yapip
    hangi topic ler hangi kategoride olduğunu anlamak için

    topicid
    catid

    gibi alan olan bir tablo yapip o şekilde eşleştirme yapabilirsiniz
  • 20-11-2009, 13:47:59
    #3
    tek bir tabloda tutmak daha basit gözüksede sanırım doğru olan ayrı bir tabloda haber ve kategorileri tutmak

    şimdilik ilk tercih üzerinde durucam
    takıldığım yer olursa burada yazarım

    teşekkür ederim usta
  • 22-11-2009, 17:43:12
    #4
    hocam bu checkbox ile listelediğim kategorilerin sayısı oldukça fazla, sayfada çirkin bir görüntü vermemesi için nasıl kaydırma çubuğu eklerim. Wordpress kategori seçimi gibi.

    style ile overflow-x: scroll; ekliyorum olmuyor. dünden berli okumadığım html makalesi kalmadı nerdeyse


        $toplist = $db->sql_query("select topicid, topictext from ".$prefix."_topics order by topictext");
        while(list($topicid, $topics) = $db->sql_fetchrow($toplist)) {
    	    $topicid = intval($topicid);
    		echo "<input type=\"checkbox\" name=\"topic\" value=\"$topicid\"/> $topics<br />";	
    	}
  • 22-11-2009, 20:40:12
    #5
    sdemirkeser hocam

    Birden fazla kategori seçip db ye yazdırdım fakat şöyle bir sorunda takıldım.
    Haberleri çekerken haberin topic numarasına göre şart koyuyorum. Şu şekilde.

    $result = $db->sql_query("SELECT sid, title FROM ". $prefix ."_stories WHERE topic='3' ORDER BY sid DESC LIMIT 1,5");
    while ($row = $db->sql_fetchrow($result)) {
    burada $topic'i çekip nasıl explode edicem ?

    haberleri çekmeden önce yine bir sorgu ile son 5 haberin sadece topic değerini çektim
    $konular = explode(" ",$topic); ile diziye attım

    çalışmadı ama çalışsada mantıksızlık var bu işte, haberlerden önceki sorguda son 5 haberin topic nosunu çekmek ile, topic numarası 3 olan son 5 haberi seçmek arasında bir tutarsızlık mevcut.
  • 22-11-2009, 21:31:07
    #6
    Üyeliği durduruldu
    tek bir alanda implode ile birleştirilmiş olarak kaydediyorsaniz zaten en fazla zorlanacaginiz husus bu şekilde. Bu kriterden arama yapmiyorsaniz pratiktir. Ama bu kriterden arama yapiyorsaniz ilişkisel tablo kullanmanız daha mantıklı
  • 23-11-2009, 08:40:52
    #7
    haklısın hocam teşekkür ederim
    bu konuda biraz araştırma yapalım bakalım
  • 23-11-2009, 17:02:53
    #8
    malesef net bir sonuca ulaşamadım

    ilişkisel tablo hakkında bir örnek verebilirmisin
  • 23-11-2009, 18:55:23
    #9
    İlişkisel tablo dediğimiz olay. tablolar arası id alışverişi. kategoriler tablosunda kat_id olsun
    makaleler tablosundada kat_id olsun iki tablodaki kat_id lerin değeri aynı olması lazım. Bölelikle tablo birleştirip kat_id = 5 olan makaleleri çekebilirsin. umarım anlatabilmişimdir.