Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

ASP de arama problemleri

Konu, 'ASP' kısmında Red tarafından paylaşıldı.

  1. Red

    Red Yeni Üye

    Kayıt:
    9 Şubat 2003
    Mesajlar:
    6
    Beğenilen Mesajlar:
    0
    Merhabalar arkadaşlar. ASP ile arama yapacağım. Ancak Türkçe karakterler ile bir problemim var. Yani "şekil" kelimesi ile "ŞEKİL" kelimasi aynı sonucu varmiyor. bende hem db deki kelimeleri hemde aranan kelimeleri büyük harf yaptım ama bu seferde "şekil" > "ŞEKIL" oluyor. yine aynı sonucu vermiyor.biraz kafam karıştı bu konuda tam olarak anlatamamışda olabilirim kusura bakmayın.


    Bir değer problem ise şu diyelim 20 ayrı konu var bu konularda arama yaptırırken select(form elemanı) ile kullanıcıya seçtiriyorum.ancak bir tane seçeniliyot.Bencheckbox ile birden fazla konu seçsinler istiyorum. Yani 4-5 konuyu seçip aynı anda aratsın.Bu nasıl yaılır?
    Yani SQl de nasıl kullanırım bu olayı. Bir kaç asp forumunda örneğini görmüştüm ama....
     
  2. acemi

    acemi Misafir

    ArananKelime = request.form("Aranan")
    ArananKelime = replace(ArananKelime,"i","İ")
    ArananKelime = replace(ArananKelime,"ı","I")
    ArananKelime = ucase(ArananKelime)
    ...
    ...
     
  3. Red

    Red Yeni Üye

    Kayıt:
    9 Şubat 2003
    Mesajlar:
    6
    Beğenilen Mesajlar:
    0
    Acemi ewet saol işte adamın aklına gelmeyince gelmiyor
    peki bunları database deki kelimelere nasıl uygulayacağım?

    Birde hazır yazmışken şu chceckbox olayınıda biraz açayım.
    Şimdi 3-4 kategorim olacak ve bunlara yeni kategoriler eklenecek.Mesela oyun,sinema,eğlence gibi..bir adet text tanımlı form elemanı bunun yanında da 4 tane checkbox olacak.
    Aşk kelimesini aratacağımızı düşünelim.
    aşk kelimesini hem oyunlarda hemde sinemada aratacağız ama eğlencedeki sonuçları göstermeyecek.

    Bir sonraki arama da sevgi olsun bunu hem sinemada hemde eğlencede arayacak.ama oyunlarda aramayacak.

    biraz karışık oldu ama idare edin artık.


    <konu dışı>
    Forumu inceledim. ortam çok sıcak sanırım bende her gün uğrayacağım artık aranıza :)
    </konu dışı>
     
  4. muharrem_tac

    muharrem_tac Bilgisayarcý

    Kayıt:
    17 Ekim 2002
    Mesajlar:
    3,948
    Beğenilen Mesajlar:
    0
    Meslek:
    Yazılım Geliştirici
    Şehir:
    İstanbul
    Bunu bir fonksiyon olarak tanımlarız:

    function turkceyap(ArananKelime)
    ArananKelime = request.form("Aranan")
    ArananKelime = replace(ArananKelime,"i","İ")
    ArananKelime = replace(ArananKelime,"ı","I")
    ArananKelime = ucase(ArananKelime)
    end function

    Arama cümlesi de şöyle olabilir:

    sql="SELECT * FROM tablo where" &_
    "( sutun_adi LIKE '%" & turkceyap(ArananKelime)& "%') AND konu='sinema' AND konu='eğlence'"

    Denemedim ama böyle birşeyin teoride çalışması gerek.Forumumuz hakkındaki düşünceleriniz için de teşekkürler.Aramıza hoşgeldiniz.
     
    Son düzenleme yönetici tarafından yapıldı: 10 Şubat 2003
  5. p4r4h4t

    p4r4h4t Aktif Üye

    Kayıt:
    21 Ekim 2002
    Mesajlar:
    397
    Beğenilen Mesajlar:
    0
    aramiza ho$ geldiniz herhalde ASP ile ilgileniyorsunz... ASP.NET-le ilgileniyor musunuz?
     
  6. acemi

    acemi Misafir

    'Konu listesini, asagidaki formatta olmak
    'uzere bir sekilde hazirlarsin
    KonuListesi = "sinema, eglence"

    sql = "SELECT * " & _
    "FROM Tablo " & _
    "WHERE ucase(sutun_adi) LIKE '%" & TurkceYap(ArananKelime) & "%' " & _
    "AND konu IN (" & KonuListesi & ");"
     
  7. Red

    Red Yeni Üye

    Kayıt:
    9 Şubat 2003
    Mesajlar:
    6
    Beğenilen Mesajlar:
    0
    sql = "SELECT * " & _
    "FROM Tablo " & _
    "WHERE ucase(sutun_adi) LIKE '%" & TurkceYap(ArananKelime) & "%' " & _
    "AND konu IN (" & KonuListesi & ");"

    checkboxlardan gelen değerleri array olarak alıp yukarıdaki sql i kullanarak sanırım problem çözülür. Ama şimdide veritabanındaki karakterlerin türkçe proglemi devam ediyor.
    Ucase(sutun_adi) derken yine "i" > "I" olacak.Yani veritabanındaki karakterler sorunlu...Bunu nasıl çözeriz.Yani tam bire bir aramayı nasıl yaparız.?


    p4r4h4t
    Ewet ASP ile ilgileniyorum. .net 'te sole bir baktım kasar gibi duruyor. birde asp de de fazla bir bilgim yok anlayacağınız.
     
  8. muharrem_tac

    muharrem_tac Bilgisayarcý

    Kayıt:
    17 Ekim 2002
    Mesajlar:
    3,948
    Beğenilen Mesajlar:
    0
    Meslek:
    Yazılım Geliştirici
    Şehir:
    İstanbul
    Bilgileri veritabanına yazarken Türkçe olarak yazmayı denesen.Şöyle bir fonksiyon işini görebilir:

    www.muharremtac.com/code.txt

    (Buradaki karakterler kodun buraya aktarılması esnasında harf olarak algılandığı için texte yazmak durumunda kaldım)

    Bu arada bu fonksiyonu bana gönderen www.bursa.gen.tr 'den sevgili arkadaşım Erdinç AKAN 'a selamlar.

    ASP.NET kesinlikle zor değil bilakis ASP'den çok daha kolay ve çok daha performanslı.Bu taknolojiye hiçbirimiz uzak kalamayacağız gibi geliyor bana..
     
    Son düzenleme yönetici tarafından yapıldı: 13 Şubat 2003
  9. Red

    Red Yeni Üye

    Kayıt:
    9 Şubat 2003
    Mesajlar:
    6
    Beğenilen Mesajlar:
    0
    muharrem abi saol ama galiba ben derdimi anlatamıyorum sizlere...ve sizleri boşu boşuna yoruyorum.Başlangışta iki adet problemimiz vardı. aranan kelime ve arama yapılan veritabanı...
    1.sini çözdük. şimdi ikincisinde bir proglem var.
    diyelimki "çikolata" kelimesini arayacaklar.

    Çikolata , ÇİKOLATA , ÇiKoLaTa , çikolata olarak da aratsa aynı sonuçların görünmesini istiyorum.
    verdiğiniz fonksiyonlarla çikolata > ÇİKOLATA oluyor. ancak bu veritabanında Çikolata ise bunu bulmuyor. Şimdi veritabanındakinide ucase ile büyük harf yapıyoruz o da şöle oluyor: ÇIKOLATA işte birisi ÇIKOLATA diğeri ÇİKOLATA olunca sonucu bulamıyor. Şimdi ben veritabanındakinide ÇİKOLATA yapmaya çalışıyorum.
    Veritabanında türkçe olarak girildiğinide belirteyim...
     
  10. acemi

    acemi Misafir

    MS Access kullaniyorsun degil mi?
     
  11. Red

    Red Yeni Üye

    Kayıt:
    9 Şubat 2003
    Mesajlar:
    6
    Beğenilen Mesajlar:
    0
    Ewet Access kullanıyorum.
     
  12. teddmcload

    teddmcload Daimi Üye

    Kayıt:
    24 Ocak 2003
    Mesajlar:
    1,650
    Beğenilen Mesajlar:
    0
    girilen veriyi ucase ile büyüt. aha donra veritabanındaki alanları ad ucase ile büyüt. bu durumda derdinin belli bir kısmı hallolacaktır.

    bu arada eğer vatandaş çikolata yerine çıkolata giriyorsa farklı sonuçların gelmesi muhtemeldir. bu senin elinde olan bir şey değil. bunun önüne geçmek için de Muharrem TAc'ın verdiği function turkceyap(ArananKelime)
    ArananKelime = request.form("Aranan")
    ArananKelime = replace(ArananKelime,"i","İ")
    ArananKelime = replace(ArananKelime,"ı","I")
    ArananKelime = ucase(ArananKelime)
    end function

    fonksioynunu kullanabilirsin.
     
  13. con_simit

    con_simit Daimi Üye

    Kayıt:
    17 Ekim 2002
    Mesajlar:
    561
    Beğenilen Mesajlar:
    0
    Şehir:
    İstanbul
    0. Selam

    1. Gerekli olan fonksiyon bir anagram fonksiyonu.
    1.1. Yani sözcüğün tüm (yanlışlar da dahil) yazılış biçimlerini döndürecek bir fonksiyon.


    2. Hazır var mı bilemiyorum. Ama yazılır, çok zor olmasa gerek: For...Next :)

    3. Kolay gelsin.
     
  14. Red

    Red Yeni Üye

    Kayıt:
    9 Şubat 2003
    Mesajlar:
    6
    Beğenilen Mesajlar:
    0
    Şimdi SQL içerisinde kendi hazırladığımız fonkiyonu kullanamıyoruz. Problem bundan kaynaklanıyor.
     
  15. con_simit

    con_simit Daimi Üye

    Kayıt:
    17 Ekim 2002
    Mesajlar:
    561
    Beğenilen Mesajlar:
    0
    Şehir:
    İstanbul
    0. Selam

    1. Veritabanındaki bilgi aramaya uygun olsun diye değiştirilmez bence.
    1.1. Sorgulamanın doğru yapılmasıdır aslolan.

    2. Öncelikle dediğim anagram fonksiyonunun yazılması gerekiyor:
    2.1. Yani sözcüğü alıp her harf için büyük/küçük değişimi yapıp, tüm olasılıkları bulması.

    2.2 Sonra SQL cümlene AND / OR ile tüm bu olasılıkların eklenmesi.

    3. Bak bunları yazana kadar fonksiyonu yazardım. Boşuna konuşuyorum :)

    4. Kolay gelsin.
     
  16. acemi

    acemi Misafir

    Aslinda kendi yazdigimiz fonksiyonlari MS Access sorgularinda kullanabiliyoruz ama veritabanina disaridan degil, yine Access icinden erisecegimiz zamanlar... Bunun disinda MS Access kullanirken sadece bazi hazir fonksiyonlari kullanabiliyoruz. Bu hazir fonksiyonlarin icinde Replace() yok. Ornegin UCase() var.

    Ornegin MySQL'de Replace() de kullanilabiliniyor.
     
  17. acemi

    acemi Misafir

    Tamamiyla katiliyorum.
     
  18. Scorpion

    Scorpion Daimi Üye

    Kayıt:
    17 Ekim 2002
    Mesajlar:
    962
    Beğenilen Mesajlar:
    0
    Dün bende bir baktım benim aklıma bişi gelmedi çözüm yok gibi
     
  19. Scorpion

    Scorpion Daimi Üye

    Kayıt:
    17 Ekim 2002
    Mesajlar:
    962
    Beğenilen Mesajlar:
    0
    Arkadaşlar ben bu konuya taktım. Red eğer bu problemi çözdüysen çözümü buraya yazarmısın? (Gerçi Red foruma uğramıyor gibi ama...) Yada çözümü bulan varmı arkadalar?
     
  20. walder

    walder Üye

    Kayıt:
    22 Ocak 2003
    Mesajlar:
    66
    Beğenilen Mesajlar:
    0
    Aşağıdaki fonksiyon girilen kelimenin türkçe diğer alternatiflerini verir. Bunları da OR ile aratabilirsin
    Kod:
    Function trnatif(kelimeler)
    kelimeler=kelimeler&","
    a=0
    Do WHILE NOT kelimeler = "" 
    ilk =mid(kelimeler,1,instr(kelimeler,",") - 1 )
    kelimeler = replace(kelimeler, ilk & ",", "")
    if instr(ilk,"i")>0 or instr(ilk,"İ")>0 or instr(ilk,"ı")>0 or instr(ilk,"I")>0 then
    ilk1=replace(ilk,"i","İ")
    ilk2=replace(ilk,"İ","i")
    ilk3=replace(ilk,"ı","I")
    ilk4=replace(ilk,"I","ı")
    yeni=yeni&","&ilk&","&ilk1&","&ilk2&","&ilk3&","&ilk4
    else
    yeni=yeni&","&ilk
    end if
    LOOP
    yeni=mid(yeni,2,len(yeni))
    yeni=yeni&","
    Do WHILE NOT yeni = "" 
    birinci =mid(yeni,1,instr(yeni,",") - 1 )
    yeni = replace(yeni, birinci & ",", "")
    yenidizi=yenidizi&","&birinci
    loop
    yenidizi=mid(yenidizi,2,len(yenidizi))
    trnatif=yenidizi
    END FUNCTION