• 12-02-2010, 23:36:34
    #1
    Üyeliği durduruldu
    Merhaba,
    kendim için bir dizi scripti kodluyorum, şu an arama kısmını yapıyorum.Arama kısmında dizileri isme göre aratıyorum şu sorgu ile

    $sr = mysql_query("SELECT * FROM dizibilgi WHERE baslik LIKE '$aranan%' ORDER BY id DESC ");
    burda bir sorun yok belirttiğim gibi bana sonucu getiriyor fakat ben arama alanına yazılan kelimenin etiketlerde de aranmasını istiyorum.Tablomdaki etiketler şu şekilde kayıtlı

    [etiket][etiket][etiket][etiket][etiket][etiket][etiket][etiket]
    dizi izleme sayfasında bunları preg_match_all() ile filtreleyip [] arasındaki verileri alıyorum ve listeliyorum fakat bu şekildeki etiketler arasında aramayı ne şekilde yapabilceğimi bir türlü anlayamadım.

    Yardımlarınızı bekliyorum
  • 12-02-2010, 23:54:40
    #2
    Üyeliği durduruldu
    Pyromus yardımcı oldu msnden Allah razı olsun.

    Şu şekilde istediğimi elde ettim.

     $sr = mysql_query("SELECT * FROM dizibilgi WHERE baslik LIKE '%$aranan%' or etiket LIKE '%$aranan%' ORDER BY id DESC ");
  • 12-02-2010, 23:55:33
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşım o şekilde yapıp pregmatch ile yapmak yerine

    etiket1|etiket2|etiket3

    şeklinde yapsan hem kaydetmen hem sayfada ayırman daha kolay olur. veritabanına eklerken
    $etiketler = implode('|',$_POST['etiket']);
    sayfada gösterirken

    $etiketler = explode('|',$sorgu['etiket']);
    gibi rahatça arraya atarsın. Veritabanında ararken de:

    'select * from etiketler where etiket like "%aranan%"';
    gibi arama yapabilirsin. Aynı sorguyu şu anda ki haliyle de yapabilirsin, ama bu şekilde regex kullanmaya göre daha hızlı olur.
  • 12-02-2010, 23:58:52
    #4
    Üyeliği durduruldu
    metadige adlı üyeden alıntı: mesajı görüntüle
    Arkadaşım o şekilde yapıp pregmatch ile yapmak yerine

    etiket1|etiket2|etiket3

    şeklinde yapsan hem kaydetmen hem sayfada ayırman daha kolay olur. veritabanına eklerken
    $etiketler = implode('|',$_POST['etiket']);
    sayfada gösterirken

    $etiketler = explode('|',$sorgu['etiket']);
    gibi rahatça arraya atarsın. Veritabanında ararken de:

    'select * from etiketler where etiket like "%aranan%"';
    gibi arama yapabilirsin. Aynı sorguyu şu anda ki haliyle de yapabilirsin, ama bu şekilde regex kullanmaya göre daha hızlı olur.
    Çok ileri bilgim yok o yüzden kendi mantığım yettiği yere kadar yazıyorum en az yardım alarak o yüzden böyle düşünüp yapmıştım.Arada msnden de soruyorum sağolsun yardımcı oluyorlar.Şimdi sorun çok büyük sandım o yüzden burdan sorma gereği duydum.Cevap gelmicek diye tahmin edince msnden de yardım almak istedim, ufak bi kod ile çözüme ulaşmış oldum. Etiketleride dediğin gibi kaydedip çekicem doğru yoldan şaşmıyalım

    Yardımın için de teşekkür ederim.