İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

aranan kelimenin türkçesini aratmak

maxcilopez

0
İyinet Üyesi
Katılım
27 Ekim 2006
Mesajlar
545
Reaction score
0
Mrb arkadaşlar;
Şimdi sitemde arananları db ye yazdırıyorum.
Db sistemimi
Tablo adı=aranan
alanlar = id , date, aranan, duzenlenen

Sistemin Çalışma Şekli
Sitemin ana sayfasında yer alan arama formuna Kullanıcı ne girerse girilen kelimeyi
db ye kaydediyor Yanlız burada aranan kelimeyi "aranan" alanına ve gene aynı kelimenin türkçe karakterleri ingilizceye çevrilmiş şekilde "duzenlenen" alanına kaydediyor

Ben php dosyası ile db ye kaydettiğim verileri

PHP:
<?php

 $connection = mysql_connect("xxxxxxxxx",
                            "xxxxxxxxxx",
                            "xxxxxxxxx");
mysql_select_db("xxxxxxxxx", $connection);

mysql_query("SET NAMES 'latin5'");
//Makaleler veritabanını seçtik ve Son 10 içeriği (makale_id)'sine göre çektik.
$tablo = "SELECT * FROM aranan ORDER BY id DESC LIMIT 0, 10000";
$sorgu = mysql_query  ( $tablo ) ;

function utfyiwindowsa($metin) {
$metin = str_replace("Ü","U",$metin);
$metin = str_replace("Åz","S",$metin);
$metin = str_replace("Äz","G",$metin);
$metin = str_replace("Ç","Ç",$metin);
$metin = str_replace("Ä°","I",$metin);
$metin = str_replace("Ö","Ö",$metin);
$metin = str_replace("ü","u",$metin);
$metin = str_replace("ÅŸ","s",$metin);
$metin = str_replace("ç","c",$metin);
$metin = str_replace("ı","i",$metin);
$metin = str_replace("ö","o",$metin);
$metin = str_replace("ÄŸ","g",$metin);

return $metin;
}

?>
<html>
<head>
<title>şarkısözü.net - şarkı sözleri portalı</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9">
</head>
<body> 
<?php
while  ( $oku = mysql_fetch_array ( $sorgu ) ) {
// Gelen verileri döküp link verdik (Bu link yapısı örnektir ve .httacces kullanmıştım bu öyle siz kendiniz değiştirin.
$metin='<a name="'.$oku['aranan'].'" title="'.$oku['aranan'].'" href="oyna/'.$oku['duzenlenen'].'.html">'.$oku['aranan'].'</a>, ';
 $metin = utfyiwindowsa($metin);
  echo $metin;
} 
?>
</body>
</html>

Bu kod ile çekiyorum ve Bu şeklilde bana "Örneğin aranan kelime =çarıklı mustafa"
http://www.sitem.com/oyan/carikli-mustafa.html
url ler veriyor. Ve bu linke tıklandığında carikli mustafa kelimesinin aranmış şekilde sorgusu çıkıyor.
Yanlız sorun arana kelime türkçe olmasına rağmen linkle tıkladığında ingiliceye dönüşmüş şekli aranıyor ve doğal olarak sonuç bulunamıyor. Bunun nasıl türkçe karakterinin aranmasını sağlarız tşk.

Arama.php dosyası

PHP:
<?php
//benim ekledigim
function duzenle($veri) {
$bozuk    = array('ı','ç','ş','ğ','ü','ö','İ','Ç','Ş','Ğ','Ü','Ö',' ');
$duzgun    = array('i','c','s','g','u','o','i','c','s','g','u','o','-');
$veri    = @str_replace($bozuk,$duzgun,$veri);
return $veri;  
}
//benim ekledigim son
/// trim ile kelime degiþkenine gelen verinin sagýndaki ve solundaki boþlukarý siliyoruz
$kelime = trim($_REQUEST['kelime']);
//benim ekledigim 2
$deneme= $kelime;
$osman = date ("Y-m-d H:i:s", (time()+ $config['date_adjust']*60));
$ccc = @duzenle($kelime);
$connection = mysql_query("INSERT INTO aranan (date, aranan, duzenlenen) values ('$osman', '$deneme', '$ccc')");
//benim ekledigim 2 son
/// þimdi mysql de sorgumuzu yapýyoruz burda like ýn baþýndaki ve sonundaki % iþaretleri aradýgýmýz kelimenin baþýnda ve sonunda arýyacak þeklide tasarlýyoruz  
$sql = mysql_query("select * from oyunlistesi WHERE baslik like '%".$kelime."%' "); 



