Php Sözlük Uygulaması
Php

Php Sözlük Uygulaması

Merhaba arkadaşlar. Bu dersimizde tr-ing | ing-tr sözlük yapacağız. Öncelikle mantığını anlatmak istiyorum. Forma girilen kelimeyi ve radio butonlar vasıtasıyla seçilen dili cevir.php sayfamıza gönderiyoruz. Burada öncelikle bağlantı kodlarımızı yazıyoruz ardından POST ile aldığımız değerler ile veritabanında sorgulama yapıyoruz ve girilen kelimenin ingilizce karşılığını yada türkçe karşılığını veritabanından çekerek görüntülüyoruz. Bu işlemlerin sayfa yenilenmeden yapılması için formumuzun bulunduğu sayfada iframe kullanarak cevir.php sayfasını görüntülüyoruz ve biz her çevir butonumuza bastığımızda sonucu iframe'de görüyoruz. Böylelikle sayfa yenilenmesiyle kaybedilen zamanı ve trafiği en aza indirgemiş oluyoruz. Şimdi formumuzun bulunduğu sayfanın yani index.php sayfasının kodlarını inceleyelim.

<form action="cevir.php" target="ceviri" method="post" name="sozluk">
<table border="0" style="box-shadow: 0px 0px 1px #666666;
-moz-box-shadow: 0px 0px 1px #666666;
-webkit-box-shadow: 0px 0px 1px #666666; margin-top:200px; margin-left:400px; " bgcolor="#f6f6f6" width="600"><tr><td align="center"><img src="sozluklogo.png" /></td></tr>
<tr><td align="center">
<table border="0" cellpadding="0" cellspacing="0" style="box-shadow: 0px 0px 1px #666666;
-moz-box-shadow: 0px 0px 1px #666666;
-webkit-box-shadow: 0px 0px 1px #666666;">
<tr><td>
<input type="text" name="kelime" style="border:solid; border-width:1px; border-color:#F8942D; color:#333333; font-size:16px; font-family:Tahoma, Geneva, sans-serif; width:400px; padding:10px;" placeholder="Kelimeyi Giriniz" />
</td><td>
<input type="submit" value="Çevir" style="border:none; background:#F8942D; color:#ffffff; font-weight:bold; font-size:16px; font-family:Tahoma, Geneva, sans-serif; width:100px; padding:10px;" />
</td></tr>
</table>
</td></tr>
<tr><td align="center"><font color="#333333" face="Tahoma, Geneva, sans-serif" size="2">
<table border="0" width="400"><tr><td>
<input type="radio" name="sozluk" value="Tr" checked="checked" />&nbsp;&nbsp;
Türkçe - İngilizce Çeviri</td>
<td>
<input type="radio" name="sozluk" value="İng" />&nbsp;&nbsp;
İngilizce - Türkçe Çeviri</td></tr></table>
</font></td></tr>
<tr height="60"><td align="center">
<iframe src="cevir.php" name="ceviri" width="520px" height="40px" frameborder="0"></iframe>
</td></tr>
</table>
</form>
Burada öncelikle formumuzu oluşturduk. Action değerine cevir.php target değerine de iframe'in name değerini yazdık. Böylelikle formumuzu iframe'e yönlendirmiş olduk. Ardından tablo yapımızı uygun bir şekilde oluşturduk. Text, submit, radio form elemanlarını uygun yerlere yerleştirdik. En altada sonuçlarımızın görüntüleneceği iframe'i yerleştirdik. Şimdi cevir.php sayfamıza geçelim.
$mysql_host="localhost";
$mysql_kullaniciadi="root";
$mysql_sifre="root";
$mysql_vtadi="sozluk";
$baglan= @mysql_connect($mysql_host,$mysql_kullaniciadi,$mysql_sifre);
mysql_query("SET NAMES UTF8");
if(! $baglan) die ("Mysql Baglantısında Hata Oluştu!");
mysql_select_db($mysql_vtadi,$baglan) or die ("Veritabanına Bağlanırken Hata Oluştu!");
$kelime = $_POST['kelime'];
$dil = $_POST['sozluk'];
$sayac = 0;
if ($dil == "Tr")
{
$sqlcevir = mysql_query("SELECT * FROM kelimeler where kelimetr = '$kelime'");
$varmi = mysql_num_rows($sqlcevir);
if ($varmi >= 1)
{
echo "".$dil." Çeviri : &nbsp;".$kelime."&nbsp;&nbsp;&raquo;&nbsp;&nbsp;";
while($ceviritr = mysql_fetch_array($sqlcevir))
{
$sayac++;
$kelimeing = $ceviritr['kelimeing'];
if ($sayac >= 2)
{
echo "&nbsp;-&nbsp;";
}
echo $kelimeing;
}
}
else
{
echo "Lütfen Veritabanına Kayıtlı Bir Kelime Giriniz!";
}
}
else
{
$sqlcevir = mysql_query("SELECT * FROM kelimeler where kelimeing = '$kelime'");
$varmi = mysql_num_rows($sqlcevir);
if ($varmi >= 1)
{
echo "".$dil." Çeviri : &nbsp;".$kelime."&nbsp;&nbsp;&raquo;&nbsp;&nbsp;";
while($ceviriing= mysql_fetch_array($sqlcevir))
{
$sayac++;
$kelimetr = $ceviriing['kelimetr'];
if ($sayac >= 2)
{
echo "&nbsp;-&nbsp;";
}
echo $kelimetr;

}
}else
{
echo "Lütfen Veritabanına Kayıtlı Bir Kelime Giriniz!";
}
}
Burada öncelikle veritabanı bağlantı kodlarımızı yazdık. Ardından form ile gönderilen değerleri (girilen kelimeyi ve seçilen radio butonun değerini) POST metodu ile alıyoruz. Sayaç adında bir değişken oluşturup içine 0 değerini atıyoruz. Bunu yapmamızdaki amaç oluşturacağımız while döngülerinin kaç kez döndüklerini öğrenmek ve buna göre işlem yapmak. İlk if sorgumuzu oluşturuyoruz. Bu şartı oluşturmamızdaki amaç kullanıcının hangi dilde veri girdiğini öğrenmektir. Eğer tr ise farklı sorgulama ing ise farklı sorgulama yapacağız. Eğer kullanıcı türkçe bir kelime girdiyse bu kod bloğu aktif olacaktır.
İlk şartımızı oluşturduk ve şimdi geçelim veritabanı sorgulamamıza. Sql kodumuzu yazdık. Where ile kullanıcının girdiği kelimeyi kelimetr sütununda arattık. mysql_num_rows fonksiyonu ile kaç sonuç bulduğumuzu varmi değişkenine aktardık. Şimdi geçelim ikinci if sorgumuza. Bu şartla varmi değişkeninin içinde bir değer olup olmadığını öğrendik. Varsa while döngümüz hayata geçecek, yoksa lütfen veritabanına kayıtlı kelime giriniz tarzında bir uyarı alıncaktır. While döngümüz değer olduğu sürece dönecektir. Bir kelimenin birden fazla ingilizce veya türkçe karşılığı olabilir (giriş resminde göründüğü üzere). Hepsini listeletmek için döngümüzü bu şekilde kullandık. Döngümüzün içinde sonucu değişkene aktardık ve ekrana yazdırdık. Sayaç değişkenine gelelim şimdi. Burada sayaç kullanmamızın amacı, döngümüzün kaçıncı kez döndüğünü öğrenmek, yani o ana kadar kaç kayıt çekildiğini öğrenmek. Öğrenip napacağız diyebilirsiniz haklı olarak. Yukarıdaki kod blogunda görüldüğü üzere if sorgumuzu oluşturduk sayaç değişkenimiz 2'den büyük veya eşitse tire (-) ve boşluk (&amp;nbsp;) karakterlerini ekrana yazdırdık.
İf sorgumuzu kullandığımız hali : insan » human - man
İf sorgumuzu kullanmadığımız hali : insan » humanman
Biraz önce bahsettiğim tire (-) ve boşluk (&amp;nbsp;) karakterinin ne işe yaradığı anlaşılmıştır sanırım. Şuana kadar anlattığım kodlar ile kelimemizi türkçe'den ingilizce'ye çevirdik. Şimdi geçelim ingilizce'den türkçe'ye çevirmeye. Aslında aralarındaki farkı söylemem daha doğru olur. Tek yapmamız gereken sql kodunda yazdığımız kelimetr yerine kelimeing yazmak ve;
$kelimeing = $ceviritr['kelimeing']; // bunun yerine
$kelimetr = $ceviriing['kelimetr'];
kodunu yazıp ekrana yazdırmak. Uygulamanın çalışır halini istek halinde paylaşabilirim. Sonraki makalede görüşmek üzere...


author

Aykut Erdoğan

sözlük, php, mysql, çeviri

  • Bu Yazılara da Gözat:

    45 Yorum

    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author
    author

    Cevapla