PHP Programlama 3. Bölüm. Tolga GÜYER 2009-2010



Benzer belgeler
PHP ile İnternet Programlama

Php Programlama Dili MySQL Uygulamaları

PHP ile İnternet Programlama

Php İle Mysql Veritabanından Bilgi Çekme

SQL e Giriş. Uzm. Murat YAZICI

İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI

Bölüm 4: DDL Veri Tanımlama Dili

VERİTABANI. SQL (Structured Query Language)

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

Bölüm 10: PHP ile Veritabanı Uygulamaları

PHP ile İnternet Programlama

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

SQL Komutları (2) Uzm. Murat YAZICI

Tablolar Arası İlşikiler ve Alan Özellikleri Siparis.musteri_no musteri.musteri_no Siparis.urun_kodu musteri.urun_kodu

VERİTABANI Veritabanı Yönetimi

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

PHP ile İnternet Programlama

Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz.

Veritabanı. SQL (Structured Query Language)

MOBİL UYGULAMA GELİŞTİRME

SORGULAR. Öğr.Gör.Volkan Altıntaş

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.

Veri Tabanı Tasarım ve Yönetimi

İnternet Programcılığı

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

UZAKTAN EĞİTİM MERKEZİ

Çok tablolu sorgulamalar

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.


Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Veri Tabanı-I 1.Hafta

Tablolar Arası İlşikiler ve Alan Özellikleri. Şekil 1. Magaza veritabanının tabloları ve tablolar arasındaki ilişkiler

Üst Düzey Programlama

1 Temel Kavramlar. Veritabanı 1

ACCESS PLATFORMUNDA SQL

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

Mikro Ayarları. Mikro Programının kurulu olduğu veritabanı ve web servisi için bağlantı ayarlarının yapıldığı menüdür.

SQL'e Giriş. SELECT Deyimi. SQL Komutları. Yardımcı Deyimler

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

İNTERNET PROGRAMCILIĞI HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir.

SQL (Structured Query Language)

Microsoft SQL Server 2008 Oracle Mysql (Ücretsiz) (Uygulamalarımızda bunu kullanacağız) Access

Veritabanı Uygulamaları Tasarımı

1. Hafta MS SQL Server 2008 Kurulum ve Tanıtımı BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: Kurulum:

10-Veri Tabanları.

İNTERNET PROGRAMCILIĞI DERSİ

Bölüm 1: Veritabanı Yönetim Sistemlerine Giriş

VERİ TABANI YÖNETİM SİSTEMLERİ I

PHP ile İnternet Programlama

JavaScript Örnekleri PDF

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Ara Öğr. Gör. Murat KEÇECĠOĞLU

Vega Ayarları. Vega Programının kurulu olduğu veritabanı ve web servisi için bağlantı ayarlarının yapıldığı menüdür.

Üst Düzey Programlama

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.

Öğr. Gör. Serkan AKSU 1

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

SQL Uyarı Programı Kurulum ve Kullanımı

VERİ TABANI YÖNETİM SİSTEMLERİ

Veri Tabanı-I 1.Hafta

Veri Tabanı Yönetim Sistemleri Bölüm - 3

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301)

Oracle da kullanılan veri tipleri:

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

PHP kodları çoğu zaman HTML kodları arasına gömülü olarak yazıldığından öncesinde HTML kodlarınının bilinmesinde fayda vardır.

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

SQL Query and Table Application

1.PROGRAMLAMAYA GİRİŞ

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

Oracle Database 11g: Introduction to SQL

ÖĞRENME-ÖĞRETME YÖNTEM VE TEKNİKLERİ. gösterip yaptırma, uygulamalı çalışma. Anlatım, soru-cevap, gösterip yaptırma, uygulamalı çalışma.

TEMEL SQL SORGU ÖRNEKLERİ. Yukarıdaki sorguyu yazıp çalıştırdığımızda db_market adında bir veritabanı oluşturulur.

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

08221 Veri Tabanı II. Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Hafta IV. Öğr. Gör. Murat KEÇECĠOĞLU

13 Aralık Đlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL. Đlgili Modül/ler : Raporlar. Kullanıcı Tanımlı Raporlar Bölümünden Yapabildiklerimiz

VERİTABANI ve YÖNETİMİ

VERİTABANI Veritabanı Sorgulama

İNTERNET PROGRAMCILIĞI HAFTA. MYSQL ile VERİTABANI İŞLEMLERİ - 1. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Veritabanı Oluşturma, Silme

Laboratuar Notları #5

PERKON PDKS Kurulum ve hızlı başlangıç rehberi

Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

ELIF KIOTZEOGLOU RESUL MURAD MERT PACOLARI

SELÇUK ÜNİVERSİTESİ BOZKIR MESLEK YÜKSEKOKULU VERİTABANI-II DERSİ FİNAL SINAVI

Basit SQL Sorguları Veritabanından verilerin SELECT cümleleri ile alınması işlemine sorgulama denir.

1. VERİ TABANI KAVRAMLARI VE VERİ TABANI OLUŞTUMA

SQL'e Giriş. SELECT Deyimi. SQL Komutları. 1. DDL (Data Definition Language - Veri Tanımlama Dili)

BİL Bilişim Teknolojileri. Access

WEB PROGRAMLAMA. PHP Temelleri 2. Dr. Erman Yukselturk

3. Hafta Tablo İşlemleri BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri Kısıtlamalar (Constraints)

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011

YEDEKLEME PROGRAMI KURULUM VE KULLANIMI

Transkript:

PHP Programlama 3. Bölüm 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 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. 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. 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. 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. 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. 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 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. 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. 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. 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. 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. 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. 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. 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. 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. 17

MySQL Veritabanının Yönetimi Veritabanı Tanımlama 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. 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. 20

MySQL Veritabanının Yönetimi Tablo Oluşturma 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. 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. 23

MySQL Veritabanının Yönetimi Alanların Özellikleri 24

MySQL Veritabanının Yönetimi 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. 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. 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. 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. 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. 30

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. 31

<?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!"; }?> 32

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. 33

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; } 34

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

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. 36

Örneğin; <?php require("tanimlar.php"); require("fonksiyonlar.php"); sqlconnect();?> kodunun çalışabilmesi için sistemde, ve, <?php define("myserver","localhost"); define("mydatabase","basvuru"); define("myuser","root"); define("mypassword","");?> 37

<?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. 38

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 39

Kaydetme Arama Güncelleme Silme şeklinde sıralanabilir. 40

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. 41

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

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>) 43

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. 44

ogrenci1 adlı, aşağıdaki yapıda tanımlanmış bir veritabanımızın bulunduğunu varsayalım: sirano ad soyad eposta 1 2 45

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')");?> 46

Programda, veritabanına sabit veriler aktarılmaktadır. Bunun yerine kullanıcı tarafından girilecek verilerin girilmesini sağlayabilir misiniz? 47

Ş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 48

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. 49

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. 50

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. 51

<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> 52

<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 & Kaydet"></td></tr> </table> </form> Devamı 53

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;} 54

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); Devamı 55

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... ;} }?> 56

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ı> 57

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. 58

Bir önceki örneğimizde kullandığımız ogrenci2 veritabanındaki kayıtları okuyarak ekranda listeleyecek bir örnek uygulama geliştirelim. 59

<?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>"; } }?> 60

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. 61

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. 62

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. 63

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. 64

<?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>"; } }?> 65

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. 66

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. 67

Bu defaki örneğimizde, tablomuzdaki verileri öğrenci adına göre artan sırada listeleyelim. 68

<?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>"; } }?> 69

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> 70

Bu durumda, koşul cümlemizi sağlayan kayıt kümesindeki alanlar üzerinde güncelleme işlemi gerçekleştirilecektir. 71

<?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. 72

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> 73

Bu durumda, kayıt kümesinde koşul cümlemizi sağlayan alanları içeren satırlar tablomuzdan silineceklerdir. 74

<?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. 75

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. 76

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

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

Fonksiyon mysql_fetch_array() mysql_fetch_assoc() mysql_fetch_field() mysql_fetch_lengths() mysql_fetch_object() mysql_fetch_row() MySQL Fonksiyonları İşlevi Kayıt kümesinden bir satırı ilişkilendirilmiş ve/veya sayısal bir dizi olarak gönderir Kayıt kümesinden bir satırı ilişkilendirilmiş bir dizi olarak gönderir Kayıt kümesinden bir alan bilgisini nesne olarak gönderir Sonuç satırındaki her alanın içerik uzunluklarını gönderir Kayıt kümesinden bir satırı nesne olarak gönderir Kayıt kümesinden bir satırı sayısal bir dizi olarak gönderir 79

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

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

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

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

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

Veritabanı-bağlantılı Sayfa Tazeleme Sayfamız üzerinde yer alan nesnelerin, veritabanından gelen bilgiler kullanılarak doldurulması işlemine verilen addır. 85

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. 86

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. 87

<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. 88

<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>"; 89

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> Devamı 90

Ö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. 91

İ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. 92

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. 93

Öğrendiklerimizi Uygulayalım: İkinci El Otomobil Satışı Şimdi, MySQL veritabanını kullanan bir ikinci el otomobil satış uygulaması geliştireceğiz. 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; }?> 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();"> 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>"; 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"); 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> 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);?> 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> 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"> 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> 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']; 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..."; } 105

Öğrendiklerimizi Uygulayalım: İkinci El Otomobil Satışı Devamı else { echo "Bilgiler eklenemedi...";} } else { echo "Bağlantı Kurulamadı..."; } }?> 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. 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> 108

Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi <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'])){ Devamı 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=""; 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> ; 111

Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi ($row=mysql_fetch_array($sonuclar)) while { Devamı $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> 112

Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi <?php $sonuclar = mysql_query("select b_kod,b_ad FROM fakulte_bolum WHERE f_kod=".(int)$_post['fk_ad']); Devamı $secenekler=""; while ($row=mysql_fetch_array($sonuclar)) { $secenekler.= "<option value=".(string)$row['b_kod'].">".(string)$row['b_ ad']."</option>\n"; } echo ($secenekler);?> </select> 113

Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi <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"); Devamı 114

Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi 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; } Devamı 115

Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi 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"])){ Devamı 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')"); 117

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