/// mysql_num_rows ile kaç satýr buldugumuz kontrol ediyoruz 
$bulunan = mysql_num_rows($sql);


/// eger 1 veya üstü satýr bulmuþ ise aþagýdaki if yapýmýzla sorgumuzu derliyoruz 
if($bulunan >='1'){

/// while ile dongumuzu yaratýp  gelen kayýt kadar dongu yapýyoruz  mysql_fetch_array lada gelen veriyi kullanýlabilr bir veri cinsine sokuyoruz 

/// alan lardaki degiþkenlerimizi tanýmlýyalým  daha basit olmasý için ben bu þeklide kullanýyorum ama sen bu degiþkenleri
///  $row["yazan_ismi"]; gibide kullanabilirsin 


/// echo komutuylada sayfada çýktý alýyoruz 
?>

<div align="center">
  <center>
  <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="97%" class="ktablokenari">
    <tr>
      <td width="100%" height="25" class="kbaslik"><center>Oyun Arama Sonuç Listesi</center></td>
    </tr>
  </table>
  </center>
</div>
<div align="center">
  <center>
  <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="97%">
    <tr>
      <td width="100%" class="ktablokenari"><p align="center"><?php 
$r = 0; 
echo "<table><tr>"; 
while ($row=mysql_fetch_array($sql)) {

     $r++; 
     ?>
     <td width="15%" class="oyunarka"><center><a href="oyunlar-15-<? echo "".$row[listeid].""; ?>.html"><? echo "".$row[baslik].""; ?><br><img border="0" src="resimler/oyunresmi/<? echo "".$row[resmi].""; ?>" width="75" height="75"></a><br><b><? echo "".$row[oynandi].""; ?></b><br>oynama</center>
      <?
     if ($r % 6 == 0 ) 
     { 
            echo "</tr><tr>"; 
            $r=0; 
     } 

}
echo "</tr></table>"; 
?>
    </tr>
  </table>
  </center>
</div>
<?


}
//// yukarda kulanýdýgmýz if yapýsýnda eger sorguladýgýmýz satýr 0 degeri içeriyorsa
///   kayýt olmadýgýný anlayýp  kayýt bulunamadý diyoruz 
else {
echo"<br>Sistemimiz de aradığınız kelimeleri içeren kayıt bulunamadı. Lütfen doğru kelimeleri girdiğinizden ve sistemimiz de girdiğiniz kelimelere uyan bir oyun olduğundan emin olunuz.";
}
echo"<center>Bulunan toplam oyun sayısı: <b>$bulunan</b></center>";

?>
 

ploop

0
İyinet Üyesi
Katılım
11 Ekim 2004
Mesajlar
6,964
Reaction score
0
Konum
karavan
Ben utf-8 kullanıyorum ve türkçe karakter olarak kaydediyorum veritabanına. Sen de öyle yaparsan sorun kalmaz.
 

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
ploop un dediği gibi, UTF-8 sorununuzu çözer.
Ek olarak arama ayapılan forma da UTF-8 ekleyebilirsiniz:
<form action="adres" method="post" accept-charset="UTF-8">
 

desoLate

0
İyinet Üyesi
Katılım
14 Haziran 2006
Mesajlar
220
Reaction score
0
Eğer utf-8 ile uğraşmak istemeyip var olan sisteminle devam etmek istersen,

PHP:
$sql = mysql_query("select * from oyunlistesi WHERE baslik like '%".$kelime."%' "); 

//değiştir

$sql = mysql_query("select * from oyunlistesi WHERE baslik like '%".htmlspecialchars($_REQUEST['kelime'])."%' ");

yapman sorununu çözecektir sanırım.
 

maxcilopez

0
İyinet Üyesi
Katılım
27 Ekim 2006
Mesajlar
545
Reaction score
0
Arkadaşlar hiç biniz dediğimi anlamamışsınız
Şöyle açıklayım
Db sistemimi
Tablo adı=aranan
alanlar = id , date, aranan, duzenlenen

Şimdi örnekliyorum. Örneğini aramada "şeker adam" kelimesi arandı
şimdi db ye bazılan
aranan=şeker adam
duzenlenen=seker-adam

Şİmdi linkleyeceğim yani adresleyeceğim
http://oyunevi.info/oyna/şeker adam.html ==>aranan=şeker adam ama linkte türkçe karakter var ama genede şeker adm kelimesini arıyor.

