Tekil Mesaj gösterimi
Alt 16 Ekim 2008, 12:33   #2
Çevrimdışı
EGEMAN
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
PHP ve AJAX - Gmail'in Belkemiği: AJAX




PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
CREATE TABLE `telefon_defteri` (
`
idint(10unsigned NOT NULL auto_increment,
`
adivarchar(30collate utf8_turkish_ci NOT NULL,
`
soyadivarchar(30collate utf8_turkish_ci NOT NULL,
`
telvarchar(20collate utf8_turkish_ci NOT NULL,
`
tarihdatetime NOT NULL,
PRIMARY KEY (`id`)
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci 

NOT : Veritabanı dosyasında Transaction database kavramını kullanabilmemiz için InnoDB tablo yapısı kullandığımıza dikkat edin.

Veritabanı yapısını oluşturduktan sonra sırayla veri ekleme ve veri listeleme yapan PHP kodlarını oluşturduktan sonra asıl kıstas olan JavaScript ile veriyi gönderip çıktıları listeleme olayını açıklayacağım.
ekle.php
PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
<?php
try
{
$db = new mysqli('localhost','root','','deneme2');
if ( 
mysqli_connect_error())
throw new 
Exception("MySQL'e bağlanamadım.");
}
catch (
Exception $e) {
die(
"{$e->getMessage()}");
}

try
{
$sql "INSERT INTO telefon_defteri (adi,soyadi,tel,tarih)
VALUES (?, ?, ?, NOW())"
;
$db->query("SET NAMES 'LATIN5'");
$smtp $db->prepare($sql);
$smtp->bind_param("sss",$adi,$soyadi,$tel);
$adi$_GET['adi'];
$soyadi$_GET['soyadi'];
$tel$_GET['tel'];
$db->autocommit(false);
if ( ! 
$smtp->execute() )
throw new 
Exception("Veri girişi yapamadım ... !");
print 
"true";
$db->commit();
$smtp->close();
}
catch (
Exception $e)
{
die(
"{$e->getMessage()}");
}
?>

Yukarıdaki komut yapısı bilindik MySQLi kütüphanesini kullanarak veri giriş örneğinden ibaret. Komut yapısına dikkat ettiyseniz MySQLi bölümünde değinmediğimiz bir özellikle veri girişi yaptım. "Nedir o Özellik?" diye sorarsanız Transaction Database ile veri girişi yapıyoruz. Bu işlemi klasik mysql kütüphanesiyle yapmak isteseydik önce mysql_query("start transaction") komutuyla MySQL'e sorgu gönderip, işlemlerimizi gerçekleştirdikten sonra mysql_query("commit") komutuyla veri girişi veya güncelleme işlemlerini DB ye girecektik ama MySQLi kütüphanesinde bu işlemi $db->autocommit(false); ve $db->commit(); komutları gerçekleştirmekte.
Veri giriş olayını gerçekleştiren script'i hazırladıktan sonra sıra geldi saf dataların çıktısını JavaScript'in anlayacağı şekilde Array olarak yayınlamaya. İşte bu ortamda JSON denilen yöntemi kullanacağım.
Veritabanından dataları almanın birkaç yöntemi bulunmakta.Aslında en etkin çözüm XML,XSLT çözümü ama onda browser farklılıkları olduğu için genelde JSON yöntemi kullanılmakta. Bu hususta gmail'in de aynı çözümü kullandığını belirterek, bu yöntem ile saf dataları nasıl Array yapacağımızı gösterelim.
PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
{"s":
[
{
"data":
{
"id":"0",
"adi":"Ferhat",
"soyadi":"Bozkurt",
"tel":"0535 3397798",
"tarih":"2008-10-16 12:00:22"
}
}
]


Yukarıdaki örneği incelediğimizde JavaScript'de Array düzeneği oluşturduğunu göreceksiniz. Basit bir örnekle yukarıda ki kod yapısının nasıl çalıştığına dair fikrimiz oluşsun ki ileriki safhalarda datanın nasıl çıktı verileceği ve nasıl kullanılacağını anlayalım.
PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
function oku()
{
var 
= {"s":
[
{
"data":
{
"id":"0",
"adi":"Ferhat",
"soyadi":"Bozkurt",
"tel":"0535 3397798",
"tarih":"2008-10-16 12:00:22"
}
}
]
};
alert(a); // [object Object]
alert(a.s.lenght); // 1
alert(a.s[0].data.adi); // Ferhat


Yukarıdaki JavaScript fonksiyonunu çalıştırdığımızda ilk olarak oluşturduğumuz değişkeni alert ettirdiğimizde JavaScript bize değişkenin biri Obje olduğunu belirtiyor.Kısaca JavaScript ile JSON yöntemiyle dataları nasıl hazırlayıp nasıl okuyacağımızı belirttikten sonra PHP ile dataları çıktı sağlayan oku.php dosyasını oluşturalım.
PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
<?php
header
("content-type:text/html;charset=iso-8859-9");
try
{
$db = new mysqli('localhost','root','','deneme2');
if ( 
mysqli_connect_error())
throw new 
Exception("MySQL'e bağlanamadım");
}
catch (
Exception $e) {
die(
"{$e->getMessage()}");
}

try
{
$sql "SELECT * FROM telefon_defteri";
$db->query("SET NAMES 'LATIN5'");
if(! 
$sorgu $db->query($sql) )
throw new 
Exception("Sorgumuz Çalışmadı");
$i =0;
echo 
'{"s":[';
while ( 
$oku $sorgu->fetch_array() )
{
$veri .= sprintf("{\"data\":{\"id\":\"%s\",\"adi\":\"%s\",\"soyadi\":\"%s\",\"tel\":\"%s\",\"tarih\":\"%s\"}},",
$i,
str_replace('"','\"',$oku[1]),
str_replace('"','\"',$oku[2]),
$oku[3],
$oku[4]);
$i++;
}
echo 
substr($veri,0,strlen($veri)-1);
echo 
"]}";
$sorgu->close();
}
catch (
Exception $e)
{
die(
"$e->getMessage()}");
}
?>

Yukarıdaki komut yapısını açıklamayacağım. Zira yukarıda datalarını nasıl bir sistematikle oluşturacağımızı zaten belirtmiştik. Burada tek Dikkat etmemiz gereken husus: tırnak karışıklılığı olmaması için str_replace kullandık. Zira çekilen data içerisinde tırnak olursa Array objesinin düzeneği bozulacak, dolayısıyla veri listeleme hata verecektir. Şiddetle Dikkat etmenizi öneririm.

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları reklam ver Benimmekan Mobil Sohbet