• 19-12-2009, 02:10:32
    #1
    Merhaba,
    sitelerimde daima yaşadığım bir sorunu paylaşmak istiyorum. Sef adresleme şekli ile arama yapmak istediğimde türkçe karakter sorunu yaşıyorum. Kullandığım kodlar şu şekilde:

    $degisim=array("c" => "[çÇ]" , "i" => "[ıİ]" , "g" => "[ğĞ]" , "u" => "[üÜ]" , "s" => "[şŞ]" , "o" => "[öÖ]");
     
    if($_GET){
    $arama = mysql_real_escape_string($_GET['ara']);
    $ara = $arama;
    $arama1 = strtr($arama,$degisim);
    }
     
    $sorgu = mysql_query("select * from `oyunlar` where `baslik` like '%$arama%' and `dil` = '$dil' or `nasilo` like '%$arama%' and `dil` = '$dil' or `baslik` regexp '%$arama1%' and `dil` = '$dil' or `nasilo` regexp '%$arama1%' and `dil` = '$dil' order by eklenme desc limit $baslangic,$limit");
    mesela saka.html çağrısını .htaccess aracılığı ile arama.php?ara=saka şeklinde istiyorum. Fakat ben saka olarak gelen isteğimle saka, şaka, Şaka kelimelerininde aranmasını istiyorum. Yardım edebilecek arkadaşımız varsa sevinirim.
  • 19-12-2009, 02:42:25
    #2
    Kendi sorunumu farklı bir yöntem ile hallettim.
    mysql_query("select * from `oyunlar` where `[HIGHLIGHT]seo` like '%$arama1%' and `dil` = '$dil' or `seo` like '%$arama%' and `dil` = '$dil' or [/HIGHLIGHT]`baslik` like '%$arama%' and `dil` = '$dil' or `nasilo` like '%$arama%' and `dil` = '$dil' or `baslik` regexp '%$arama1%' and `dil` = '$dil' or `nasilo` regexp '%$arama1%' and `dil` = '$dil' order by eklenme desc limit 0,30");
    Vt tablomda seo ya çevrilmiş başlık olduğundan arama kriterlerine bunuda dahil ettim. Şuan için sorun yok. Fakat bu şekilde 'nasilo' kısmında arama yapamıyorum. Konunun devamında bu arama fonksiyonunu geliştirebilirsek sanırım herkes için yararlı olur.
  • 19-12-2009, 02:44:47
    #3
    Üyeliği durduruldu
    basitçe yöntem göstereyim aşağıdaki sql hem şaka hemde saka kelimeleri içeren kayıtları döndürür.
    select * from tablo where alan regexp '[sş]aka'
  • 19-12-2009, 11:26:21
    #4
    devturkeli adlı üyeden alıntı: mesajı görüntüle
    basitçe yöntem göstereyim aşağıdaki sql hem şaka hemde saka kelimeleri içeren kayıtları döndürür.
    select * from tablo where alan regexp '[sş]aka'
    bunuda nasıl yaparsın dersen diyelimki arama sorgun su sekilde;

    arama.php?ara=saka
    arama.php?ara=şaka
    arama.php?ara=Şaka

    get komutuyla ara sorgusunu aldığında bunu str_replace ile türkçe karakterlerden arındırırsın... mysql sorgulamasını düzenledigin bu kelime ile yaptırırsın..
  • 19-12-2009, 14:22:01
    #5
    ilk mesajımdaki array ve regexp kullanımımda bir hata varmı