Download as pdf or txt
Download as pdf or txt
You are on page 1of 118

PHP Programlama

3. Bölüm
Tolga GÜYER
©2009-2010
İçindekiler
3.1 Neden Veritabanı Kullanırız?
3.2 MySQL Veritabanı Hakkında
3.3 MySQL Veritabanının Yönetimi
3.4 PHP & MySQL
3.5 Öğrendiklerimizi Uygulayalım: İkinci
El Otomobil Satışı
3.6 Öğrendiklerimizi Uygulayalım:
Öğrenci Bilgileri Girişi
PHP Programlama - 3. Bölüm 2
Tolga GÜYER
Neden Veritabanı Kullanırız?
Çünkü verilerimizi düzenli ve kalıcı olarak
saklamanın başka yolu yoktur.

Bildiğimiz gibi değişkenler ve sabitler,


taşıdıkları değerleri programımız çalıştığı
sürece saklayabilirler. Çünkü değişken ve
sabitlerin veri saklamak için kullandıkları
fiziksel ortam, bilgisayarın belleğidir.
PHP Programlama - 3. Bölüm 3
Tolga GÜYER
Neden Veritabanı Kullanırız?
Oysa verilerin kalıcı olarak saklandıkları
ortamlar, öncelikle sabit disk ortamlarıdır.
Bu donanım birimlerde veri saklayabilmek
için, verilerimizi “dosya” adı verilen yazılım
öğelerine aktarmamız gerekir.

PHP Programlama - 3. Bölüm 4


Tolga GÜYER
Neden Veritabanı Kullanırız?
Verilerimizi saklayabileceğimiz dosyaları üç
kategoride gruplandırabiliriz. Bunlardan ilki,
yazılımların kullandıkları kendilerine özgü
formatlardaki dosyalardır. İkili (binary)
türdeki bu dosyalara örnek olarak doc, pdf,
xls gibi dosya biçimleri verilebilir.

PHP Programlama - 3. Bölüm 5


Tolga GÜYER
Neden Veritabanı Kullanırız?
İkinci grupta ise metin-tabanlı (text-based)
dosyalar yer alır ki veritabanlarının alternatifi
olarak bu dosya türünü düşünebiliriz. Ancak
bu tür dosyalarda saklanacak büyük veri
yığınlarında istenilen bilgiye ulaşmanın
oldukça güçleştiğini göz önünde
bulundurursak, veri saklamak için çok da
uygun olmadıkları anlaşılacaktır.
Üçüncü grupta ise veritabanları yer
almaktadır.
PHP Programlama - 3. Bölüm 6
Tolga GÜYER
Neden Veritabanı Kullanırız?
Veritabanları çok büyük veri yığınlarını,
istenildiğinde aranan bilgi ya da bilgilere en
kısa sürede ulaşılabilecek şekilde tasnif
ederler. Bunun için kullandıkları temel veri
saklama birimleri, tablolardır.

Tablolar, bildiğimiz anlamdaki çizelgelerden


çok farklı değildir.
PHP Programlama - 3. Bölüm 7
Tolga GÜYER
Neden Veritabanı Kullanırız?
Örneğin aşağıdaki çizelge, bir veritabanı
tablosu olabilir:
Sıra No Adı Soyadı Mesleği Cinsiyeti
1 Cüneyt Sancak Yıllık izninin bir kısmını Erkek
kullanan köşe yazarı
2 Nilay Ulusoy Son ütücü Kadın
3 Hüseyin Korkmaz Kaplumbağa terbiyecisi Erkek

PHP Programlama - 3. Bölüm 8


Tolga GÜYER
Neden Veritabanı Kullanırız?
Bir veritabanı bir çok tabloyu içerebilir. Her
tablonun bir adı vardır. Tablodaki her bir
alanın da (sütun) bir adı ve içersine
yerleşecek verinin türü gibi özellikleri vardır.

PHP Programlama - 3. Bölüm 9


Tolga GÜYER
Neden Veritabanı Kullanırız?
Bütün bu yapının oluşturulmasına
veritabanının tasarımı adı verilir. Bu süreç,
doğal olarak, boş bir veritabanının
oluşturulması ile başlar. Ardından tablolar ve
bu tablolarda yer alacak alanlar ve bu
alanların özelliklerinin atanması, dizin
oluşturma işlemleri, anahtarların belirlenmesi
gibi işlemler gelecektir.

PHP Programlama - 3. Bölüm 10


Tolga GÜYER
Neden Veritabanı Kullanırız?
Veritabanları sadece verilerin tasnif edilmesi
için gereken altyapının oluşturulduğu
yazılımlar değildir. Veriye en kısa sürede
ulaşmak için kullandıkları çeşitli algoritmik
yöntemler, veri kapasitesi, veri güvenliği,
programlama desteği gibi daha bir çok
özellik, bu yazılımlarda standart olarak yer
almaktadır.

PHP Programlama - 3. Bölüm 11


Tolga GÜYER
Neden Veritabanı Kullanırız?
Farklı veritabanı yazılımlarını birbirlerinden
ayıran farklar da yukarıda sayılan
özelliklerinden kaynaklanmaktadır. Örneğin
Microsoft Access yazılımı da bütün standart
özelliklere sahip bir veritabanı yazılımı
olmasına karşın, veri kapasitesi ve güvenliği
konularındaki sınırlılıkları nedeniyle çok
fazla verinin işlenmesi gerektiği profesyonel
uygulamalarda tercih edilmemektedir.
PHP Programlama - 3. Bölüm 12
Tolga GÜYER
Neden Veritabanı Kullanırız?
Bilinen bazı kalburüstü veritabanı yazılımları
olarak Oracle, MySQL, Microsoft SQL
Server, IBM DB2, dBase ve Paradox
sayılabilir.

PHP Programlama - 3. Bölüm 13


Tolga GÜYER
MySQL Veritabanı Hakkında
MySQL Veritabanı yazılımın diğerlerinden
ayıran en önemli fark, kuşkusuz ki açık
kaynak kodlu ve ücretsiz olmasıdır. Diğer
yandan, ücretsiz olarak dağıtılan yazılımların
kalitelerinin de düşük olmadığına güzel bir
örnek oluşturmaktadır. Şöyle ki genel olarak
düşünülenin aksine, MySQL veritabanı
sistemi çok büyük veri yığınlarında oldukça
iyi performans sergilemektedir.
PHP Programlama - 3. Bölüm 14
Tolga GÜYER
MySQL Veritabanı Hakkında
Yazılımın günümüzde Google ve Yahoo gibi
şirketler tarafından kullanıldığını söylersek,
sanırız kapasitesi hakkında bir fikir
verecektir.

PHP Programlama - 3. Bölüm 15


Tolga GÜYER
MySQL Veritabanının Yönetimi
XAMPP yazılımı bilgisayarınıza birinci
bölümde anlatıldığı gibi kurulduysa, MySQL
veritabanını yazılımın kontrol panelini
kullanarak başlatabilirsiniz.
Veritabanına ait yönetim paneline ulaşmak
için ise, herhangi bir internet tarayıcısının
adres çubuğuna
http://localhost/phpmyadmin/
yazmak yeterli olacaktır.
PHP Programlama - 3. Bölüm 16
Tolga GÜYER
MySQL Veritabanının Yönetimi
Ancak öncelikle localhost dizinine
ulaşabilmemiz için, Apache sunucusunun da
yine XAMPP kontrol panelinden başlatılmış
olması gerektiğini hatırlatalım.
Karşımıza MySQL localhost adlı, veritabanı
yönetimiyle ilgili her türlü işlemi
gerçekleştirebileceğimiz ekran gelecektir.
İlk olarak bir veritabanı oluşturmakla
başlayalım.
PHP Programlama - 3. Bölüm 17
Tolga GÜYER
MySQL Veritabanının Yönetimi
Veritabanı Tanımlama

PHP Programlama - 3. Bölüm 18


Tolga GÜYER
MySQL Veritabanının Yönetimi
(1) numaralı alana oluşturacağımız
veritabanının ismini yazalım. Bu isim
belirlenirken, standart değişken isimlendirme
kuralları geçerli olacaktır.
(2) numaralı alandan ise oluşturacağımız
veritabanında yer alacak bilgilere uygun bir
karakter kodlama tablosu seçilir. Türkçe için
seçebileceğimiz en uygun karakter tablosu
“utf8_turkish_ci” olacaktır.
PHP Programlama - 3. Bölüm 19
Tolga GÜYER
MySQL Veritabanının Yönetimi
Oluştur butonuna bastığımızda veritabanı
oluşturulur. İkinci aşama olarak ilk
tablomuzu oluşturmalıyız. Her veritabanı, en
az bir tablo içermek zorundadır.

PHP Programlama - 3. Bölüm 20


Tolga GÜYER
MySQL Veritabanının Yönetimi
Tablo Oluşturma

PHP Programlama - 3. Bölüm 21


Tolga GÜYER
MySQL Veritabanının Yönetimi
(1) numaralı alana oluşturacağımız tablonun
ismini yazalım. Bu isim belirlenirken de
standart değişken isimlendirme kuralları
geçerli olacaktır.

(2) numaralı alana ise oluşturacağımız


tabloda yer alacak alanların sayısını yazalım.

PHP Programlama - 3. Bölüm 22


Tolga GÜYER
MySQL Veritabanının Yönetimi
Git butonuna bastığımızda tablomuz
oluşturulur ve her bir alanla ilgili özellikleri
belirleyebileceğimiz ekranla karşılaşırız.

Bu özelliklerden şu an için gereksinim


duyduğumuz kadarını belirleyelim.

PHP Programlama - 3. Bölüm 23


Tolga GÜYER
MySQL Veritabanının Yönetimi
Alanların Özellikleri

PHP Programlama - 3. Bölüm 24


Tolga GÜYER
MySQL Veritabanının Yönetimi

PHP Programlama - 3. Bölüm 25


Tolga GÜYER
MySQL Veritabanının Yönetimi
(1) numaralı bölüme tanımladığımız alanın
ismi yazılır. Bu isimler yine değişken
isimlendirme kurallarına uyularak verilir.
(2) numaralı bölümde tanımlanan alana ait
veri türü seçilir.
(3) numaralı bölümde ise seçilen veri türü
için maksimum uzunluk değeri girilir.

PHP Programlama - 3. Bölüm 26


Tolga GÜYER
MySQL Veritabanının Yönetimi
(4) numaralı bölüm, alana ait indeks türünün
seçileceği bölümdür. Her tabloda en az bir
“birincil anahtar” (primary key) alanı
bulunmak zorundadır. Biz bu alanı sıra
numarasının saklandığı alan olarak belirledik.
“Index” özelliği alanı arama işlemlerinde
hızlı ulaşım için indeksler. “Full Text”
özelliği ise alana tam metin indeksi özelliği
vermek için kullanılır.
PHP Programlama - 3. Bölüm 27
Tolga GÜYER
MySQL Veritabanının Yönetimi
Daha sonra veritabanımızla ilgili herhangi
bir işlem yapmamız gerektiğinde,
phpmyadmin panelinin sol tarafından
veritabanımız seçmemiz yeterli olacaktır. Bu
yapıldığında, sağ bölümde veritabanımızla
ilgili olarak gerçekleştirebileceğimiz bütün
işlemleri içeren görsel tasarımlı bir ekran
gelecektir.

PHP Programlama - 3. Bölüm 28


Tolga GÜYER
MySQL Veritabanının Yönetimi
Benzer şekilde tablolarımızdaki her türlü
güncellemeyi yine panelin sol tarafında
veritabanımız seçili iken veritabanı adının
altında yer alan tablo isimlerine tıklayarak
yapabiliriz.

PHP Programlama - 3. Bölüm 29


Tolga GÜYER
MySQL Veritabanının Yönetimi
Genel olarak,
Veritabanı => Tablo => Alan
hiyerarşik yapısını düşündüğümüzde,
phpmyadmin panelini kullanarak ayarlarını
güncellemek istediğimiz nesnelere daha rahat
ulaşabiliriz.

PHP Programlama - 3. Bölüm 30


Tolga GÜYER
PHP & MySQL
MySQL ile Bağlantı Kurma

PHP programı içersinden, daha önceden


oluşturduğumuz bir MySQL veritabanına,
geçerli kullanıcı olan root kullanıcısı ile
şifresiz olarak erişim örnekteki gibi
sağlanabilir.

PHP Programlama - 3. Bölüm 31


Tolga GÜYER
PHP & MySQL
<?php
$snc1 = mysql_connect("localhost","root","");
$snc2 = mysql_select_db("adres_defteri");
if ($snc1 and $snc2)
{
echo "Bağlantı kuruldu ve veritabanı
seçildi.";
}
else
{
echo "Sorun var!";
}
?>

PHP Programlama - 3. Bölüm 32


Tolga GÜYER
PHP & MySQL
Burada $snc1 ve $snc1 değişkenlerinin her
ikisinin de True değerini aldığı durumda,
MySQL ile bağlantı kurulabilmiş ve
adres_defteri adlı veritabanı seçilebilmiş
demektir.

Aksi durum bu iki işlemden birisinde


problem var anlamına gelecektir.
PHP Programlama - 3. Bölüm 33
Tolga GÜYER
PHP & MySQL
Biraz daha profesyonel tarzda bir bağlantı
kurma kodu yazalım:
<?php
define("MyServer","localhost");
define("MyDatabase","adres_defteri");
define("MyUser","root");
define("MyPassword","");
function sqlConnect()
{
$snc1=mysql_connect(MyServer,MyUser,MyPassword);
$snc2 = mysql_select_db(MyDatabase);
$sncDeger = $snc1 and $snc2;
return $sncDeger;
}
PHP Programlama - 3. Bölüm 34
Tolga GÜYER
PHP & MySQL
Devamı

