PHP Programlama

Transkript

PHP Programlama
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
Tolga GÜYER
2
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
Tolga GÜYER
3
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
Tolga GÜYER
4
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
Tolga GÜYER
5
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
Tolga GÜYER
6
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
Tolga GÜYER
7
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ı
kullanan köşe yazarı
Erkek
2
Nilay
Ulusoy
Son ütücü
Kadın
3
Hüseyin Korkmaz Kaplumbağa terbiyecisi
PHP Programlama - 3. Bölüm
Tolga GÜYER
Erkek
8
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
Tolga GÜYER
9
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
Tolga GÜYER
10
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
Tolga GÜYER
11
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
Tolga GÜYER
12
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
Tolga GÜYER
13
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
Tolga GÜYER
14
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
Tolga GÜYER
15
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
Tolga GÜYER
16
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
Tolga GÜYER
17
MySQL Veritabanının Yönetimi
Veritabanı Tanımlama
PHP Programlama - 3. Bölüm
Tolga GÜYER
18
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
Tolga GÜYER
19
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
Tolga GÜYER
20
MySQL Veritabanının Yönetimi
Tablo Oluşturma
PHP Programlama - 3. Bölüm
Tolga GÜYER
21
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
Tolga GÜYER
22
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
Tolga GÜYER
23
MySQL Veritabanının Yönetimi
Alanların Özellikleri
PHP Programlama - 3. Bölüm
Tolga GÜYER
24
MySQL Veritabanının Yönetimi
PHP Programlama - 3. Bölüm
Tolga GÜYER
25
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
Tolga GÜYER
26
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
Tolga GÜYER
27
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
Tolga GÜYER
28
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
Tolga GÜYER
29
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
Tolga GÜYER
30
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
Tolga GÜYER
31
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
Tolga GÜYER
32
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
Tolga GÜYER
33
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
Tolga GÜYER
34
PHP & MySQL
Devamı
if (sqlConnect())
{
echo "Bağlantı kuruldu ve veritabanı
seçildi.";
}
else
{
echo "Sorun var!";
}
?>
PHP Programlama - 3. Bölüm
Tolga GÜYER
35
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
Tolga GÜYER
36
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
Tolga GÜYER
37
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
Tolga GÜYER
38
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
Tolga GÜYER
39
PHP & MySQL
•
•
•
•
Kaydetme
Arama
Güncelleme
Silme
şeklinde sıralanabilir.
PHP Programlama - 3. Bölüm
Tolga GÜYER
40
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
Tolga GÜYER
41
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
Tolga GÜYER
42
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
Tolga GÜYER
43
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
Tolga GÜYER
44
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
Tolga GÜYER
45
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' ,
'[email protected]')");
?>
PHP Programlama - 3. Bölüm
Tolga GÜYER
46
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
Tolga GÜYER
47
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
Tolga GÜYER
…
…
48
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
Tolga GÜYER
49
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
Tolga GÜYER
50
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
Tolga GÜYER
51
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
Tolga GÜYER
52
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
Tolga GÜYER
53
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
Tolga GÜYER
54
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
Tolga GÜYER
55
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
Tolga GÜYER
56
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
Tolga GÜYER
57
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
Tolga GÜYER
58
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
Tolga GÜYER
59
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
Tolga GÜYER
60
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
Tolga GÜYER
61
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
Tolga GÜYER
62
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
Tolga GÜYER
63
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
Tolga GÜYER
64
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
Tolga GÜYER
65
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
Tolga GÜYER
66
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
Tolga GÜYER
67
PHP & MySQL
Bu defaki örneğimizde, tablomuzdaki
verileri öğrenci adına göre artan sırada
listeleyelim.
PHP Programlama - 3. Bölüm
Tolga GÜYER
68
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
Tolga GÜYER
69
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
Tolga GÜYER
70
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
Tolga GÜYER
71
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
Tolga GÜYER
72
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
Tolga GÜYER
73
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
Tolga GÜYER
74
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
Tolga GÜYER
75
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
Tolga GÜYER
76
PHP & MySQL
MySQL Fonksiyonları
Fonksiyon
mysql_affected_rows()
İşlevi
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
Tolga GÜYER
77
PHP & MySQL
MySQL Fonksiyonları
Fonksiyon
mysql_db_name()
İşlevi
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
Tolga GÜYER
78
PHP & MySQL
MySQL Fonksiyonları
Fonksiyon
mysql_fetch_array()
İşlevi
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
Tolga GÜYER
79
PHP & MySQL
MySQL Fonksiyonları
Fonksiyon
mysql_field_flags()
İşlevi
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
Tolga GÜYER
80
PHP & MySQL
MySQL Fonksiyonları
Fonksiyon
mysql_field_type()
İşlevi
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
Tolga GÜYER
81
PHP & MySQL
MySQL Fonksiyonları
Fonksiyon
mysql_list_dbs()
İşlevi
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
Tolga GÜYER
82
PHP & MySQL
MySQL Fonksiyonları
Fonksiyon
mysql_pconnect()
İşlevi
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
Tolga GÜYER
83
PHP & MySQL
MySQL Fonksiyonları
Fonksiyon
mysql_stat()
İşlevi
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
Tolga GÜYER
84
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
Tolga GÜYER
85
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
Tolga GÜYER
86
PHP & MySQL
Bu kesimde, sayfa tazeleme için bir
Javascript kodunun kullanılacağı sayfaveritabanı 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
Tolga GÜYER
87
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
Tolga GÜYER
88
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
Tolga GÜYER
89
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
Tolga GÜYER
90
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
Tolga GÜYER
91
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
Tolga GÜYER
92
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
Tolga GÜYER
93
Öğ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
Tolga GÜYER
94
Öğ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
Tolga GÜYER
95
Öğ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
Tolga GÜYER
96
Öğ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
Tolga GÜYER
97
Öğ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
Tolga GÜYER
98
Öğ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
Tolga GÜYER
99
Öğ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
Tolga GÜYER
100
Öğ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
Tolga GÜYER
101
Öğ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
Tolga GÜYER
102
Öğ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
Tolga GÜYER
103
Öğ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
Tolga GÜYER
104
Öğ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
Tolga GÜYER
105
Öğrendiklerimizi Uygulayalım:
İkinci El Otomobil Satışı
Devamı
else
{ echo "Bilgiler eklenemedi...";}
}
else
{
echo "Bağlantı Kurulamadı...";
}
}
?>
PHP Programlama - 3. Bölüm
Tolga GÜYER
106
Öğ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
Tolga GÜYER
107
Öğ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
Tolga GÜYER
108
Öğ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
Tolga GÜYER
109
Öğ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
Tolga GÜYER
110
Öğ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
Tolga GÜYER
111
Öğ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
Tolga GÜYER
112
Öğ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
Tolga GÜYER
113
Öğ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
Tolga GÜYER
114
Öğ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
Tolga GÜYER
115
Öğ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
Tolga GÜYER
116
Öğ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
Tolga GÜYER
117
Öğ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
Tolga GÜYER
118

Benzer belgeler

PHP`de MySQL kullanımı ve temel işlemler

PHP`de MySQL kullanımı ve temel işlemler SQL sorguları genelde bazı kalıplardan oluşur. Belirli bir sorguyu filtrelemek için WHERE kalıbını kullanırız. Aynı if gibidir. Belirli bir sorgudan etkilenecek olan kayıtlardan bazılarını seçeriz....

Detaylı