• 20-09-2010, 21:14:47
    #1
    veritabanında id alanında yazı id lerini dizi seklinde tutuyorum 1,2,3,4 diye

    eger yazı idsi bu id alanının icinde varsa bilgileri cekmek istiyorum

    mesela veritabanında
    etiket => deneme
    id => 2,6,76,85

    seklinde olsun 76 id li konuya girdigim zaman bu etiketi cekmek istiyorum
    veritabanından bunu php komutu olarak nasıl cekebilirim

    SELECT
    abc,id
    FROM deneme
    WHERE id LIKE '%$id%'

    seklinde kod isime yaramaz cunku 1 nolu id li konu 301 id li konunun etiketini de yazabilir
  • 20-09-2010, 21:21:59
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    deleter20 adlı üyeden alıntı: mesajı görüntüle
    veritabanında id alanında yazı id lerini dizi seklinde tutuyorum 1,2,3,4 diye

    eger yazı idsi bu id alanının icinde varsa bilgileri cekmek istiyorum

    mesela veritabanında
    etiket => deneme
    id => 2,6,76,85

    seklinde olsun 76 id li konuya girdigim zaman bu etiketi cekmek istiyorum
    veritabanından bunu php komutu olarak nasıl cekebilirim

    SELECT
    abc,id
    FROM deneme
    WHERE id LIKE '%$id%'

    seklinde kod isime yaramaz cunku 1 nolu id li konu 301 id li konunun etiketini de yazabilir

    sorununu tam anlatırsan yardımcı olabilirim
  • 20-09-2010, 21:22:17
    #3
    Üyeliği durduruldu
    şunun işini görmesi gerek.


    SELECT
    abc,id
    FROM deneme
    WHERE id LIKE '%,$id,%' OR id LIKE '$id,%' OR id LIKE '%,$id' OR id = '$id'
  • 20-09-2010, 21:28:07
    #4
    or seklinde yaptıgım zaman herhangi biri dogru dondugu zamanda cıkarabilir

    dedigim gibi mesela 1 nolu konuda 301,315,420 gibi verilerin bulundugu alandaki veriler de gelebilir

    @Twinsens
    hocam nasıl anlatayım bilemedim ki
    şimdi veritabanında şöyle bi tablom var
    id etiket konu_id
    1 deneme 1,2,3
    2 denden 1,6,7
    3 deneme2 6,8,10

    şimdi 1 nolu konuya girdigim zaman veritabanında konu_id yazan yerde 1 diye belirtilen kısımlardaki etiketleri alıp sıralamak istiyorum
  • 20-09-2010, 21:29:26
    #5
    Üyeliği durduruldu
    denedinmi ki?
  • 20-09-2010, 21:34:21
    #6
    tamam hocam oldu ancak mysql komutlarında bunun icin birsey yok mu mesela tam tersi islem icin
    where id in (1,2,3)
    gibi kullanabiliyoruz bunun icinde vardır diye dusunmustum
  • 20-09-2010, 21:42:30
    #7
    Üyeliği durduruldu
    deleter20 adlı üyeden alıntı: mesajı görüntüle
    tamam hocam oldu ancak mysql komutlarında bunun icin birsey yok mu mesela tam tersi islem icin
    where id in (1,2,3)
    gibi kullanabiliyoruz bunun icinde vardır diye dusunmustum
    o dediğin şekilde tam olarak o sütun da o değer varsa kullanılabilir.

    senin sistem için aslında en güzeli mantığı değiştirmen. etiketler ile mesajların birbirleriyle ilişkisini ayrı bir tabloda tutman daha mantıklı olur. misal wordpress te etiketlerin tutulduğu bir tablo var, postların tutulduğu bir tablo var. bir de bunların ilişkisinin tutulduğu ayrı bir tablo var. alanları post id - etiket id şeklinde.
  • 21-09-2010, 02:42:08
    #8
    deleter20 adlı üyeden alıntı: mesajı görüntüle
    veritabanında id alanında yazı id lerini dizi seklinde tutuyorum 1,2,3,4 diye

    eger yazı idsi bu id alanının icinde varsa bilgileri cekmek istiyorum

    mesela veritabanında
    etiket => deneme
    id => 2,6,76,85

    seklinde olsun 76 id li konuya girdigim zaman bu etiketi cekmek istiyorum
    veritabanından bunu php komutu olarak nasıl cekebilirim

    SELECT
    abc,id
    FROM deneme
    WHERE id LIKE '%$id%'

    seklinde kod isime yaramaz cunku 1 nolu id li konu 301 id li konunun etiketini de yazabilir
    2 tablon olduğu düşün

    1. tablo yazı tablosu
    id -baslık - içerik - etiket.
    4 deneme deneme 56,58,200,60 diyelim

    etiket tablosuda
    id etiket_ismi olsun
    56 php
    58 sql
    200 html

    gibi bilgilerimiz olsun

    $query = "select * from yazi where id ='4' ";
    $query = mysql_query($query);
    $y_row = mysql_fetch_assoc($query);
    $etiket_array = $y_row['etiket'];
    $etiket_id_array = explode(',',$etiket_array);
    
    foreach ($etiket_id_array as $etiket_id)
    {
    $query = mysql_query("select * from etiket where id = '$etiket_id'");//56 58
    $etiket_row = mysql_fetch_assoc($query);
    echo $etiket_row ['etiket_ism'];//php sql
    }
    // veya Vice-versa
    veri tabani yapina gore bu olay degisebilir. genel bir örnek anlattım MYSQL in LEFT JOIN ve IN fonksiyonlarını bir incele derim. kolay gelsin saygılar.