if (sqlConnect())
{
echo "Bağlantı kuruldu ve veritabanı
seçildi.";
}
else
{
echo "Sorun var!";
}
?>

PHP Programlama - 3. Bölüm 35


Tolga GÜYER
PHP & MySQL
Büyük programlarda genellikle sabit ve
fonksiyon tanımlamaları ayrı dosyalarda
tutulur. Böylece bu kodların her programda
tekrarlanmasına da gerek kalmamış olur.

Bu dosyaların içerikleri include ya da require


fonksiyonları kullanılarak okunur.

PHP Programlama - 3. Bölüm 36


Tolga GÜYER
PHP & MySQL
Örneğin;
<?php
require("tanimlar.php");
require("fonksiyonlar.php");
sqlConnect();
?>

kodunun çalışabilmesi için sistemde,


<?php
define("MyServer","localhost");
define("MyDatabase","basvuru");
define("MyUser","root");
define("MyPassword","");
?>

ve, PHP Programlama - 3. Bölüm 37


Tolga GÜYER
PHP & MySQL
<?php
function sqlConnect()
{
$snc1 =

mysql_connect(MyServer,MyUser,MyPassword);
$snc2 = mysql_select_db(MyDatabase);
mysql_query("SET NAMES 'latin5'");
$sncDeger = $snc1 and $snc2;
return $sncDeger;
}
?>

kodlarını içeren dosyaların da bulunması


gerekir.
PHP Programlama - 3. Bölüm 38
Tolga GÜYER
PHP & MySQL
Temel Veritabanı İşlemleri

Veritabanlarının kullanım amacı, veri


saklamak ve istenildiğinde bunlar üzerinde
işlem yapmaktır. Bu işlemler ayrıntıya
inildikçe çok fazla çeşitlilik gösterse de,
temel olarak verilerimiz üzerinde
gerçekleştirdiğimiz ortak işlemler…
PHP Programlama - 3. Bölüm 39
Tolga GÜYER
PHP & MySQL
• Kaydetme
• Arama
• Güncelleme
• Silme

şeklinde sıralanabilir.

PHP Programlama - 3. Bölüm 40


Tolga GÜYER
PHP & MySQL
Bu tür işlemlerin kullanılan veritabanı ya da
programlama dilinden bağımsız olarak
standart yöntemlerle gerçekleştirilebilmeleri
amacıyla SQL (Structured Query Language)
adlı dil geliştirilmiştir. Diğer bir deyişle SQL
dilinin amacı, bütün veritabanlarının bütün
programlama dilleri ile aynı dili
konuşmalarını sağlamaktır.

PHP Programlama - 3. Bölüm 41


Tolga GÜYER
PHP & MySQL
Bu kesimde gerçekleştireceğimiz PHP ve
MySQL arasındaki iletişimlerde de SQL
cümlelerini kullanacağız.

PHP Programlama - 3. Bölüm 42


Tolga GÜYER
PHP & MySQL
Insert (Kayıt Girme)

Veritabanının bir tablosuna veri eklemek için


kullandığımız SQL cümlesinin genel yapısı
aşağıdaki gibidir:

