6 Mayıs 2012 Pazar

PHP & Access Database Bağlantısı


PHP ile en etkin performans gösteren veri tabanının MYSQL olduğundan bahsetmiştik. Fakat MYSQL ile bağlantının şart olduğu gibi bir yargı söz konusu değildir.

PHP ile Access , PHP ile SQLite ya da PHP ile Postgresql gibi ikili bağlantı seçeneklerinden de söz etmek mümkün. Aslında bu bölümde birçok veritabanı örneği kullanabilirdim. Fakat Access, SQLite ve PostreSql tercihlerini yapmamda en büyük etken bu yazılımların hem iyi bir performans göstermesi hem de ücretsiz olmalarıdır. Ticari amaç gütmezler. Açık kaynak kod (GNU) gelişmesine katkıda bulunan yazılımların yaygın hale gelmesini sağlamak biz programcıların görevlerindendir.

Access

Dünyanın en büyük yazılım firmalarından Microsoft’un geliştirdiği Microsoft Access veritabanı, en çok bilinen ve kullanılan veritabanı programıdır. Kullanımı oldukça geliştirilmiştir. Veritabanı ara yüzünü görmeye gerek kalmadan, kendi içerisindeki sihirbazlar ile veritabanı oluşturulur ve sorgulama yapılabilir.

Microsoft Access programı, herhangi bir Office versiyonu kurulumu sırasında bilgisayarınıza kurulacaktır. Bundan dolayı temin etmesi oldukça kolay bir veritabanı programıdır.
Access Arayüzü
Access ile Tablo Oluşturmak

Veritabanında tablo oluşturmak için “Boş Veritabanı” seçeneğine girerek ilgili seçeneği seçmek yeterli olacaktır. Daha sonraki aşamada “Veriler girerek tablo oluştur” denildiğinde, SQL’e gerek kalmadan manuel olarak veri girmemiz sağlanır.

Access içinde oluşturulan rehber tablosu




Yukarıda görülen tablo, rehber tablosudur ve isimler içermektedir. Bu verileri PHP programlama dilini kullanarak yazdırmak istenirse aşağıdaki gibi bir kod oluşturmak gerekecektir.

Uygulama: PHP ile Acces bağlantısıyla veri çekmek

<?php
$conn = new COM("ADODB.Connection") or die("ADODB bağlayamıyoruz.");
$conn->Open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\Users\ABGSATMAN\Desktop\son.mdb");
$veriler = $conn->Execute("SELECT * FROM rehber ORDER BY kimlik ASC");
echo "<TABLE border='1'><TR><TD colspan='6'>DATA</TD><TR>";
while (!$veriler->EOF)
{
echo "<tr>";
echo "<td>" . $veriler->Fields[0]->value . " </td>";
echo "<td>" . $veriler->Fields[1]->value . " </td>";
echo "</tr>";
$veriler->MoveNext();
}
echo "</TABLE>";
?>


Yukarıdaki kodları access.php dosya adıyla kaydedip çalıştırdığımızda, aşağıdaki gibi bir görüntü elde edilecektir.
Ekran Çıktısı

Yukarıdaki kodlamayı anlayabilmek için satırları teker teker incelemekte fayda var diye düşünüyorum.


$conn = new COM("ADODB.Connection") or die("ADODB bağlayamıyoruz.");
$conn->Open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\Users\ABGSATMAN\Desktop\son.mdb");

Yukarıdaki satırlar, PHP ile ACCESS arasındaki bağlantıyı sağlamaya yöneliktir. Aslında bu bağlantıyı sağlamak için;
odbc_connect(‘dsn adı’, ‘kullanıcı adı’, ‘şifre’);

bu yol izlenmelidir. Fakat buradaki sorun, kullanıcı adı ve şifre tanımlaması olmaktadır. ODBC bağlantısı olması için sistemin bu alt yapıya sahip olması gerekmektedir. Herhangi bir işletim sisteminde PHP kullanabilmek için gerekli alt yapıyı oluşturacak sunucu kurulmalıdır. Bunu sağlayan sunucu APACHE’dir. Fakat işletim sisteminin ne olduğuna bakılmaksızın, ODBC desteği olup olmadığını anlamak için;

phpinfo.php

<?php
Phpinfo();
?>

phpinfo.php dosyası çalıştırılıp, ODBC başlığı altında yazan özellikler incelenmelidir.
phpinfo.php ile sunucunun ODBC desteği ve özellikleri
ODBC kullanıcı adı ve şifre bilgileri için ODBC yapılandırılması gerekmektedir.

$conn = new COM("ADODB.Connection") or die("ADODB bağlayamıyoruz.");
$conn->Open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\Users\ABGSATMAN\Desktop\son.mdb");

Yapılandırılma işlemi bu satırlar ile oluşturulup, veritabanı konumu ise belirlenmektedir.

ODBC Yapılandırılması
Bu karmaşık işlemleri kod ile yapmak daha kolay ve zahmetsizdir.

$veriler = $conn->Execute("SELECT * FROM rehber ORDER BY kimlik ASC");

Bu satırda, veriler Access veritabanından çekilmektedir. Görüldüğü gibi numara sırasına göre ayarlanmıştır. ORDER BY kimlik ASC ifadesi bunu belirtmektedir. Execute ifadesi ile de sql sorgulamasında getirilen dataları, bir dizi haline alır ve döngüye sokmaya yardımcı olur.

echo "<TABLE border='1'><TR><TD colspan='6'>DATA</TD><TR>";
while (!$veriler->EOF)
{
echo "<tr>";
echo "<td>" . $veriler->Fields[0]->value . " </td>";
echo "<td>" . $veriler->Fields[1]->value . " </td>";
echo "</tr>";
$veriler->MoveNext();
}
echo "</TABLE>";

Bu satırlarda ise SQL ile çekilen veriler, döngü içine alınarak tablolama ile birlikte yazdırılır.


Bir sonraki yazıda görüşmek dileğiyle!

1 yorum:

  1. Ben Aşağıdaki hataları alıyorum.

    SCREAM: Error suppression ignored for
    Fatal error: in C:\wamp\www\ms\index.php on line 3
    com_exception: in C:\wamp\www\ms\index.php on line 3
    Call Stack

    Bu hatarın sebebi sizce ne olabilir. Win8 işletim sistemi, wampserver kullanıyorum..

    YanıtlaSil