http://oyunevi.info/oyna/seker-adam.html ==> duzenlenen=seker-adam gördüğünüg gibi bunda türkçe karakter yok ama bu linkle tıkladığımdada seker-adam diye bişi arıyor.

Burada yapmak istediğim bir kelime aranırken
linki http://oyunevi.info/oyna/seker-adam.html böyle olacak
ama
duzenlenen=seker-adam ======== aranan=şeker adam bu olacak ve şeker adam kelimesi aranacak.
Tşk.
 

*siber*

0
İyinet Üyesi
Katılım
20 Temmuz 2005
Mesajlar
2,014
Reaction score
1
Konum
about:blank
Yaptığınız şeyin öncelikle mantıksız olduğunu söylemek istiyorum. "şeker adam" ı aratıp seker-adam.html diye yönlendirme yapmanız için ilk önce "şeker adam" ı depolatmanız gerekiyor. Bunu göze alıyorsanız ayrı bir tablo yapmanız gerek.

Yeni tablo açmamak için ilk aranan kelimedeki türkçe karakterleri egale etmeniz gerek. Yani ilk aranan alanda "şeker adam" ı aratıp mysql de aranan bölgesine kayıt'ı "seker adam" diye yaptırmanız gerek.

Lakin benim size tavsiye ne aratılmışsa onu bastırmanızdır. yani "şeker adam" diye aratılan kelimeti direkt şeker-adam.html yapabilirsiniz. Türkçe karakterleri Google için egale ediyorsanız bence bunun google için bir sakıncası yok. Test edilip denenmiştir.
 

maxcilopez

0
İyinet Üyesi
Katılım
27 Ekim 2006
Mesajlar
545
Reaction score
0
örnek bir link vereyim size
http://www.birseyindir.org/indir/cilgin-dersane.html
tıklandığında
çılgın dersane aranıyor

Benim yapmak istediğim bu
zaten yukarıdaki mantıkta bu birseyindir.org un mantığı aynı
aranan kelime db ye direk 2 şekilde yazılıyor zaten
biri aranan=çılgın dersane
diğeri duzenlenen=cilgin-dersane
 

maxcilopez

0
İyinet Üyesi
Katılım
27 Ekim 2006
Mesajlar
545
Reaction score
0
ya bak bir daha anlatayım
aranan kelimeye googlenin tanıyacağı şekilde
.html uzantılı bir adres elde etmek istiyorum
yani bunu gibi
msl
şeker adam diye bir şey aransa bunun en mantıklı html adresi böyle olur
http://www.site.com/oyna/seker-adam.html yani türkçe karakterleri olmaz biliyorsun adreste

ama işte bu linke tıklandığında
şeker adam aransın :D
 

*siber*

0
İyinet Üyesi
Katılım
20 Temmuz 2005
Mesajlar
2,014
Reaction score
1
Konum
about:blank
Tamam dediğim gibi. Sen normal aramanı yaptıracaksın PHP ile.

url nasılsa değişmeden. ara.php?aranan?seker adam

sonra hosta tanımlayacağın bir .htaccess ile otomotik .html sayfa yapabilirsin.

htaccess ile otomotik html sayfa yapmak için forumda arama yapabilirsin. Bir sürü örnek var
 

ploop

0
İyinet Üyesi
Katılım
11 Ekim 2004
Mesajlar
6,964
Reaction score
0
Konum
karavan
senin dediğin olayı db'ye id kolonu ekleyerek de yaparsın. örnek çözüm:

veritabanı yapısı:

PHP:
CREATE TABLE `arama` (
  `id` int(11) NOT lisanssız auto_increment,
  `kelime` varchar(30) NOT lisanssız default '',
  `aranma` int(11) NOT lisanssız default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

INSERT INTO `arama` VALUES (1, 'oyun', 3);

id kullanarak yaparsan eğer, oğlan kelimesini id1-oglan.html seklinde gösterirsin ama oğlan olarak aratırsın. PHP kodlarını bu mantığa göre yazabilirsin. htaccess dosyanda ise su satırı eklemen yeterli:

Kod:
Options +FollowSymLinks
RewriteEngine on
RewriteRule aranan-(.*)\.html$ /bul.php?kelime=$1
 

*siber*

0
İyinet Üyesi
Katılım
20 Temmuz 2005
Mesajlar
2,014
Reaction score
1
Konum
about:blank
ploop un verdiği örnekte .html linkini "aranan-seker-adam.html" olarak vermelisin.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst