SQL Dili – 3

PHP3 ve PostgreSQL ile Örnekler

Şimdi de PHP3 ile PostgreSQL Veri Tabanına nasıl ulaşabileceğinizi bir telefon rehberi hazırlayarak örnekleyeceğiz.

Önce Veri Tabanını hazırlayalım. Veri Tabanı şemasını oluşturacak olan SQL betiği aşağıdadır. Bu betiği rehber.sql adıyla kaydedin:

create table telefonlar (
                    adi char(40) not null,
                    tel char(15) not null,
                    eposta char(60)
);
 
create index adi_ndx on telefonlar using hash (adi);
create index tel_ndx on telefonlar using hash (tel);
create index eposta_ndx on telefonlar using hash (eposta);
 

Yukarıdaki SQL betiğini psql ön ucunda i rehber.sql komutu ile çalıştırın.

Aşağıdaki HTML kodunu kayitekle.html olarak kaydedin. HTML kodunun altındaki görüntü HTML kodunun WEB tarayıcı tarafından görüntülenmiş şeklidir. Görüntüden de anlaşıldığı gibi aşağıdaki HTML kodu uygulamamızın Veri Tabanına yeni kayıt ekleme arayüzüdürdır.

 
<HTML>
<HEAD>
<TITLE>Telefon Rehberi</TITLE>
</HEAD>
<BODY BGCOLOR="#440033" TEXT="#FFFF00">
<FONT FACE="Arial Tur, Helvetica" SIZE=5>
Adres - Telefon Rehberi
</FONT>
<P>
 
<FORM ACTION="kayitgir.php3" METHOD=post>
<TABLE>
<TR>
<TD><FONT FACE="Arial Tur, Helvetica">
Adı Soyadı
</FONT></TD>
<TD>
<INPUT TYPE=text NAME=ad SIZE=30 MAXLEGTH=40>
</TD>
</TR>
 
<TR>
<TD><FONT FACE="Arial Tur, Helvetica">
Telefon Numarası
</FONT></TD>
<TD>
<INPUT TYPE=text NAME=tel SIZE=30 MAXLEGTH=15>
</TD>
</TR>
 
<TR>
<TD><FONT FACE="Arial Tur, Helvetica">
E-Posta Adresi
</FONT></TD>
<TD>
<INPUT TYPE=text NAME=eposta SIZE=30 MAXLEGTH=60>
</TD>
</TR>
 
<TR>
<TD>
 
</TD>
<TD>
<INPUT TYPE=submit VALUE="Kaydı Gir">
<INPUT TYPE=reset VALUE="Formu Temizle">
</TD>
</TR>
 
</TABLE>
</FORM>
 
</BODY>
</HTML>
 

Yukarıdaki HTML kodunda tanımlı Form “Kaydı Gir” düğmesine tıklanarak kayitgir.php3 programına iletildiğinde aşağıdaki PHP3 kodu çalışır.

 
 
<HTML>
<HEAD>
<TITLE>Telefon Rehberi</TITLE>
<HEAD>
<BODY BGCOLOR="#440033" TEXT="#FFFF00">
<FONT FACE="Arial Tur, Helvetica" SIZE=5>
Adres - Telefon Rehberi
<FONT>
<P>
 
<?PHP
 
# Veri Tabanına bağlantı
$conn = pg_connect("dbname=rehber host=dbserver.domain port=6895 user=postgres password=userpass");
 
if(!$conn) {
                    echo "HATA 1000: Veri Tabanına bağlantı kurulamadı<BR>n";
                    echo "</BODY>n";
                    echo "</HTML>n";
                    exit;
}
 
# gerekli argümanların iletilmiş olup olmadığı denetimi
if(!isset($ad) || !isset($tel) || !isset($eposta)) {
                    echo "HATA 1001: Argümanlar eksik iletildi.<BR>n";
                    echo "</BODY>n";
                    echo "</HTML>n";
                    exit;
}
 
$result = pg_exec("begin");            # transaction başlangıcı
 
$ad = addslashes($ad);                    # SQL'deki özel karakterlerin özel anlamını kaldırır
$tel = addslashes($tel);
$eposta = addslashes($eposta);
 
$sorgu = "insert into telefonlar (adi, soyadi, eposta) " .
                     "values ('$ad', '$tel', '$eposta')";
 
$sonuc = pg_exec($conn, $sorgu); # sorgu işletilir.
 
if(!$sonuc) {
                    echo "HATA 1002: Kayıt Veri Tabanına girilemedi.<BR>n";
                    echo "</BODY>n";
                    echo "</HTML>n";
                    $sonuc = pg_exec($conn, "abort"); # transaction iptali
                    $sonuc = pg_exec($conn, "rollback");
                    pg_colse($conn);
                    exit;
}
 
if(!pg_cmdTuples($sonuc)) { # Sorgu sonucu etkilenen satır sayısı
                    echo "HATA 1003: Kayıt Veri Tabanına girilemedi.<BR>n";
                    echo "</BODY>n";
                    echo "</HTML>n";
                    $sonuc = pg_exec($conn, "abort"); # transaction iptali
                    $sonuc = pg_exec($conn, "rollback");
                    pg_colse($conn);
                    exit;
}
 
$result = pg_exec("commit");         # transaction'ın işletiliyor
$result = pg_exec("end");               # transaction tamamlandı
 
pg_close($conn);
 
echo "Yeni kayıt başarı ile eklendi.<BR>n";
 
?>
 
</BODY>
</HTML>
 
Share

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.