INSERT INTO <tablo adı> (<alan adları>


VALUES (<değerler>)
PHP Programlama - 3. Bölüm 43
Tolga GÜYER
PHP & MySQL
Alan adları aynen veritabanında tanımlandığı
biçimleri ile yazılmalıdır ve birbirlerinden
virgül işreti ile ayrılırlar.
Değerler ise karşılık gelen alan adları ile aynı
sırada yazılırlar ve yine birbirlerinden virgül
işreti ile ayrılırlar. Değerler yazılırken dikkat
edilmesi gereken diğer bir husus da,
veritabanında yerleştikleri alanın veri türü ile
uyuşmalarıdır.
PHP Programlama - 3. Bölüm 44
Tolga GÜYER
PHP & MySQL
“ogrenci1” adlı, aşağıdaki yapıda
tanımlanmış bir veritabanımızın
bulunduğunu varsayalım:
siraNo ad soyad eposta
1 … … …
2 … … …
… … … …

PHP Programlama - 3. Bölüm 45


Tolga GÜYER
PHP & MySQL
Aşağıdaki program, bu veritabanına bir kayıt
girdisi yapacaktır:
<?php
mysql_connect("localhost","root" , "");
mysql_select_db("ogrenci1");
mysql_query("INSERT INTO anatablo (ad , soyad ,
eposta) VALUES ('Tolga' , 'Güyer' ,
'guyer@gazi.edu.tr')");
?>

PHP Programlama - 3. Bölüm 46


Tolga GÜYER
PHP & MySQL
Programda, veritabanına sabit veriler aktarılmaktadır. Bunun
yerine kullanıcı tarafından girilecek verilerin girilmesini
sağlayabilir misiniz?

PHP Programlama - 3. Bölüm 47


Tolga GÜYER
PHP & MySQL
Şimdi biraz daha karmaşık bir örnek
geliştirelim. Bu defa veritabanımızın
aşağıdaki gibi olsun:
numara ad soyad vize final gecme harf basari
… … … … … … … …

PHP Programlama - 3. Bölüm 48


Tolga GÜYER
PHP & MySQL
Bu durumda öğrenciye ait numara, ad,
soyad, vize ve final notları kullanıcı
tarafından giriliyor. Geçme notu, vize
notunun %40’ı ve final notunun %60’ı
toplanarak elde ediliyor. Harf notu ise
referans değer tablosuna göre yine program
tarafından atanıyor.

PHP Programlama - 3. Bölüm 49


Tolga GÜYER
PHP & MySQL
Başarı durumu, geçme notuna göre
hesaplanmaktadır. Eğer geçme notu 50 ve
üzerinde ise bu alana geçti, aksi halde kaldı
bilgisi otomatik olarak girilmektedir.

PHP Programlama - 3. Bölüm 50


Tolga GÜYER
PHP & MySQL
Sonuç olarak, kullanıcı tarafından girilen beş
değer, programımız tarafından hesaplanan
üç değerle birlikte veritabanımızın tablosuna
bir kayıt girdisi olarak eklenmektedir.

PHP Programlama - 3. Bölüm 51


Tolga GÜYER
PHP & MySQL
<form action="" method="post">
<table width="503" border="1">
<tr>
<td width="169" bgcolor="#FFFFCC">Numara :</td>
<td width="318" bgcolor="#33FFFF"><input size="10"
type="text" name="numara"></td></tr>
<tr>
<td bgcolor="#FFFFCC">Ad :</td>
<td bgcolor="#33FFFF"><input size="20" type="text"
name="ad"></td></tr>
<tr>
<td bgcolor="#FFFFCC">Soyad :</td>
<td bgcolor="#33FFFF"><input size="20" type="text"
name="soyad"></td></tr>

PHP Programlama - 3. Bölüm 52


Tolga GÜYER
PHP & MySQL
Devamı

<tr>
<td bgcolor="#FFFFCC">Vize :</td>
<td bgcolor="#33FFFF"><input size="3" type="text"
name="vize"></td></tr>
<tr>
<td bgcolor="#FFFFCC">Final :</td>
<td bgcolor="#33FFFF"><input size="3" type="text"
name="final"></td></tr>
<tr>
<td colspan="2" bgcolor="#FFCC99"><input
name="dugme" type="submit" value="Hesapla &amp;
Kaydet"></td></tr>
</table>
</form>

PHP Programlama - 3. Bölüm 53


Tolga GÜYER
PHP & MySQL
Devamı

<?php
function sqlConnect() {
$snc1 = mysql_connect("localhost","root" , "");
$snc2 = mysql_select_db("ogrenci2");
$sncDeger = $snc1 and $snc2;
return $sncDeger;}
function gecmeNotuHesapla($v, $f){
return (2*$v+3*$f)/5;}
function harfNotuHesapla($Not){
if ($Not<=39) {$harf = "FF"; $basari=0;}
elseif ($Not<=49){$harf = "DC"; $basari=0;}
elseif ($Not<=59){$harf = "CC"; $basari=1;}
elseif ($Not<=69){$harf = "CB"; $basari=1;}
elseif ($Not<=79){$harf = "BB"; $basari=1;}
elseif ($Not<=89){$harf = "BA"; $basari=1;}
elseif ($Not<=100){$harf = "AA"; $basari=1;}
return $harf;}
PHP Programlama - 3. Bölüm 54
Tolga GÜYER
PHP & MySQL
Devamı

function basariDurumu($Not){
if ($Not<=49) {$basari=0;}
else {$basari=1;}
return $basari;}
if(isset($_POST["dugme"])){
if (sqlConnect()){
echo "<p>Bağlantı başarılı...";
$numara = $_POST['numara'];
$ad = $_POST['ad'];
$soyad = $_POST['soyad'];
$vize = (int)$_POST['vize'];
$final = (int)$_POST['final'];
$gecme =
number_format(gecmeNotuHesapla($vize, $final),2);
$harf = harfNotuHesapla($gecme);

PHP Programlama - 3. Bölüm 55


Tolga GÜYER
PHP & MySQL
Devamı

if (basariDurumu($gecme)==1)
{$basari_durumu="Geçti";}
else {$basari_durumu="Kaldi";}
$sonuc=mysql_query("INSERT INTO anatablo
(numara, ad , soyad , vize, final, gecme, harf,
basari) VALUES ('$numara', '$ad' , '$soyad' ,
'$vize' , '$final' , '$gecme' , '$harf' ,
'$basari_durumu')");
if ($sonuc){
echo "<p>Geçme Notu.......", $gecme;
echo "<p>Harf Notu........", $harf;
echo "<p>Başarı Durumu....", $basari_durumu;
echo "<p>Bilgiler veritabanına eklenmiştir...";}
else{echo "Bilgiler eklenemedi...";} }
else { echo "Bağlantıda sorun var...“;} }
?>

PHP Programlama - 3. Bölüm 56


Tolga GÜYER
PHP & MySQL
Select (Kayıt Okuma)

Veritabanının bir tablosunda yer alan verileri


okumak için kullandığımız SQL cümlesinin
genel yapısı aşağıdaki gibidir:

SELECT <alan adları> FROM <tablo adı>

PHP Programlama - 3. Bölüm 57


Tolga GÜYER
PHP & MySQL
Alan adları aynen veritabanında tanımlandığı
biçimleri ile yazılmalıdır ve birbirlerinden
virgül işreti ile ayrılırlar. Eğer veritabanından
bütün alanların içerdiği değerleri çekmek
istiyorsak alan adları yerine ALL ya da *
ifadesi kullanılır.

PHP Programlama - 3. Bölüm 58


Tolga GÜYER
PHP & MySQL
Bir önceki örneğimizde kullandığımız
“ogrenci2” veritabanındaki kayıtları
okuyarak ekranda listeleyecek bir örnek
uygulama geliştirelim.

PHP Programlama - 3. Bölüm 59


Tolga GÜYER
PHP & MySQL
<?php
function sqlConnect(){
$snc1 = mysql_connect("localhost","root" , "");
$snc2 = mysql_select_db("ogrenci2");
$sncDeger = $snc1 and $snc2;
return $sncDeger;}
if (sqlConnect()){
$sonuclar = mysql_query("SELECT
numara,ad,soyad FROM anatablo");
while ($row=mysql_fetch_array($sonuclar)){
echo $row['numara']," ",$row['ad']," ",
$row['soyad'],"<br>";
}
}
?>

PHP Programlama - 3. Bölüm 60


Tolga GÜYER
PHP & MySQL
Burada anatablo’dan her bir öğrenciye ait
numara, ad ve soyad bilgileri çekilmiştir.
Sorgulama sonucunda elde edilen kayıt
kümesi (record set), $sonuçlar adlı bir
değişkende saklanmıştır.

while döngüsü bu veri kümesini tarayarak


her bir kaydın ekrana yazılmasını
sağlamaktadır.
PHP Programlama - 3. Bölüm 61
Tolga GÜYER
PHP & MySQL
Where (Kayıt Süzme)

Bu kesimde SELECT cümlesinin koşullu


kullanımını göreceğiz. Bu kullanımda, belirli
bir koşulu sağlayan verilerin süzülmesi
sağlanmaktadır.

PHP Programlama - 3. Bölüm 62


Tolga GÜYER
PHP & MySQL
Genel yapısı aşağıdaki gibidir:

SELECT <alan adları> FROM <tablo adı>


WHERE <koşul>

Koşul, alanlar üzerine tanımlı Boolean bir


ifade şeklinde belirlenir.

PHP Programlama - 3. Bölüm 63


Tolga GÜYER
PHP & MySQL
Yine önceki örneğimizde kullandığımız
“ogrenci2” veritabanını kullanan bir örnek
geliştirelim. Ancak bu defa, çektiğimiz
verileri kullanıcının tercihine göre geçenler
ya da kalanlar biçiminde süzecek bir tasarım
yapalım.

PHP Programlama - 3. Bölüm 64


Tolga GÜYER
PHP & MySQL
<?php
function sqlConnect(){
$snc1 = mysql_connect("localhost","root" , "");
$snc2 = mysql_select_db("ogrenci2");
$sncDeger = $snc1 and $snc2;
return $sncDeger;}
if (sqlConnect()){
$basari_durumu = $_POST['filtre'];
$sonuclar = mysql_query("SELECT
numara,ad,soyad FROM anatablo WHERE
basari='$basari_durumu'");
while ($row=mysql_fetch_array($sonuclar)){
echo $row['numara']," ",$row['ad']," ",
$row['soyad'],"<br>";
}
}
?>
PHP Programlama - 3. Bölüm 65
Tolga GÜYER
PHP & MySQL
Order By (Sıralı Kayıt Süzme)

WHERE koşulu ORDER BY deyimi ile


birlikte kullanıldığında, çekilen kayıt
kümesini istenilen alan ya da alanlara göre
sıralı olarak oluşturur.

PHP Programlama - 3. Bölüm 66


Tolga GÜYER
PHP & MySQL
Genel yapısı aşağıdaki gibidir:

SELECT <alan adları> FROM <tablo adı>


ORDER BY <alan(lar)> ASC|DSC

Artan sıralama isteniyorsa ASC, azalan


sıralama için ise DSC ifadesi kullanılır.

PHP Programlama - 3. Bölüm 67


Tolga GÜYER
PHP & MySQL
Bu defaki örneğimizde, tablomuzdaki
verileri öğrenci adına göre artan sırada
listeleyelim.

PHP Programlama - 3. Bölüm 68


Tolga GÜYER
PHP & MySQL
<?php
function sqlConnect(){
$snc1 = mysql_connect("localhost","root" , "");
$snc2 = mysql_select_db("ogrenci2");
$sncDeger = $snc1 and $snc2;
return $sncDeger;}
if (sqlConnect()){
$sonuclar = mysql_query("SELECT
numara,ad,soyad FROM anatablo ORDER BY ad ASC");
while ($row=mysql_fetch_array($sonuclar)){
echo $row['numara']," ",$row['ad']," ",
$row['soyad'],"<br>";
}
}
?>

PHP Programlama - 3. Bölüm 69


Tolga GÜYER
PHP & MySQL
Update (Kayıt Güncelleme)

Veri güncellemek için kullandığımız SQL


cümlesinin genel yapısı aşağıdaki gibidir:

UPDATE <tablo adı> SET


<alan1>=<değer>, <alan2>=<değer>, …
WHERE <koşul>
PHP Programlama - 3. Bölüm 70
Tolga GÜYER
PHP & MySQL
Bu durumda, koşul cümlemizi sağlayan kayıt
kümesindeki alanlar üzerinde güncelleme
işlemi gerçekleştirilecektir.

PHP Programlama - 3. Bölüm 71


Tolga GÜYER
PHP & MySQL
<?php
$baglanti=mysql_connect("localhost","root","");
if (!$baglanti){
die('Bağlanılamadı: ' . mysql_error());}
mysql_select_db("veritabanim", $baglanti);
mysql_query("UPDATE Kisiler SET Yas = '36‘
WHERE Adi = 'Murtaza' AND Soyadi =
'Dalkılıç'");
mysql_close($baglanti);
?>

Bu örnekte, “veritabanim” adlı veritabanının


“Kisiler” tablosunda yer alan Murtaza
Dalkılıç adlı yaş bilgisi 36 olarak
güncellenmiştir.
PHP Programlama - 3. Bölüm 72
Tolga GÜYER
PHP & MySQL
Delete (Kayıt Silme)

Veri silmek için kullandığımız SQL


cümlesinin genel yapısı aşağıdaki gibidir:

DELETE FROM <tablo adı> WHERE


<koşul>

PHP Programlama - 3. Bölüm 73


Tolga GÜYER
PHP & MySQL
Bu durumda, kayıt kümesinde koşul
cümlemizi sağlayan alanları içeren satırlar
tablomuzdan silineceklerdir.

PHP Programlama - 3. Bölüm 74


Tolga GÜYER
PHP & MySQL
<?php
$baglanti=mysql_connect("localhost","root","");
if (!$baglanti){
die('Bağlanılamadı: ' . mysql_error()); }
mysql_select_db("veritabanim", $baglanti);
mysql_query(“DELETE FROM Kisiler
WHERE Soyadi = 'Dalkılıç'");
mysql_close($baglanti);
?>

Bu örnekte, “veritabanim” adlı veritabanının


“Kisiler” tablosunda yer alan ve soyadı
Dalkılıç olan bütün kayıtlar silinecektir.

PHP Programlama - 3. Bölüm 75


Tolga GÜYER
PHP & MySQL
Dâhili MySQL Fonksiyonları

Bu kesimde, PHP içersinden MySQL


veritabanı üzerinde gerçekleştirilecek
işlemlerde kullanılan dahili fonksiyonlar
hakkında bilgi verilecektir.

PHP Programlama - 3. Bölüm 76


Tolga GÜYER
PHP & MySQL MySQL Fonksiyonları

Fonksiyon İşlevi
mysql_affected_rows() Bir önceki MySQL işleminden etkilenen
satırların sayısını verir
mysql_change_user() Anlık MySQL bağlantısının kullanıcısın
değiştirir. Kullanımı tavsiye edilmez.
mysql_client_encoding() Anlık bağlantının karakter kümesinin ismini
gönderir
mysql_close() Anlık MySQL bağlantısını kapatır
mysql_connect() MySQL bağlantısını kurar
mysql_create_db() Yeni bir MySQL veritabanı oluşturur.
Kullanımı tavsiye edilmez. Yerine
mysql_query() önerilir
mysql_data_seek() Kayıt işaretçisini konumlandırır
PHP Programlama - 3. Bölüm 77
Tolga GÜYER
PHP & MySQL MySQL Fonksiyonları

Fonksiyon İşlevi
mysql_db_name() mysql_list_dbs() den bir veritabanı ismi alır
mysql_db_query() Veritabanına bir MySQL sorgusu gönderir.
Kullanımı tavsiye edilmez. Yerine
mysql_select_db() ve mysql_query()
önerilir
mysql_drop_db() Bir MySQL veritabanını siler. Kullanımı
tavsiye edilmez. Yerine mysql_query()
önerilir
mysql_errno() En son MySQL işleminin ürettiği hata
mesajının numarasını gönderir
mysql_fetch_array() Kayıt kümesinden bir satırı ilişkilendirilmiş
ve/veya sayısal bir dizi olarak gönderir
PHP Programlama - 3. Bölüm 78
Tolga GÜYER
PHP & MySQL MySQL Fonksiyonları

Fonksiyon İşlevi
mysql_fetch_array() Kayıt kümesinden bir satırı ilişkilendirilmiş
ve/veya sayısal bir dizi olarak gönderir
mysql_fetch_assoc() Kayıt kümesinden bir satırı ilişkilendirilmiş
bir dizi olarak gönderir
mysql_fetch_field() Kayıt kümesinden bir alan bilgisini nesne
olarak gönderir
mysql_fetch_lengths() Sonuç satırındaki her alanın içerik
uzunluklarını gönderir
mysql_fetch_object() Kayıt kümesinden bir satırı nesne olarak
gönderir
mysql_fetch_row() Kayıt kümesinden bir satırı sayısal bir dizi
olarak gönderir
PHP Programlama - 3. Bölüm 79
Tolga GÜYER
PHP & MySQL MySQL Fonksiyonları

Fonksiyon İşlevi
mysql_field_flags() Kayıt kümesinden bir alanla ilişkilendirilmiş
bayrak değerlerini gönderir
mysql_field_len() Bir kayıt kümesindeki bir alanda yer alan
maksimum uzunluğu gönderir
mysql_field_name() Bir kayıt kümesindeki belirli bir alanın adını
gönderir
mysql_field_seek() Kayıt işaretçisini belirli bir alana
konumlandırır
mysql_field_table() Belirli bir alanı içeren tablonun adını
gönderir
mysql_field_flags() Kayıt kümesinden bir alanla ilişkilendirilmiş
bayrak değerlerini gönderir
PHP Programlama - 3. Bölüm 80
Tolga GÜYER
PHP & MySQL MySQL Fonksiyonları

Fonksiyon İşlevi
mysql_field_type() Kayıt kümesinde yer alan belirli bir alanın
veri türünü gönderir
mysql_free_result() Boş sonuç belleğini verir
mysql_get_client_info() MySQL istemci bilgisini verir
mysql_get_host_info() MySQL ana bilgisayar bilgisini verir
mysql_get_proto_info() MySQL protokol bilgisini verir
mysql_get_server_info() MySQL sunucu bilgisini verir
mysql_info() En son sorgulama bilgisini verir
mysql_insert_id() En son INSERT işlemi ile gerçekleştirilen
AUTO_INCREMENT ID (otomatik artan
sayı) bilgisini verir

PHP Programlama - 3. Bölüm 81


Tolga GÜYER
PHP & MySQL MySQL Fonksiyonları

Fonksiyon İşlevi
mysql_list_dbs() MySQL sunucuda bulunan veritabanı
listesini verir
mysql_list_fields() MySQL tablo alanlarını listeler. Kullanımı
tavsiye edilmez. Yerine mysql_query()
önerilir
mysql_list_processes() MySQL işlemlerini listeler
mysql_list_tables() MySQL tablolarını listeler. Kullanımı tavsiye
edilmez. Yerine mysql_query() önerilir
mysql_num_fields() Bir kayıt kümesindeki alanların (sütunların)
sayısını gönderir
mysql_num_rows() Bir kayıt kümesindeki satırların sayısını
gönderir
PHP Programlama - 3. Bölüm 82
Tolga GÜYER
PHP & MySQL MySQL Fonksiyonları

Fonksiyon İşlevi
mysql_pconnect() Sürekli bir MySQL bağlantısı başlatır
mysql_ping() Bir sunucu bağlantısı denetimi gerçekletiri
(ping) ve eğer bağlantı yoksa tekrar bağlantı
kurar
mysql_query() MySQL veritabanı üzerinde bir sorgu
çalıştırır
mysql_real_escape_string() SQL cümlesinde kullanılmak üzere bir
string alır
mysql_result() Bir kayıt kümesindeki bir alanın değerini
verir
mysql_select_db() Etkin MySQL veritabanını belirler

PHP Programlama - 3. Bölüm 83


Tolga GÜYER
PHP & MySQL MySQL Fonksiyonları

Fonksiyon İşlevi
mysql_stat() MySQL sunucusunun anlık sistem
durumunu verir
mysql_tablename() Bir alana ait tablo adını verir. Kullanımı
tavsiye edilmez. Yerine mysql_query()
önerilir
mysql_thread_id() Anlık çalıştırılan prosedür (thread) kimlik
(ID) bilgisini verir
mysql_unbuffered_query() MySQL veritabanı üzerinde bir sorgu
çalıştırır (verileri çekmez, tampon bellek
kullanır)

PHP Programlama - 3. Bölüm 84


Tolga GÜYER
PHP & MySQL
Veritabanı-bağlantılı Sayfa Tazeleme

Sayfamız üzerinde yer alan nesnelerin,


veritabanından gelen bilgiler kullanılarak
doldurulması işlemine verilen addır.

PHP Programlama - 3. Bölüm 85


Tolga GÜYER
PHP & MySQL
Bu nesneler açılan kutular (combobox) ya da
liste kutuları (listbox) olabileceği gibi,
gazetelerin web sayfalarında olduğu gibi
resim alanları bile bu şekilde güncel
tutulabilir. Böylelikle oluşturulan web
sitesinin dinamik bir yapıda olması sağlanmış
olur.

PHP Programlama - 3. Bölüm 86


Tolga GÜYER
PHP & MySQL
Bu kesimde, sayfa tazeleme için bir
Javascript kodunun kullanılacağı sayfa-
veritabanı bağlantısı tekniği, bir örnek
üzerinden anlatılacaktır.

Öncelikle, sayfa tazeleme işlemimin


gerçekleştirecek Javascript kodumuzu
yazalım.
PHP Programlama - 3. Bölüm 87
Tolga GÜYER
PHP & MySQL
<SCRIPT LANGUAGE="JavaScript">
function frmYenile()
{
document.form1.method='POST';
document.form1.submit();
}
</SCRIPT>

Burada kırmızı ile işaretlenen form1 ifadesi,


kullandığımız HTML formunun adı
olacaktır.
Şimdi HTML formumuzu tasarlayalım.

PHP Programlama - 3. Bölüm 88


Tolga GÜYER
PHP & MySQL
<form name="form1" action="" method="post">
<p>Adı : <?php echo "<input size=\"20\"
type=\"text\" name=\"ad\"
value=\"$_POST[ad]\"></p>"; ?>
<p>Soyadı : <?php echo "<input size=\"20\"
type=\"text\" name=\"soyad\"
value=\"$_POST[soyad]\"></p>"; ?>
<p>Personel No : <select size="1" name="per_no"
onchange="frmYenile();">
<?php
sqlConnect();
$sonuclar = mysql_query("SELECT pernum
FROM personel");
$secenekler="<option
value=\"-1\"
selected=\"selected\">Seçiniz</option>";

PHP Programlama - 3. Bölüm 89


Tolga GÜYER
PHP & MySQL
Devamı

while
($row=mysql_fetch_array($sonuclar)){
$secenekler .= "<option
value=".$row['pernum']."></option>\n";
}
echo ($secenekler);
?>
</select>
<p><input name="dugme" type="submit"
value="Veritabanına Ekle"></p>
</form>

PHP Programlama - 3. Bölüm 90


Tolga GÜYER
PHP & MySQL
Örneğimizde dikkat edilmesi gereken
noktalardan ilki, ad ve soyad alanlarında
value parametresinin kullanımdır. Bunun
amacı, sayfa tazelendiğinde bu alanların
kullanıcı tarafından önceden girilmiş olan
değerlerini kaybetmemelerini sağlamaktır.

PHP Programlama - 3. Bölüm 91


Tolga GÜYER
PHP & MySQL
İkinci nokta ise, bir açılan kutu olarak
tasarlanan personel numarası alanıdır. Bu
alana ait seçenekler, doğrudan veritabanında
yer alan personel tablosundan çekilmektedir.
Alandan herhangi bir seçim yapıldığı anda
frmYenile() kodu, sayfayı tazelemektedir.

PHP Programlama - 3. Bölüm 92


Tolga GÜYER
PHP & MySQL
Bunun sebebi, örnek uygulamalarımızda da
olduğu gibi, bu alana bağlı olarak başka bir
alanda gerçekleştirilebilecek herhangi bir
değişikliğin geçerli olmasını sağlamaktır.

PHP Programlama - 3. Bölüm 93


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
İkinci El Otomobil Satışı
Şimdi, MySQL veritabanını kullanan bir
ikinci el otomobil satış uygulaması
geliştireceğiz.

PHP Programlama - 3. Bölüm 94


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
İkinci El Otomobil Satışı
<?php
// Otomobil markaları ve seçilen markanın
modelleri veritabanında ilgili tablodan geliyor.
// Kullanılan Veritabanı (otomobil)
// Tablolar:
// otomobil_bilgileri (no(*), marka, model, renk,
yil, ytip, klima, cdcalar, sunroof, fiyat)
// marka_model (no(*), marka, model)

function sqlConnect()
{
$snc1 = mysql_connect("localhost","root","");
$snc2 = mysql_select_db("otomobil");
mysql_query("SET NAMES 'latin5'"); // Türkçe
harfleri içeren karakter setine geçiliyor.
$sncDeger = $snc1 and $snc2;
return $sncDeger; } ?>
PHP Programlama - 3. Bölüm 95
Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
İkinci El Otomobil Satışı Devamı

<SCRIPT LANGUAGE="JavaScript">
function frmYenile()
{
document.otogir.method='POST';
document.otogir.submit();
}
</SCRIPT>

<form name="otogir" action="" method="post">


<table width="503" border="1">
<tr>
<td width="169" bgcolor="#FFFFCC">Marka :</td>
<td width="318" bgcolor="#33FFFF">
<select size="1" name="marka"
onchange="frmYenile();">

PHP Programlama - 3. Bölüm 96


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
İkinci El Otomobil Satışı Devamı

<?php
sqlConnect();
if (isset($_POST['marka']))
{
$sonuc = mysql_query("SELECT marka
FROM marka_model WHERE
marka='".$_POST['marka']."'");
while
($row=mysql_fetch_array($sonuc))
{
$marka = $row['marka'];
}
echo "<option
value=\"$_POST[marka]\"
selected=\"selected\">$marka</option>";

PHP Programlama - 3. Bölüm 97


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
İkinci El Otomobil Satışı Devamı

$sonuclar = mysql_query("SELECT
marka FROM marka_model WHERE
marka<>'".$_POST['marka']."' GROUP BY marka");
$secenekler="";
while
($row=mysql_fetch_array($sonuclar))
{
$secenekler .= "<option
value=".$row['marka'].">".$row['marka']."</option>
\n";
}
}
else
{
$sonuclar = mysql_query("SELECT
marka FROM marka_model GROUP BY marka");

PHP Programlama - 3. Bölüm 98


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
İkinci El Otomobil Satışı Devamı

$secenekler="<option value=\"-1\"
selected=\"selected\">== S E Ç İ N İ Z
==</option>";
while
($row=mysql_fetch_array($sonuclar))
{
$secenekler .= "<option
value=".$row['marka'].">".$row['marka']."</option>
\n";
}
}
echo ($secenekler);
?>
</select>
</td>
</tr>

PHP Programlama - 3. Bölüm 99


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
İkinci El Otomobil Satışı Devamı

<tr>
<td width="169" bgcolor="#FFFFCC">Model :</td>
<td width="318" bgcolor="#33FFFF">
<select size="1" name="model">
<option value="-1" selected="selected">== S E Ç
İ N İ Z ==</option>
<?php
$sonuclar = mysql_query("SELECT model FROM
marka_model WHERE marka='".$_POST['marka']."'");
$secenekler="";
while
($row=mysql_fetch_array($sonuclar))
{
$secenekler .= "<option
value=".$row['model'].">".$row['model']."</option>
\n“; }
echo ($secenekler); ?>
PHP Programlama - 3. Bölüm 100
Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
İkinci El Otomobil Satışı Devamı

</select>
</td>
</tr>
<tr>
<td bgcolor="#FFFFCC">Yýl :</td>
<td bgcolor="#33FFFF">
<select size="1" name="yil">
<option value="-1" selected="selected">== S E Ç İ
N İ Z ==</option>
<?php
$secenekler="";
for ($y=1980;$y<=2009;$y++)
{
$secenekler .= "<option
value=".$y.">".$y."</option>\n";
}
echo $secenekler; ?> </select></td></tr>
PHP Programlama - 3. Bölüm 101
Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
İkinci El Otomobil Satışı Devamı

<tr>
<td bgcolor="#FFFFCC">Renk :</td>
<td bgcolor="#33FFFF">
<select size="1" name="renk">
<option value="-1" selected="selected">== S E Ç İ
N İ Z ==</option>
<option value="Kırmızı">Kırmızı</option>
<option value="Beyaz">Beyaz</option>
<option value="Gri">Gri</option>
<option value="Siyah">Siyah</option>
</select>
</td>
</tr>
<tr>
<td bgcolor="#FFFFCC">Yakıt Tipi :</td>
<td bgcolor="#33FFFF">

PHP Programlama - 3. Bölüm 102


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
İkinci El Otomobil Satışı Devamı

<input type="radio" name="ytip"


value="benzin">Benzinli
<input type="radio" name="ytip"
value="dizel">Dizel
<input type="radio" name="ytip" value="lpg">LPG
</td>
</tr>
<tr>
<td bgcolor="#FFFFCC">Donanım :</td>
<td bgcolor="#33FFFF">
<input type="checkbox" name="klima">Klima
<input type="checkbox" name="cdcalar">CD Çalar
<input type="checkbox" name="sunroof">SunRoof
</td>
</tr>
<tr>

PHP Programlama - 3. Bölüm 103


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
İkinci El Otomobil Satışı Devamı

<td bgcolor="#FFFFCC">Fiyat :</td>


<td bgcolor="#33FFFF"><input size="20" type="text"
name="fiyat"></td>
</tr>
<tr>
<td colspan="2" bgcolor="#FFCC99"><input
name="dugme" type="submit" value="KAYDET"></td>
</tr>
</table>
</form>

<?php
if(isset($_POST["dugme"])){
if (sqlConnect()){
echo "<p>Bağlantı Kuruldu...";
$renk = $_POST['renk'];
$marka = $_POST['marka'];
PHP Programlama - 3. Bölüm 104
Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
İkinci El Otomobil Satışı Devamı

$model = $_POST['marka'];
$yil = (int)$_POST['yil'];
$ytip = $_POST['ytip'];
$klima = $_POST['klima'];
$cdcalar = $_POST['cdcalar'];
$sunroof = $_POST['sunroof'];
$fiyat = (double)$_POST['fiyat'];
if (mysql_query("INSERT INTO
otomobil_bilgileri (marka, model, renk, yil, ytip,
klima, cdcalar, sunroof, fiyat) VALUES ('$marka',
'$model', '$renk' , $yil , '$ytip' , '$klima' ,
'$cdcalar' , '$sunroof' , $fiyat)"))
{
echo "<p>Bilgiler veritabanına
eklenmiştir...";
}

PHP Programlama - 3. Bölüm 105


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
İkinci El Otomobil Satışı Devamı

else
{ echo "Bilgiler eklenemedi...";}
}
else
{
echo "Bağlantı Kurulamadı...";
}
}
?>

PHP Programlama - 3. Bölüm 106


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
Öğrenci Bilgileri Girişi
Bu uygulamada, MySQL veritabanını
kullanan bir öğrenci bilgileri girişi
uygulaması geliştirilmiştir. Uygulamada
ayrıca, veritabanı-bağlantılı sayfa tazeleme
tekniği de kullanılmıştır.

PHP Programlama - 3. Bölüm 107


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
Öğrenci Bilgileri Girişi
<?php
// Kullanılan Veritabanı (ogrenci)
// Tablolar:
// ogrtablo (ogrno(*), ad, soyad, gyil, fkod,
bkod, bsira)
// fakulte_bolum (kayit_no(*), f_kod, f_ad, b_kod,
b_ad)
?>
<body>
<SCRIPT LANGUAGE="JavaScript">
function frmYenile()
{
document.ogr.method='POST';
document.ogr.submit();
}
</SCRIPT>

PHP Programlama - 3. Bölüm 108


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
Öğrenci Bilgileri Girişi Devamı
<form name="ogr" action="" method="post">
<p>Adı : <?php echo "<input size=\"20\"
type=\"text\" name=\"ad\"
value=\"$_POST[ad]\"></p>"; ?>
<p>Soyadı : <?php echo "<input size=\"20\"
type=\"text\" name=\"soyad\"
value=\"$_POST[soyad]\"></p>"; ?>
<p>Giriş Yılı : <?php echo "<input size=\"4\"
type=\"text\" name=\"gyil\"
value=\"$_POST[gyil]\"></p>"; ?>
<p>Fakülte : <select size="1" name="fk_ad"
onchange="frmYenile();">
<?php
sqlConnect();
if
(isset($_POST['fk_ad'])){

PHP Programlama - 3. Bölüm 109


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
Öğrenci Bilgileri Girişi Devamı
$sonuc =
mysql_query("SELECT f_ad FROM fakulte_bolum WHERE
f_kod=".$_POST['fk_ad']);
while
($row=mysql_fetch_array($sonuc))
{
$fakulte_adi =
$row['f_ad'];
}
echo "<option
value=\"$_POST[fk_ad]\"
selected=\"selected\">$fakulte_adi</option>";
$sonuclar =
mysql_query("SELECT f_kod,f_ad FROM fakulte_bolum
WHERE f_kod<>".$_POST['fk_ad']." GROUP BY f_ad");
$secenekler="";

PHP Programlama - 3. Bölüm 110


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
Öğrenci Bilgileri Girişi Devamı
while
($row=mysql_fetch_array($sonuclar))
{
$secenekler
.= "<option
value=".$row['f_kod'].">".$row['f_ad']."</option>\
n";
}
}
else
{
$sonuclar
= mysql_query("SELECT f_kod,f_ad FROM
fakulte_bolum GROUP BY f_ad");

$secenekler="<option value=\"-1\"
selected=\"selected\">Seçiniz</option>“;
PHP Programlama - 3. Bölüm 111
Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
Öğrenci Bilgileri Girişi Devamı
while
($row=mysql_fetch_array($sonuclar))
{

$secenekler .= "<option
value=".$row['f_kod'].">".$row['f_ad']."</option>\
n";
}
}
echo
($secenekler);
?>
</select>

<p>Bölüm : <select size="1" name="bkod">


<option value="-1"
selected="selected">Seçiniz</option>
PHP Programlama - 3. Bölüm 112
Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
Öğrenci Bilgileri Girişi Devamı
<?php
$sonuclar =
mysql_query("SELECT b_kod,b_ad FROM fakulte_bolum
WHERE f_kod=".(int)$_POST['fk_ad']);

$secenekler="";
while
($row=mysql_fetch_array($sonuclar))
{
$secenekler
.= "<option
value=".(string)$row['b_kod'].">".(string)$row['b_
ad']."</option>\n";
}
echo
($secenekler); ?> </select>

PHP Programlama - 3. Bölüm 113


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
Öğrenci Bilgileri Girişi Devamı
<p><input name="dugme" type="submit"
value="Veritabanına Ekle"></p>
</form>
<?php
function sqlConnect(){
$snc1 = mysql_connect("localhost","root","");
$snc2 = mysql_select_db("ogrenci");
mysql_query("SET NAMES 'latin5'"); // Türkçe
harfleri içeren karakter setine geçiliyor.
$sncDeger = $snc1 and $snc2;
return $sncDeger;}

function siraNoAl($fkod,$bkod,$gyil){
$sonuc = mysql_query("SELECT bsira FROM
ogrtablo WHERE fkod=".$fkod." AND bkod=".$bkod."
AND gyil=".$gyil." ORDER BY bsira DESC");

PHP Programlama - 3. Bölüm 114


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
Öğrenci Bilgileri Girişi Devamı
if (mysql_num_rows($sonuc)==0) {
return 1;}
else {
$sonuc=mysql_fetch_array($sonuc);
return (int)$sonuc['bsira']+1; } }
function ogrenciNoOlustur($g,$f,$b,$s){
switch (strlen($s)){
case 1:
$sira="00".$s;
break;
case 2:
$sira="0".$s;
break;
case 3:
$sira=$s;
break; }

PHP Programlama - 3. Bölüm 115


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
Öğrenci Bilgileri Girişi Devamı
switch (strlen($f)){
case 1:
$fk="0".$f;
break;
case 2:
$fk=$f;
break; }
switch (strlen($b)){
case 1:
$bk="0".$b;
break;
case 2:
$bk=$b;
break; }
return substr($g,2,2).$fk.$bk.$sira; }
if(isset($_POST["dugme"])){

PHP Programlama - 3. Bölüm 116


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
Öğrenci Bilgileri Girişi Devamı
if (sqlConnect()){
$ad = $_POST['ad'];
$soyad = $_POST['soyad'];
$gyil = $_POST['gyil'];
$fkod = $_POST['fk_ad'];
$bkod = $_POST['bkod'];
$bsira = siraNoAl($fkod,$bkod,$gyil);
$ogrno =
ogrenciNoOlustur($gyil,$fkod,$bkod,$bsira);
echo "<p>Öğrenci numarası oluşturuldu:
"; echo $ogrno;
mysql_query("INSERT INTO ogrtablo
(ogrno, ad, soyad, gyil, fkod, bkod, bsira) VALUES
('$ogrno', '$ad', '$soyad' ,'$gyil', '$fkod',
'$bkod', '$bsira')");

PHP Programlama - 3. Bölüm 117


Tolga GÜYER
Öğrendiklerimizi Uygulayalım:
Öğrenci Bilgileri Girişi Devamı
echo "<p>Bilgiler veritabanına
eklenmiştir...";
}
else
{
echo "Bağlantı Kurulamadı...";
}
}
?>

PHP Programlama - 3. Bölüm 118


Tolga GÜYER

You might also like