1 ACCESS

Transkript

1 ACCESS
ACCESS
Access Bileşenleri
Tables (tablolar)
iş ya da kuruluşunuzun belirli bölümleri ile ilgili bilgilerin depolandığı yer
Queries (sorgular)
bir veritabanında belirli bir bilgiyi bulmak için sorulan soru
Forms (formlar)
tablolara bilgi girişini kolaylaştıran, kullanıcıyı yönlendiren ve hataları denetleyen yer
Reports (raporlar)
istenen bilgilerin belirli bir düzende görüntülendiği yer
Macros (makrolar)
bir dizi Access komutunu otomatik olarak uygulama imkanı sağlar (komutları düğmelerle ilişkilendirme vb.)
Modules (modüller)
Access komut ve makrolarını genişletme ve Microsoft Visual Basic ve diğer Microsoft Office programları ile birleştirme imkanı
sağlar
Field Size (Alan Boyutu)
veri uzunluğuna bir sınır getirilmesine yarar
Format (Biçim)
özel işaretler yardımı ile verinin görünüm biçimini değiştirir
(![renk] renk değişikliği, ! verinin sola yaslanması, * verinin
sağa yaslanması, < verinin küçük harflere dönüştürülmesi, >
verinin büyük harflere dönüştürülmesi)
Input Mask (Giriş Maskesi)
seçili olan alanda veri girişi esnasında kullanıcıyı kısıtlar
(Örn. L0L 0L0 için L harfi A'dan Z'ye herhangi bir harfi 0 ise
0'dan 9'a herhangi bir sayı anlamındadır)
Caption (Resim Yazısı)
sütun başlığı yazılır (bu kısım boş ise sütun başlığı olarak
Field Name görünür)
Default Value (Varsayılan Değer)
seçili alana, kayıt girilirken buraya girilen değer kendiliğinden
yazılır (Örn. Telefon Şehir Kodu ile ilgili alan için 0312
Default Value olarak verilebilir, kullanıcı isterse değişiklik de
yapabilir)
Validation Rule (Geçerlilik Kuralı)
sayısal verinin belirli bir özellikte olması şartı ile veri girişi
denetimi sağlanır. (Örn. > 1000)
Validation Text (Geçerlilik Metni)
Validation Rule belirlendiğinde, kullanıcının aykırı bir veri
girişinde bulunduğu zaman karşılaşacağı hata mesajıdır ( Örn.
Girilecek değer 1000 den büyük olmalıdır)
Required (Gerekli)
veri girme zorunluluğu olan alan için YES tersi durum için ise
NO tanımlanır
Allow Zero Length (Sıfır Uzunluk İzni)
Data Type özelliği Text olan alanlarda sıfır uzunluklu metin
girişine izin vermek için YES, tersi durum için ise NO
tanımlanır
1
tablodaki kayıtların seçili alana göre sıralanmasını sağlar.
Bunun için Yes (Duplicates OK) seçilirse indexlenmiş alana
aynı veri birden fazla girilemez iken, Yes ( No Duplicates)
seçilirse bu kısıt ortadan kalkar ve alan sadece indexlenmiş
olur (Data Type özelliği Memo, Hyperlink ve OLE Object
olan alanlar indexlenemez)
Indexed (Sıralı)
Text
Memo
Number
Date/Time
Currency
AutoNumber
alfabetik ya da alfanümerik veriler (maks. 255 karak.)
açıklama,not ve düşünceler (32.000 karak.)
sayısal alanlar (alt / üst değeri Field Properties'de bulunan Field Size'da
tanımlanan değere bağlıdır)
tarih ve saat (8 bytelık yer tutar)
borç, alacak, maaş vb. (8 bytelık yer tutar)
otomatik veriler (Örn. Microsoft Access'in her öğrenciye özel bir kod
vermesi sağlanır) (4 bytelık yer tutar)
Yes/No
küçük mü büyük mü?, kısa mı uzun mu? 8(1-2 bytelık yer tutar)
OLE Object
resim, ses kayıtları veya çizimler gibi nesneler için kullanılır
Hyperlink
Lookup Wizard...
Alan Türleri
metin ya da metin ve numara kombinasyonundan oluşmuş köprü (2048
karak.)
başka bir tablodaki (ya da list box veya combo box kullanarak değerler
listesinden) bir değeri seçilen alanda kullanabilme imkanı tanır (tipik olarak
4 bytelık yer tutar)
VERİ TABANI VE HESAPLAMA - EXCEL
EĞER:
Bir mantıksal sınama sonucunda; mantıksal sınamanın doğru olması durumunda hücreye bir değer, yanlış olması durumunda bir başka
değer yazdırmak için kullanılır.
Yukarıdaki örnekte ortalaması 45 ve üzeri olan öğrenciler için sonu sütununa geçti, 44 ve altı için kaldı yazdıran formül:
=EĞER(E2>44;"geçti";"kaldı") Veya =EĞER(E3<45;"kaldı";"geçti")
EĞERSAY(aralık; ölçüt)
Bir aralık içersinde verilen ölçüte göre sayma işlemi yapan formüldür.
Yukarıdaki örnekte E2 ile E4 hücresi arasında notu 45’ten büyük olanları saymak için;
=EĞERSAY(E2:E4,">55"))
ETOPLA(aralık;ölçüt;toplam_aralığı)
Bir aralık içerisinde ölçüte uyan değerleri toplamak için kullanılan formüldür.
Yukarıdaki örnekte E2 ile E4 hücresi arasında notu 45’ten yüksek olan kişilerin sözlü notlarını toplamak için kullanılan formül;
=ETOPLA(E2:E4;">45";D2:D4)
ORTALAMA:
Belirtilen hücrelerin veya hücre aralığının ortalamasını bulur.
Yukarıdaki örnekte 1.yazılı, 2.yazılı ve sözlünün ortalamasını bulduran formül:
=ORTALAMA(B2:D2)
MAKSİMUM:
Belirtilen hücrelerden veya hücre aralığından en büyük sayıyı buldurmaya yarar.
Yukarıdaki örnekte en büyük yazılı notunu bulduran formül:
=MAK(B2:C4)
MİNUMUM:
Belirtilen hücrelerden veya hücre aralığından en küçük sayıyı buldurmaya yarar.
Yukarıdaki örnekte en düşük sözlü notunu bulduran formül:
=MİN(D2:D4)
2
DONANIM
BİLGİSAYARIN TANIMI VE TEMEL ÇALIŞMA PRENSİBİ
Bilgisayar, kullanıcı tarafından giriş birimleriyle verilen sözel ve sayısal verileri işleyerek çıkış birimleri aracılığı ile
kullanıcısına sunan elektronik aygıtların genel adıdır.
Kişisel Bilgisayarlarda Çalışma Mantığı
Bilgisayar kullanımında en önemli unsur “İNSAN”dır. Bilgisayar bildiğimiz gibi bir bilgi işleme makinesidir. Ancak kendi
başına düşünemeyeceğinden bilgiler kullanıcısı tarafından girilir. Kendisine girilen bilgileri çok hızlı bir şekilde işleyerek çıktılara
dönüştürür. Bu tanımdan bilgisayarda bilgi işlemenin giriş, işleme ve çıktı olmak üzere 3 aşamada gerçekleştiğini söyleyebiliriz.
GİRİŞ

Klavye
Fare
Optik Okuyucular
Joystick (Oyun Çubuğu)

İŞLEME
Kasa
ÇIKTI
Ekran (Monitör)
Yazıcı
BİLGİSAYARI OLUŞTURAN ÖĞELER
Bilgisayarı oluşturan öğeler genel olarak ikiye ayrılır. Bunlar; bilgisayarı oluşturan (gözle görünür) parçalar ile içersine
yüklenen programlardır. Yani bilgisayar iki bölümden oluşur:
Donanımlar: Bilgisayarı oluşturan, gözle görünür, elle tutulur bütün parçalara denir. Bunlar arasında klavye, fare, monitör, kasa,
yazıcı, tarayıcı ve kasa içersinde bulunan parçalar (işlemci, saklama birimleri, güç kaynağı, RAM hafıza çipleri, bağlantı kabloları)
bulunur.
Yazılımlar: Bilgisayar içersinde yüklenen her türlü programı ifade eder. İşletim sistemi ve uygulama yazılımları (Paint, Wordpad,
Word, Excel, Windows Gezgini... vs).
Bildiğimiz gibi donanım denince akla bilgisayarın gözle görünür elle tutulur her türlü parçası gelir. Bunun yanında kasa içersindeki
birimler donanım sınıfına girmektedir.
A. Giriş Birimleri
Bilgisayarla iletişim kurulmasını sağlayan ve istenilen bilgilerin bilgisayara girilmesini sağlayan donanımlardır.
Klavye: Bilgisayarla yazı yazmaya yarayan ve daktiloya benzeyen alettir. Yabancı diller için düzenlenmiş türüne “Q Klavye”, Türk
alfabesine göre düzenlenmiş olanına “F Klavye” denir. Klavye girişine takılır.
Fare: Bilgisayarın kolayca yönetilmesi için geliştirilmiş hemen hemen en ucuz parçasıdır. Pek çok şekli ve türü bulunan fare, basit
yapısına rağmen bugünkü bilgisayarların en önemli parçasıdır. Fare girişine takılır.
Tarayıcı: Fotoğraf, grafik, çizim, resim... gibi kağıt üzerinde yer alan bilgilerin bilgisayara girilmesinde kullanılır. Bir fotokopi
makinesi gibi çalışır.
Web Kamerası: Hareketli video görüntülerinin bilgisayara girilmesinde kullanılır. Normal bir kamera gibi çalışır.
B. Sistem Birimleri
Bilgisayara girilen bilgileri işleyen birimlerdir.
İşlemci: Bilgisayarın her türlü işlemini gerçekleştiren ve yöneten en önemli parçasıdır. Bilgisayarın hızı, işlemcinin modeli ile
doğrudan alakalıdır. Ek bilgi olarak üç bölümden oluştuğunu (Kontrol Birimi, ALU(Aritmetik ve Mantıksal işlemlerin yapıldığı
bölüm) ve Register(ön) bellek) söyleyebiliriz. Anakart üzerindeki işlemci yuvasına takılır.
RAM Bellek: Programların çalıştırılması için saklama birimlerinden çağırılıp yüklendiği bilgisayarın çalışma hafızasıdır. Ne kadar
büyük olursa bilgisayar o kadar rahat çalışacaktır. Anakartta RAM yuvalarına takılır. Geçici hafıza birimidir.
Güç Kaynağı: Kasa içersinde bilgisayara şebekeden gelen elektriği gerekli birimlere dağıtan birimdir ve satın alınan boş kasa ile
birlikte gelir. Buradaki bir arıza yada kısa devre bilgisayarda ciddi hasarlara neden olabilir.
PORT’lar: Bilgisayara dışardan takılan cihazlar için kasada bulunan girişlerdir. LPT, COM ve USB türleri mevcuttur. LPT(Parelel)
genellikle Yazıcı ve tarayıcı için (ayrıca laplink bağlantısı ile başka bilgisayarlara bağlanmak için); COM(Seri) Modem gibi iletişim
cihazları için kullanılır. USB ise yeni bir teknolojidir ve web kameraları ile özel modemlerin bağlantısı için kullanılır.
Sistem Kartları: Her biri özel bir amaç için üretilmiştir. Kasa içersindeki anakarta takılırlar.
Ekran Kartı: Sistemden aldığı sinyalleri alıp görüntüye dönüştürerek monitöre ileten karttır. Normalde anakarta takıldığı halde bazı
sistemlerde anakart üzerinde bir çip olarak yer alabilmektedir.
Ses Kartı: Sistemden aldığı sinyalleri sese dönüştürerek hoparlöre ileten, yada dışardan gelen sesleri bilgisayarın anlayabileceği hale
getiren karttır. Normalde anakarta takıldığı halde bazı sistemlerde anakart üzerinde bir çip olarak yer alabilmektedir.
Ethernet Kartı: Yerel ağ (birbirine yakın olan bilgisayarlarla kurulan ağ) üzerindeki bilgisayarların birbiri ile haberleşebilmesini
sağlar.
3
Faks / Modem Kartı: Bilgisayarın telefon hattı üzerinden başka bilgisayarlarla yada faks makineleriyle haberleşmesini ve bilgi
alışverişinde bulunabilmesini sağlayan özel bir karttır. Bilgisayarın içersinden anakarta takılan (Internal) modelleri yaygındır. Ancak
dıştan (External) kablo ile bağlanan modemler daha verimli ve hızlıdır. Temel çalışma mantığı bilgisayardan aldığı bilgileri telefon
hattı üzerinden geçebilecek şekilde kodlayarak paketlemek, yada telefon hattı üzerinden paketlenmiş olarak gelen bilgileri
bilgisayarda kullanılabilir verilere çevirmektir.
Kablolar: Kasa içersinde ve dışında yer alan donanımları birbirine bağlamak için kullanılır.
D. Saklama Birimleri
Bilgisayarların belkide en kullanışlı özelliği üretilen bir bilgiyi saklayabilmesidir. Bunun için kullandığı birimlere saklama birimleri
denir. Manyetik yapılılar; sabit disk, disket ve ZIP sürücüler, optik yapılılar CD sürücülerdir.
Sabit Disk: Bilgisayarın merkez saklama birimidir ve en yüksek saklama kapasitesine sahiptir. İç yapısı üst üste dizili manyetik
diskler şeklindedir. Her bir manyetik disk izlerden ve sektörlerden oluşur. Sabit disk içersinde her bir disk başına 2 tane okuma kafası
(iğne) düşmektedir. Kasa içersinde yer alır ve anakarttaki “Primary Master” portuna bağlanır.
Disket: Saklama kapasitesi oldukça düşüktür (1.44 MB) ve çok yavaş çalışır. Ancak küçük dosyaları bir bilgisayardan diğer bir
bilgisayara taşımak için kullanılır. 3.5” lik Floppy Diskler ve disket sürücüleri şimdilik bütün bilgisayarlarda standarttır.
CD Sürücüler (CD – ROM / CD – RW / DVD): Saklama kapasitesi standart 650 – 700 MB arasında olan oldukça kullanışlı saklama
birimleridir. CD – ROM sürücü yalnızca CD’lerde kayıtlı hazır bilgileri okur. Ancak bir CD – RW (Writer) Kayıt cihazınız varsa
bilgisayarınızdaki her türlü veriyi CD’ye kaydederek saklamanız mümkündür. CD Kaydedici cihazlar her türlü CD yapabilir ve
çoğaltabilir. DVD sürücüler ise yeni bir teknolojidir. Genellikle film CD’si amaçlı olarak kullanılan DVD, ekranda oynamakta olan
filmin sesinin, dilinin, altyazısının ve hatta kamera açısının değiştirilebileceği, yeni yaygınlaşan üstün bir saklama birimi türüdür.
Sıkıştırması ile 8 saatlik bir filmin tek bir CD’de toplanabilmesine olanak verir.
YAZILIMLAR
Bilgisayara yüklenen her türlü programa yazılım denir. Virüslerde yazılımdır. Bazı yazılımlar olmadan bilgisayar donanımları hiçbir
işe yaramaz.
A. Sistem Yazılımları
Temelde bilgisayarı çalıştıran ve donanımların birbirleriyle haberleşmesini sağlayan yazılımlardır. Bunlar tür yazılımlar olmadan
bilgisayarı çalıştırabilmek mümkün değildir.
BIOS: Anakartta bir çipte yüklü olan küçük bir programdır, ancak bilgisayarın çalışmasında önemli bir rol üstlenir. Bilgisayarın
açılışında çalışma ortamlarını ve bilgisayarı testten
geçirir. Kendisine
daha önceden yapılmış olan ayarlar doğrultusunda
bilgisayarın
Award Modular BIOS v.4.23
donanımlarını testten geçirir. Bilgisayarın kontrolü için
gerekli olan giriş
Intel Pentium IV CPU found
birimlerinin (klavye ve farenin) bağlı olup olmadığını,
sistemde ne kadar
CPU Clock at 1400 Mhz
RAM olduğunu, RAM’lerin sağlam olup olmadığını
kontrol eder. Daha
RAM Test: 256 MB OK
sonra ise saklama birimlerini algılayarak işletim
sistemi bilgilerini
Detecting IDE Drives:
nereden alacağını denetleyen BIOS, eğer bir sorunla
karşılaşırsa hemen
Primary Master:
Quantum Bigfoot
kullanıcıyı uyararak gerekli düzeltmelerin yapılmasını
ister. Daha sonra
Secondary Master: Not Found
kendisine kaydedilmiş olan sıra ile saklama
birimlerinde
Primary Slave:
Creative CD – 52X
işletim sistemini arar bulur ve yükleyerek bilgisayarı
çalışır
duruma
Secondary Slave: Yamaha CD-RW 8824
getirir. (Ayarlar değiştirilmediği takdirde BIOS, işletim
sistemini sırası ile
önce diskette, sonra sabit diskte, en son olarakta CDROM’da arar)...
SYSTEM TEST OK.
Sürücüler: Bir anlamda donanımların kendilerini
işletim sistemine
Windows 98 Başlıyor...
tanıtmak için kullandıkları kimlikleridir diyebiliriz. Her
donanımın
kendisini Windows ortamında çalıştırabilmek için
Windows altındaki
“Drivers” klasörüne kopyalamak zorunda olduğu
sürücüleri vardır.
Bu sürücüler ilgili donanımın kutusunun içindeki bir
Disket veya CD
içersinden bilgisayara yüklenir. Sürücüler yüklenmezse o donanım çalışmaz. Örneğin yeni aldığınız bir ses kartını bilgisayarınıza
taktığınızda Windows bu donanımı tanımıyorsa, aldığınız ses kartı ile birlikte gelen sürüleri bilgisayarınıza yüklemek zorundasınız.
İŞLETİM SİSTEMLERİNİN KURULUMU
İşletim sistemlerini kurulmadan önce sabit disk bölümleme işlemleri yapılır,biçimlendirilir ve işletim sistemi bilgisayara
kurulur.Diski bölümleme işlemlerini FDISK,biçimlendirme işlemlerini yapan komut FORMATTIR.
FDISK(Bölümleme):Sabit diskin bölümlere ayrılarak kullanılmasını sağlayan MS-DOS ortamında çalışan bir komuttur.Bölümleme
işlemi sabit diskte birden fazla işletim sistemi kullanımı ,belgelerin ,programların,yazılımların,dosyaların düzenli bir şekilde
kullanımını sağlar.Bölümleme esnasında işletim sistemi ile depolama birimlerinin anlaşmasını sağlayan dosya sistemleri seçilir.
Dosyalama sistemleri FAT 16, FAT 32 ve NTFS dir.DOS ve WINDOWS 95 te FAT 16 ,WINDOWS 98 de FAT 32 ,WINDOWS XP
de NTFS KULLANILIR.
FORMAT(Biçimlendirme):Fdisk ile bölümlenmiş sabit diskleri ,bölümlenmemiş sabit diskleri biçimlendirmek için kullanılan MSDOS ortamında çalışan bir komuttur.Format komutu ile biçimlendirilen disklerdeki tüm bilgiler tamamen silinir.
Tüm bu işlemler yapıldıktan sonra işletim sistemi kurulum cd si CD-ROOM sürücüye yerleştirilip cd içerisinden SETUP.EXE dosyası
çalıştırılır ve kurulum başlatılır.
4
AĞ TEMELLERİ
İki yada daha çok bilgisayarın bir birine bağlanmasına bilgisayar ağı (network) denir. Ağ içindeki bilgisayarlar birbiriyle
iletişim kurabilirler ve veri paylaşırlar.
LAN (Local Area Network)
Belli sayıda bilgisayardan ve belli bir alan içinde oluşturulan küçük bilgisayarlara ağ denir. Örneğin 10 kullanıcı ve tamamı
bir ofis içinde oluşturulan küçük bilgisayar ağlarına LAN denir.
WAN (Wide Area Network)
Ağların coğrafi alan ve kullanıcı sayısı tarafından büyük olması durumunda WAN (Wide Area Networks) kavramı ortaya
çıkar.
Neden Bilgisayar Ağlarına Gereksinim Duyulur?
Bilgisayar ağlarına duyulan gereksinimin temel nedeni veri kaynaklarını paylaşmak ve iletişim kurmaktır. Veri paylaşmak sabit
disklerde yer alan klasörlerin ve dosyaları birçok kişi ya da istenilen diğer kişiler tarafından kullanılması anlamındadır. İletişim ise
kullanıcıların bir birine elektronik-posta göndermesi anlamındadır.
Bilgisayar ağlarının bir diğer kullanım alanı da yazıcılar ve diğer çevre birimlerinin paylaşımıdır. Diğer bir ağ kullanımı da
uygulamaların paylaşımıdır. Örneğin bir bilgisayarda yüklü bir programın diğer bilgisayarlar tarafından kullanılması.
Bilgisayar ağlarına duyulan gereksinimi şu şekilde özetlemek olasıdır:
Veri paylaşımı
Elektronik-posta
Çevre birimlerini paylaşmak
Uygulamaları ortak kullanmak
NETWORK'ÜN YARARLARI
Bilgisayarları bir ağ oluşturmak üzere birbirine bağlanması şu yararları sağlar:
-Bilgilerin paylaşımı.
-Merkezi yönetim ve desteği.
-Kurumsal çalışma, güvenlik,
Bir şirket ortamında bilgilerin bölümler, şubeler arasında paylaşımı o şirket için çok önemlidir. Bunun dışında elektronik posta
göndermek, belgeleri birlikte oluşturmak gibi olanaklar kullanıcılara büyük faydalar sağlar.Bilgisayarlar arasında ağ kurulması ayrıca
yönetim ve destek görevlerinin de kolayca yapılmasını sağlar. Ağ yöneticisi tek bir yerden ağ üzerindeki diğer bilgisayarları
yönetebilir. Örneğin bir programı yüklemek ya da kullanıcının bir sorunu gidermek için kullanıcının bilgisayarına gitmeye gerek
kalmadan ağ üzerinden (uzaktan) müdahale edilebilir.
AĞ TOPOLOJİLERİ
Topology (yerleşim ve bağlantı biçimi), bilgisayarların birbirine nasıl bağlandıklarını tanımlayan genel bir terimdir. Yaygın
olarak kullanılan topology türleri şunlardır:
-Bus
-Ring
-Star
-Mesh
Bus topology, bilgisayarların bir ana kablo ile birbirine bağlandığı şekildir. Ring topology ise bir halka biçiminde bilgisayarların
birbirine bağlanmasıdır. Star topology ise bilgisayarların bir merkezi aygıt aracılığıyla birbirine bağlandığı şekildir. Mesh topology ise
bütün bilgisayarların birbirine bağlandığı bir bağlantı biçimidir.
Mesh topology'nin yaygın olarak kullanılmadığını görüyoruz. Bunun nedeni gereksiz yere çok sayıda bağlantının yapılmasıdır.
Günümüzde en yaygın olarak Star topology türünün seçildiğini görüyoruz. Bunun başlıca nedeni merkezi bir aygıttan dağıtılan
kablolama şekli, fiyat ve performans gibi özelliklerdir.
A. BUS TOPOLOJİ
Bus yerleşim biçimi doğrusal bir hat olarak bilinir. Bütün makinelerin tek bir kabloya bağlı oldukları bir ağ türüdür.
Bus topology için söylenebilecek bütün teknik ayrıntılar Ethernet teknolojisine bağlıdır.
B. STAR TOPOLOJİ
Star yerleşim biçiminde bilgisayarlar merkezi biçimde konuşlandırılan bir hub'a bağlı olarak çalışırlar. Bilgisayarlar
tarafından üretilen sinyaller önce hub'a ulaşırlar ardından diğer bilgisayarlara ulaştırılırlar.
Star yerleşim biçimde bütün bilgisayarlar bir hub'a bağlıdır. Diğer bir deyişle bütün bilgisayarlara hub'tan bir kablo çekilir. Bu
merkezi dağıtım sistemi yıldız yerleşim biçimde her bilgisayara özel bir kablo çekilmesini böylece herhangi bir kablo arızasının
sadece o bilgisayarı etkilemesi sağlar. Böylece tüm network çökmez. Ancak merkezi dağıtım birim hub'ın bozulması durumunda ise
bütün network çöker.
Star, en eski yerleşim biçimlerindendir. İlk olarak PBX (private Branch Exchanges) olarak adlandırılan analog ve sayısal anatharlama
aygıtları olarak karşımız çıkmışlardır. Star yerleşim biçiminde bütün istasyonlar merkezi bir noktaya bağlıdırlar. Buna "hub" denir.
Star topoloji bugün bus'in yerine geçmiş ve UTP (genellikle Twisted-Pair kablo) kablo ile birlikte yaygın olarak kullanılmaktadır.
Fiziksel Star-Wired Ring yerleşim biçiminde ise birden çok hub kullanılır. Hub'a bağlı bilgisayarlar Star yerleşim biçimini
oluştururlar.
5
Bu yerleşim biçimin şu üstünlükleri vardır:
-Tek bir kablo sorununun bütün network'ü etkilememesi.
-Daha iyi bir network yönetimi.
-Network'e PC eklemek ve çıkarmak kolay.
Bu yerleşim biçiminin zayıf yönleri ise şunlardır:
-Bütün birimlerin bağlı olduğu hub'ın bir sorunu bütün network'ü etkiler.
-Bütün birimler için tek bir kablo hattının çekilmesi maliyeti
ETHERNET
En yaygın kullanılan LAN teknolojisidir. Öyle ki ağ bağdaştırıcı kartları (network adaptörleri) bir Ethernet kartı diye
adlandırılır. Ethernet teknolojisi bugün LAN ortamındaki teknolojiyi ifade eder. Böylece birimleri, hızları ve diğer standartları
belirler.
Ethernet Nasıl Çalışıyor
Ethernet, verilerin kabloyla iletilmesi sağlayan bir teknolojidir. Bu iletimde CSMA/CD tekniği kullanılır. Bu erişim yönteminde
network üzerindeki bütün bilgisayarlar network kablosunu sürekli kontrol ederler. Kablonun boş olduğu algıyan veriyi gönderir. Bu
arada eğer kabloda veri varsa o zaman veri hedefine ulaşıncaya kadar beklenir. İki bilgisayarın paketleri kabloda karşılaşırlarsa
çarpışma (collision) oluşur
Veri Paketleri
Network içinde bilgisayarlar arasında yapılan veri transferinde veriler paket (packet) denilen küçük parçalara bölünür. Paketler
bilgisayarların kabloyu paylaşmasını sağlar. Ayrıca veri transferinde hata oluştuğunda da yalnızca bozulan paketler yeniden
gönderilir.
MAC Adresi
Ethernet networklerinde her bilgisayarı tek bir adresi vardır. Buna node denir. Ethernet networkünde bu bilgi 48-bitlik MAC adresidir.
Her network kartı (network adaptör) tek bir MAC adresine sahiptir. 48-bitlik adres bilgisi 2^48 (281,474,976,710,656) olası adres
bilgisinin oluşturulmasını sağlar. Bunun diğer bir anlamı da bir Ethernet networkünde 281 trilyon makine bulunabilir.
MAC adresleri IEEE tarafından rezerve edilerek üretici firmalar verilir. Böylece dünya üzerinde iki aynı MAC adresinin olması
engellenir.
MAC Adreslerini Kullanmak
MAC adresleri network üzerindeki her bilgisayarın hangi paketi işleyeceğini belirler. Bir bilgisayar bir data paketini gönderdiğinde,
paket her iki yönde de ilerler. Bu sırada diğer bilgisayarlar ağı dinler ve paket üzerindeki MAC adresinin kendi MAC adresleri olup
olmadığını kontrol ederler. Bilgisayar kendi MAC adresine sahip bir paketi gördüğünde, paketi açar ve verileri işlemeye başlar.
PHP
PHP yorumlayıcısı, bu "programı" çalıştırabilmek için dosyanın içinde PHP komutlarını arar. PHP komutları
birinci bölümde gördüğümüz gibi iki şekilde yazılabilir:
1. <?PHP .... ?>
2. <? .... ?>
Bunlara PHP komut ayracı denir; birinci türü uzun veya standart ayraç sayılır; ikincisine ike "kısa ayraç" denir.
PHP kodlarımız, oluşturulmasını istediğimiz sayfanın HTML kodları ile tabir yerinde ise içiçe yazılır.
<?PHP
print "Merhaba Dünya!";
?>
Sayfalara yorum eklemek için;
<?PHP
/*
Bu satır da PHP'nin çok-satırlı yorum bölümü..
Bunu da PHP yorumcusu asla dikkate almaz
Buraya istediğimiz kadar yorum yazabiliriz.
*/
print "Merhaba Dünya!";
// Bu ise PHP'nin tek satırlı yorum bölümü
# Bu satırları da PHP yorumcusu dikkate almayacaktır.
?>
6
Değişkenler
PHP'de de, bir çok başka bilgisayar programlama dilinde olduğu gibi değişkenlerin içine bir değer konmadan
önce tanımlanması mümkündür; fakat gerekli değildir. Değişkenleri adının önüne $ işareti koyarak tanımlarız:
$adi = "Reşit";
$soyadi = "Gülen";
$123 = 123;
$sevdigiRenk = "yeşil";
Veri Türleri
PHP açısından dünyada altı tür değer vardır:
Tamsayı
(Integer): 5,124, 9834 gibi
Çift
(Double): 3,567 gibi
Alfanümerik
(String): "Reşit" gibi
Mantıksal
(Boolean): doğru (true)/yanlış (false) gibi
Nesne
(Object)
Dizi
(Array)
Tür Değiştirme
Bir değişkenin değerinin türü hakkında kuşkunuz varsa, en emin yol bunu PHP'nin kendisine sormaktır. Bu
sorgulamayı gettype() fonksiyonu ile yaparız.
Escape
şu satırdaki, ters-bölü işareti dikkatinizden kaçmamış olmalı:
print "İkinci değişkenin adı: \$alfanumerik<br>";
PHP için özel anlamı olan işaretlerin anlamlandırılmasını önlemek ve bu işaretleri düz metin saymasını
sağlamak için bu işaretlerin önüne ters-bölü işareti koyarız.
şöyledir:
\'
\"
\\
\$
\n
\r
\t
Tek tırnak
Çift tırnak
Ters-bölü
Dolar işareti
Yeni Satır (New Line)
Satır Başı (Return)
Sekme (Tab) karakteri
Kimi zaman bir değişkene atadığımız değerin türünü değiştirmek gerekir. Bunu settype() fonksiyonu ile
yaparız.
isset() ve unset()
isset() fnksiyonu, PHP'nin bir değişkenin içinde değer bulunup bulunmadığını sınamasını sağlar. unset() ise
varolan bir değişkeni yok eder.
if (isset($bir_degisken)) {
print( $bir_degisken );
}
else {
unset($bir_degisken);
}
7
Bu kod parçası, $bir_degisken isimli dğişkenin içi boş değişse, içeriğini görüntüleyecek, içi boş ise varlığına
son verecektir.
empty()
isset() fonksiyonun tersi işleve sahiptir; bir değişkene değer atanmamışsa, veya değeri sıfır veya boş
alfanümerik (null string) ise, doğru (True) değeri verir.
$bir_degisken = 123;
echo empty($bir_degisken);
$bir_degisken = "";
echo empty($bir_degisken);
İşlemciler (Operatörler)
Aritmetik işlemciler:
+
Toplama
Çıkartma
/
Bölme
*
Çarpma
%
Kalan (Modulus)
6+5
= 11
6-5
= 1
6/5
= 1.2
6*5
= 30
6%5 = 1
$sayi=4.5;
echo floor($sayi);
echo ceil($sayi);
echo round($sayi);
=>> 4 (Sayıyı aşağıya yuvarlar)
=>> 5 (Sayıyı yukarıya yuvarlar)
=>> 5 (Sayıyı yuvarlar)
echo max(13,12,5,7);
echo min(13,12,5,7);
=>> 13
=>> 5
PHP'nin atama işlemcisinin eşittir (=) işareti olduğunu hatırlıyorsunuz birleşik-atama (combined-assignment)
işlemcileri, bu işarete diğer aritmetik işlemciler eklenerek oluşturulur.
İşlemci
+=
-=
/=
*=
%=
.=
Örnek
$a += 5
$a -= 5
$a /=5
$a *= 5
$a %= 5
$a .= "metin"
Anlamı
$a = $a + 5
$a = $a - 5
$a = $a / 5
$a = $a * 5
$a = $a % 5
$a = $a" metin"
Bir Arttırmak veya Azaltmak için
Değerleri sadece 1 arttırmak veya azaltmak için PHP, bir kolaylık sağlar:
$a++ veya ++$a
$a-- veya --$a
: $a'nın değerini 1 arttırır;
: $a'nın değerini 1 eksiltir.
PHP'nin karşılaştırma yapması için kullandığımız işlemciler ise işlem işaretinin sağı ve solundaki değerleri
veya değişkenlerin değerlerini işaretin belirttiği karşılaştırmayı yaptıktan sonra ortaya ya doğru (true) ya da
yanlış (false) sonucunu çıkartırlar.
8
İşlemci
Örnek
Örnek
==
!=
===
>
<
<=
eşitse
eşit değilse
aynı ise
büyükse
küçükse
küçükse
veya eşitse
büyükse
veya eşitse
$a == 5
$a != 5
$a === 5
$a > 5
$a < 5
$a <= 5
Yanlış/False
Doğru/True
Yanlış/False
Doğuru/True
Yanlış/False
Yanlış/False
$a >= 5
Doğru/True
>=
$a=6 ise:
PHP'de bu karşılaştırmayı iki grubun arasına koyduğumuz işaretlerle yaparız İşaretin sağ ve sol tarafının
doğruluğu veya yanlışığı işarete göre nihai sonucun doğru veya yanlış olmasını sağlar. Bu karşılaştırmaları
yaparken şu işlemcileri kullanırız:
İşlemci
Adı
||
or
&&
and
Xor
!
veya
veya
ve
ve
Şartlı-veya
Değil
Anlamı
Örnek
sol veya sağ doğru
doğru || yanlış = doğru
sol veya sağ doğru
doğru || yanlış = doğru
sol ve sağ doğru
doğru || yanlış = yanlış
sol ve sağ doğru
doğru || yanlış = yanlış
Sadece sol veya sağ doğru doğru || yanlış = doğru
sol veya sağ yanlış
doğru || yanlış = doğru
<?php
$vize = 45;
$final = 65;
if ($vize >= 50 && $final >= 50) {
print ("Öğrenci geçti!");
}
else {
print ("Öğrenci kaldı!");
}
?>
Sabit Değerler
define ("SABIT_DEGER", değer);
Burada SABIT_DEGER yerine, tanımlamak istediğimiz sabit değere vereceğimiz isim, değer yerine de sabit
değeri yazarız. Örnek:
<?php
$Dolar_miktar = 125;
define ( "DOLAR_KURU", 625675);
$TL_Tutar = $Dolar_miktar * DOLAR_KURU;
print ($TL_Tutar);
?>
Tanımlanmış olan bir sabiti yeniden oluşturamayız; ama buna teşebbüs ettiğimizde PHP hata vermez. Bir sabit
değerin oluşturulmuş olup olmadığını defined() fonksiyonu ile anlayabiliriz:
<?php
$Dolar_miktar = 125;
if (defined( "DOLAR_KURU" )) {
9
echo ("Sabit değer daha önce tanımlanmıştı.<br>");
}
?>
Dizi-Değişkenler
Dizi değişkenden ayrıntılı söz edebilmek için önce tipik bir dizi-değişkende neler olduğuna bakalım. Sözgelimi,
verdiğiniz "PHP ile Programlama" kursundaki öğrencilerinizin listesi şöyle olabilir:
Dizi Değişken Oluşturalım
Şimdi, PHP bize öyle bir araç vermeli ki, biz bir kerede bu listenin tümünü, her bir ögesine sanki bir değişkenin
değeri imiş gibi tek-tek, veya bir kaçına birden ulaşabilmeli ve arzu ettiğimiz zaman notları doldurabilmeliyiz.
Öğrenciler de yapacağımız Web sitesine girerek, kendi notlarını görebilmeli ve notlarını inceleyebilmeli.
PHP'nin bu amaçla sağladığı araç, çok-boyutlu dizi-değişken oluşturma aracıdır. Ve bu araçla yukarıdaki listeyi
aynen şöyle yapabiliriz.
<?php
$ogrenciler = array (
array ( adi => "Özbay", soyadi => "Altun", sinav1 =>"", sinav2 =>"", not =>""),
array ( adi => "Muharrem", soyadi => "Taç", sinav1 =>"", sinav2 =>"", not =>""),
array ( adi => "Hasan", soyadi => "Civelek", sinav1 =>"", sinav2 =>"", not =>""),
array ( adi => "Şahika", soyadi => "Tabak", sinav1 =>"", sinav2 =>"", not =>""),
);
// Buraya başka kodlar girecek
print $ogrenciler[0][adi];
?>
Kimi zaman buradaki örnekte olduğu gibi, dizinin bütün elemanlarını bir for döngüsüyle değil, foreach
döngüsüyle bulmak daha kolay olabilir. Kısaca belirtmek gerekirse, foreach döngüsü, bir dizi değişkenin bütün
elemanları için, arzu ettiğiniz işi yapar. foreach döngüsünü yazarken komutun kaç kere icra edileceğini bir
sayaçla tutmak gerekmez; çünkü döngü, ona adını verdiğiniz değişkenin içindeki bütün değerler bitinceye kadar
devam edecektir.
foreach ($ogrenciler as $ogrenci) {
print ("$ogrenci<br>");
}
foreach döngüsü, bir dizi değişkenin adını içinden değer çekilecek kaynak olarak ister; bunu "as" (olarak)
kelimesi izler; sonra diziden alınacak her bir değeri geçici olarak tutacak değişkenin adı verilir. Buradaki print()
komutumuz, bu geçici değişkenin tuttuğu değeri Browser'a gönöderecektir. Bu değer ise döngünün her
adımında dizi değişkendeki bir değer yani öğrencilerin listesi olacaktır.
İlişkili dizileri sıralama: asort() ve ksort()
İlişkili dizilerin diğer dizi değişkenlere göre farkı, değerlerinin bir de adı bulunmasıdır. Değerlerin adlarına
anahtar denir. Bir ilişkili diziyi değerlerine göre sıralamak için asort() fonksiyonu kullanılır.
Örnek:
$birinci_dizi = array ( ogr_01=>"Özbay", ogr_02=>"Muharrem" , ogr_013>"Hasan" , ogr_04=>"Şahika");
asort ($birinci_dizi);
PHP, bu diziyi değerler itibariyle alfabetik sıraya sokacaktır. Eğer sıranın değere göre değil de değerlerin
anahtarına (burada ogr_01, ogr_02 olan kelimeler) göre yapılmasını istiyorsak, ksort() fonksiyonunu kullanırız.
Örnek:
10
$birinci_dizi = array ( ogr_01=>"Özbay", ogr_02=>"Muharrem" , ogr_013>"Hasan" , ogr_04=>"Şahika");
ksort ($birinci_dizi);
PHP, şimdi bu diziyi anahtarlara göre alfabetik sıraya sokacaktır.
Metin Düzenleme ve Düzenli İfadeler
substr($degisken,8);
substr ($degisken, 8, 20);
substr($degisken, -9);
trim ($degisken);
strlen($degisken);
strip_tags($metin)
strtolower($metin)
strtoupper($metin)
ucwords($metin)
ucfirst($metin)
substr($metin,3,5)
strpos($metin,”@”)
strstr($metin,”@”)
substr_count($metin,”@”)
=>> (Metin içersindeki html ve php kodlarını atar)
=>> (Küçük harfe çevirir)
=>> (Büyük harfe çevirir)
=>> (Sadece Baş Harfleri büyük yapar)
=>>(Sadece cümlenin baş harflerini büyük yapar)
=>>(3. karekterden itibaren 5 karekter alır)
=>>(İstediğim karekterin yerini söyler)
=>>(İstediğim karekterden sonraki karekterleri alır)
=>> (İstediğim karekterden kaçtane olduğunu yazar)
$bolumler=explode(“,”,$metin)
implode(“,”,$bolumlar”)
=>> ( (,) ler arasındaki ifadeleri dizi değişkenine aktarır)
=>> ( Dizideki değerleri (,) işareti ile bağlar)
Tarih ve saat Verisi
PHP, o andaki zaman bilgisini, saat, dakika, saniye ve salise olarak; tarih bilgisini yıl, ay, gün (sayı veya isim
olarak), programımızın herhangi bir yerinde bize bildirebilir. Bu bilgiyi Web sunucusunda istediğimiz anda,
muhtemelen sunucunun bulunduğu bilgisayarın sistem saatinden alacak olan PHP, sunucu programında farklı
bölgesel ayarlar için gerekli düzenleme yapılmışsa, bu imkandan yararlanarak bize sunucunun değil, arzu
ettiğimiz bölgenin saat ve tarihini bildirebilir.
Özellikle Türkiye'de olmayan bir sunucuda bu imkanın bulunup bulunmadığını, ancak sınayarak veya sistem
yöneticisine sorarak öğrenebiliriz. Böylebir sıNama için şu kodları programınızın başına koyun:
<?php
setlocale ("LC_TIME", "TR");
print (strftime ("Türkçe bugün günlerden: %A "));
?>
Browser penceresinde "Türkçe bugün günlerden Sunday" yazısını okursanız, sunucuda Türkçe için bölgesel
ayar desteği yok demektir!
PHP'nin zaman ve tarih belirlemekte kullanabileceğiniz başlıca fonksiyonu getdate() ise şöyle kullanılır.
getdate()
Tarih ve saat bilgisini alır ve ve vereceğiniz bir isimdeki dizi-değişkende kaydeder. Örnek:
$saat_tarih = getdate()
Bu durumda, $saat_tarih dizi değişkeninde sırasıyla şu bilgiler yer alır:
32
saniye
57
dakika
6
saat
30
ayın gün sayısı (1-31)
0
haftanın gün sayısı (1-7)
11
7
2000
211
Sunday
July
964929452
ayın sayısı (1-12)
yıl
yılın kaçıncı günü
günün adı
ayın adı
Unix sistemlerinde Epoch biçiminde zaman bilgisi
PHP'nin tarih ve saat bilgisini biçimlendirmede yararlandığımız date() fonksiyonunu daha sonra metin
biçimlerdirme bölümünde ele alacağız
Tarih ve Saat Düzenleme
PHP'nin tarih ve zaman bilgisini kullanmamızı sağlayan getdate() fonksiyonunun yanı sıra, elde ettiğimiz
bilgileri çok daha esnek biçimlendirmemizi sağlayan date() fonksiyonu da sık kullanılır. Bu fonksiyon
çağrıldığı yerde bize Unix sisteminin Epoch zaman-tarih damgasını verir. Bu verinin biçimlendirilmesi için
çeşitli parametreler vardır. Bu parametreler, gün adlarının dili ve tarihlerin yazılışı bakımından Web
sunucusunun bulunduğu bilgisayardaki bölgesel ayarlara göre sonuç verir.
date() $tarih date( biçimlendirme_parametreleri );
Burada biçimlendirme_parametleri yerine şunları yazabilirsiniz:
a
12 saat esasına dayanan Anglo-Sakson sistemlerinde öğleden önce ("am") veya öğleden sonra ("pm")
işaretinin verilmesini sağlar.
A
Aynı işaretlerin büyük harfle yazılmasını sağlar.
d
İki haneli gün sayısı, tek haneli günlerin önüne sıfıır konur: "01" - "31"
D
Üç haneli gün adı kısatması: "Cum"
F
Uzun ay adı: "Ocak"
h
12 saatlik sistemde saat: "01" - "12"
H
24 saatlik sistemde saat: "00" - "23"
g
12 saatlik sistemde tek haneli saatlerin önüne sıfır konmadan saat: "1" - "12"
G
24 saatlik sistemde tek haneli saatlerin önüne sıfır konmadan saat: "0" - "23"
i
Dakika: "00" - "59"
j
Tek haneli sayıların önüne sıfır konmadan gün sayısı "1" - "31"
l
(küçük L harfi) Uzun gün adı: "Cuma"
L
Artık yıl olup olmadığına ilişkin Boolean (doğru/yanlış) değişken. Artık yıl ise 1, değilse 0.
m
Tek hanelilerin önüne sıfır konarak ay sayısı: "01" - "12"
n
Tek hanelilerin önüne sıfır konmadan ay sayısı: "1" - "12"
M
Kısaltılmış ay adı: "Şub"
s
Saniye: "00" - "59"
S
İngilizce ('ncı anlamına) 2 karakter ek: "th", "nd"
t
Belirtilen ayın gün sayısı; "28" - "31"
w
Haftanın gün sayısı: "0" (Pazar veya Pazartesi) - "6" (Cumartesi veya Pazar)
Y
Dört haneli yıl: "2000"
y
İki haneli yıl "00"
z
Yılın gün sayısı: "0" - "365"
Örnek:
print (date ("l dS of F Y h:i:s A"));
Browser penceresine İngilizce bölgesel ayarlar yapılmış bir bilgisayara kurulu Web sunucusunda: "Sunday 30th
of July 2000 07:51:08 AM" yazdırır.
print (date ("l, d F Y g:i:s"));
12
Browser penceresine Türkçe bölgesel ayarlar yapılmış bir bilgisayara kurulu Web sunucusunda: "Pazar, 30
Temmuz 2000 07:51:08" yazdırır.
date() ve mktime() fonksiyonlarını birlikte kullanarak geçmiş veya gelecek tarihleri bulma imkanı de vardır.
Örnek:
$yarin = mktime (0,0,0,date("m") ,date("d")+1,date("Y"));
$gecen_ay = mktime (0,0,0,date("m")-1,date("d"), date("Y"));
$gelecek_lyl = mktime (0,0,0,date("m"), date("d"), date("Y")+1);
PHP'de Program Denetimi
if Deyimi
if ( koşullar ) {
koşullar doğru ise yapılacak işlere ilişkin komutlar
}
elseif (diğer koşullar) {
diğer koşullar doğru ise yapılacak işlere ilişkin komutlar
}
else {
diğer her durumda yapılacak işlere ilişkin komutlar
}
<?php
if ( $parola == "" ) {
echo ("Sitemize girmek için parola yazmanız gerekir.<br>");
echo ("Lütfen parolayı yazın! <br>");
}
?>
switch deyimi
switch ( değişken ) {
case KOŞUL-1 ;
Koşul-1 doğru ise yapılacak işlere ilişkin komutlar
break;
case KOŞUL-2 ;
Koşul-2 doğru ise yapılacak işlere ilişkin komutlar
break;
case KOŞUL-3 ;
Koşul-3 doğru ise yapılacak işlere ilişkin komutlar
break;
case KOŞUL-4 ;
Koşul-4 doğru ise yapılacak işlere ilişkin komutlar
break;
......................
......................
default:
diğer her durumda yapılacak işlere ilişkin komutlar
}
switch için kısa yol
<?php
$uyari = ($parola == "" ) ? "Parola yazmanız gerekir" : "Teşekkür ederiz" ;
13
echo ($uyari);
?>
Bu kod parçacığı, ziyaretçinin parola girip girmediğini $parola değişkeninin içinin boş olup olmadığına bakarak
anlayacak ve $parola değişkenin içi boş ise (yani soru işaretinin sorguladığı durumun doğru olması halinde) iki
nokta üstüskte işaretinden önceki metni $uyarı değişkenin içeriği haline getirecek; $parola değişkeninin içi dolu
ise (yani koşul yerine gelmiyorsa, durum yanlış ise) iki nokta üstüste işaretinden sonraki metni $uyarı
değişkeninin içeriği yapacaktır. Bir sonraki echo() komutu ise içeriği bu sınav sonucuna göre belirlennen $uyarı
değişkeninin değerini Browser penceresinde görüntüleyecektir.
while döngüsü
while (koşul) {
Koşul doğru ise yapılacak işlere ilişkin komutlar
}
<?php
$sayac = 1;
while ( $sayac <= 7 ) {
print ("<font size= $sayac >");
print ("<b><p>İyileri iyilikleri ile alkışlayınız!</b></p>");
print ("</font>");
$sayac ++;
}
?>
do..while
do {
Koşul doğru ise yapılacak işlere ilişkin komutlar
}
while (koşul);
$sayac = 1;
do {
print ("<font size= $sayac >");
print ("<b><p>İyileri iyilikleri ile alkışlayınız!</b></p>");
print ("</font>");
$sayac ++;
}
while ( $sayac <= 7 ) ;
for döngüsü
for ( $yeni_degisken atama ; koşul ; artış basaması ) {
Koşul doğru ise yapılacak işlere ilişkin komutlar
}
<?php
for ($sayac = 1; $sayac <= 7 ; $sayac++ ) {
print ("<font size= $sayac >");
print ("<b><p>İyileri iyilikleri ile alkışlayınız!</b></p>");
print ("</font>");
}
?>
Döngüyü sona erdirmek için: break
<?php
$tekrar = 10 :
for ($sayac = 1; $sayac <= $tekrar ; $sayac++ ) {
14
if ( $tekrar <= 0 )
break;
print ("<font size= $sayac >");
print ("<b><p>İyileri iyilikleri ile alkışlayınız!</b></p>");
print ("</font>");
}
?>
Fonksiyonlar
Fonksiyon Tanımlama ve Çağırma
PHP'de fonksiyonlar function komutu ile oluşturulur. Tanımladığımız fonksiyon, kendisini göreve çağıracak
komuittan, yapacağı işlemde kullanmak üzere değer alacaksa, bu değerlere vereceğimiz değişken isimleri
fonksiyon adının yanında parantez içinde gösterilir. Fonksiyon birden fazla değer bekleyecekse, bunların
değişken adlarının arasına virgül koyarız. Fonksiyona ulaştırılan değerlere argüman denir. Fonksiyon, kendisine
bir değer ulaştırılmasını beklemese bile içi boş parantez koymamız gerekir. Buna göre PHP'de fonksiyon şöyle
yazılır:
function fonksiyonun_adı (argüman1, argüman2, ... argümanN) {
fonksiyonun yapacağı işe ilişkin komutlar
}
Fonksiyon adları, değişken adları ile aynı kurallara tabidir. Fonksiyon içinden fonksiyon çağrılabilir;
fonksiyonların içinde PHP'nin kendi fonksiyonları kullanılabilir. Şimdi, ilk örnek fonksiyonumuzu yazalım.
Yukarıdaki örneklerde, PHP'ye, bir Web sayfası oluştururken HTML ögesi olacak bazı satırların başına <H1>,
satır sonlarına <BR> gibi etiketler koydurduğumuza dikkat etmiş olmalısınız. Bir programda bu işi sık sık
yapacaksak, yani metinlerimiz <BR> ile bitecek, bazı başlıklarımız ise sayfamıza HTML'in başlık etiketleri ile
gönderilecekse, bu etiketleri defalarca yazmamız sadece zorluk değil, fakat aynı zamanda yazım hatasını davet
eden bir davranır olur. PHP'de kendisine vereceğimiz metinleri başlık veya gövde yazısı olarak biçimlendirecek
fonksiyonlar tanımlayarak, programcılıkta daima tehlikeli olan insan unsurunu asgarîye indirebiliriz. Şu
programı yazdir01.php adıyla kaydederek, Browser'da açın:
<?php
function yazdirBR ($metin) {
print ("$metin<br>\n");
}
function yazdirH1 ($metin) {
print ("<h1>$metin</h1>\n");
}
function yazdirH2 ($metin) {
print ("<h2>$metin</h2>\n");
}
function yazdirH3 ($metin) {
print ("<h3>$metin</h3>\n");
}
function yazdirH4 ($metin) {
print ("<h4>$metin</h4>\n");
}
function yazdirP ($metin) {
print ("<p>$metin</p>\n");
}
// Başka kodlar buraya girebilir
yazdirH1("Bu H1 Başlık");
yazdirH2("Bu H2 Başlık");
yazdirH3("Bu H3 Başlık");
15
yazdirH4("Bu H4 Başlık");
yazdirBR("Bu kendisinden sonra BR olan birinci metin.");
yazdirBR("Bu kendisinden sonra BR olan ikinci metin.");
yazdirP("Bu uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun
uzun uzun uzun uzun uzun uzun uzun bir paragraf metni.");
yazdirP("Bu uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun
uzun uzun uzun uzun uzun uzun uzun bir diğer paragraf metni.");
?>
</BODY>
</HTML>
Bu programda, yazdirBR(), yazdirH1(), yazdirH3(), yazdirH4(), ve yazdirP() adlarıyla altı fonksiyon
tanımladığımızı görüyorsunuz. Bu fonksiyonların hepsi kendilerini göreve çağıran satırdan, kendilerine bir
değer verilmesini istiyorlar ve bu değeri $metin adlı değişkende tutuyorlar. Fonksiyonlarımız tümü de PHP'nin
print() fonksiyonundan yararlanıyor; ancak bu fonksiyonun nasıl kullanılacağını, nasıl işletileceğini de
belirliyorlar. Buna göre bazı fonksiyonlarımız $metin adlı değişkenin değerini önüne ve arkasına bir HTML
etiketi koyarak Browser'a gönderiyor; birisi ise sadece $metin değişkenin tuttuğu değerin sonuna bir HTML
etiketi koyduruyor. Fonksiyonlarımı buradaki örnekte olduğu gibi hemen oluşturulduktan sonra göreve
çağırmayız. Geleneksel olarak, bir programda kullanılacak fonksiyonlar, programın baş tarafında toplanır ve
daha sonra nerede gerekirse orada, çağrılırlar. Fonksiyonları adlarını ve kendilerine verilmesi gereken bir değer
varsa o değeri parantez içinde yazarak çağırırız. Burada olduğu gibi, fonksiyonu göreve çağırırken parantez
içinde değerin kendisini yazabileceğimiz gibi, bu değeri tutan bir değişkenin adını da yazabiliriz.
<?php
function topla ($sayi1, $sayi2) {
$sonuc = $sayi1 + $sayi2;
return $sonuc;
}
function cikart ($sayi1, $sayi2) {
$sonuc = $sayi1 - $sayi2;
return $sonuc;
}
function carp ($sayi1, $sayi2) {
$sonuc = $sayi1 * $sayi2;
return $sonuc;
}
function bol ($sayi1, $sayi2) {
$sonuc = $sayi1 / $sayi2;
return $sonuc;
}
// Başka kodlar buraya girebilir
$sayi1 = 12;
$sayi2 = 5;
print topla($sayi1, $sayi2);
print ("<br>");
print cikart($sayi1, $sayi2);
print ("<br>");
print carp($sayi1, $sayi2);
print ("<br>");
print bol($sayi1, $sayi2);
print ("<br>");
?>
Bu programda, dört aritmetik işlemi yapan dört ayrı fonksiyon tanımlıyoruz. Fonksiyonlarımız kendilerini
göreve çağıran komuttan, kendilerine iki değer vermesini bekliyorlar ve bu değerleri $sayi1 ve $sayi2 adlı
16
değişkenlere yazıyorlar. Sonra herbiri, kendisinden beklenen aritmetik işlemi yaparak, sonucunu $sonuc adlı
değişkene yazıyor. Burada dikkat edeceğimiz nokta, return komutudur. Bu komut, f onksiyonun elde ettiği
değeri, değeri tutan değişkenin adıyla, fonksiyonu çağırmış olan satıra gönderir. return komutuyla, kendisini
göreve çağıran satıra değil fakat mesela başka bir fonksiyona da değer gönderebiliriz:
return ( baska_fonksiynon ( $degisken)) ;
Fonksiyonun return satırında böyle bir başka fonksiyonun adı yazmıyorsa, bulunan değer göreve çağıran satıra
gönderilir.
Bu program, içine bizim yazdığımız iki değeri hesaplayarak, Browser'a gönderecektir. Ancak bu değerler
ziyaretçinin dolduracağı bir formdan alınabileceği gibi, program tarafından da hesaplanabilir
Fonksiyona varsayılan değer verebiliriz
Buradaki örneklerde tanımladığımız fonksiyonlara bekledikleri değerleri, onları göreve çağırdığımız noktada
biz veriyoruz. Ancak öyle durumlar olabilir ki, fonksiyonun beklediği değerlerden biri veya bir kaçı, göreve
çağıran satır tarafından verilmeyebilir; fonksiyon varsayılan bir değerle çalıştırılabilir.
<?php
function yazdir ($metin, $boyut=3) {
print ("<font size=\"$boyut\">$metin</font><br>");
}
// Başka kodlar buraya girebilir
yazdir("Bu Başlık", 5 );
yazdir("Bu küçük boyutta bir metin", 2);
yazdir("Bu varsayılan boyutta bir metin");
yazdir("Bu çok büyük Başlık", 8);
yazdir("Bu uzun bir paragraf metni. Boyutu varsayılan ölçüde. Bu uzun bir paragraf metni. Boyutu varsayılan
ölçüde. Bu uzun bir paragraf metni. Boyutu varsayılan ölçüde.");
?>
Bu örnekte, daha öncekilerden farklı olarak fonksiyonun, beklediği iki argümandan birisini, fonksiyonu
tanımlarken verdiğimize dikkat edin: " function yazdir ($metin, $boyut=3)" ifadesi, PHP'ye, "Bu fonksiyona
ikinci argüman eksik gönderilirse, telaşa kapılma, onun yerine 3 rakamını kullan!" anlamına gelir. Nitekim,
programın daha ilerdeki bölümlerinde bu fonksiyon görevlendirilirken birinci argümanın değeri olan metin
verildiği halde, iki ayrı yerde ikinci argümanın değeri verilmiyor. Bu iki durumda., PHP, yazdir()
fonksiyonunda varsayılan değer olan 3'ü kullanıyor.
Değişkenlerin kapsamı: global ve static
dört fonksiyonda da aynı değişken adlarını kullanıyoruz ve sonucu aynı isimle print() fonksiyonuna
gönderiyoruz. PHP nasıl oluyor da, aynı isimli değişkenleri buradaki gibi ayrı ayrı değerlerle ele alabiliyor? Bu
sorunun cevabını verebilmek için değişkenlerin kapsam alanına bakmamız ve ve bu arada global deyimi ile
tanışmamız gerekir.
Bir fonksiyonun değişkenleri, sadece o fonksiyonun ömrü süresince vardır; hiç bir fonksiyon diğer bir
fonksiyonun değişkenlerinin veya kendisine verilmemiş bir başka değişkenin değerini bilemez; kullanamaz.
<?php
$metin = "Başkalarına yararlı olmanın sınırı yoktur!";
function yazdir () {
print ("<h1>İşte metin: $metin </h1>");
}
// Başka kodlar buraya girebilir
yazdir();
?>
Normal görünüşlü bir fonksiyon ve kendisinden önce tanımlanmış olan $metin adlı değişkenin tuttuğu değeri,
kendisi göreve çağrıldığı anda Browser penceresinde görüntülemeye hazır görünüyor! Fonksiyonun dışarıdan
argüman istemediğini, kullanacağı print() komutunun konusu olarak $metin değişkeninin değerini kullanacağını
da anlıyabiliyoruz. Fakat bu programı çalıştırdığımızda karşımıza çıkan manzara çok farklı oluyor.
17
Form'dan GET Metoduyla Gelen Bilgiler
Ziyaretçilerimizin ne tür Browser kullandıklarını HTTP_USER_AGENT değişkeninin değerini alarak ve bu
değerin içinde belirli anahtar kelimeleri aratarak bulabiliriz. Form ile gelen bilgiler, GET metodu ile alınıyorsa,
hem QUERY_STRING, hem de HTTP_GET_VARS dizisine kaydolur. POST metoduyla aldığımız bilgileri
HTTP_POST_VARS değişkenin değerleri arasında buluruz. Bunları öğrendiğimize göre, şimdi gerçekten bir
HTML Form'u yapabil ve bununla ziyaretçimizden bilgi alabiliriz.
Basit bir HTML Form'u tasarlayalım.
<HTML>
<HEAD>
<TITLE>PHP'de Formlar</TITLE>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<FORM ACTION="formlar02_isle.php" METHOD="GET">
Adınız, Soyadınız: <INPUT TYPE="TEXT" NAME="adi">
<br>
Elektronik Adresiniz: <INPUT TYPE=TEXT" NAME="adres">
<br>
<INPUT TYPE="SUBMIT" VALUE="Gönder Gitsin!"> <INPUT TYPE="RESET" VALUE="Vazgeç,
Gönderme!">
</FORM>
</BODY>
</HTML>
Bu Form'la Web tasarım yarışmasına katılmayacağımıza göre, şimdilik sadece Web Sunucuya bilgi
göndermekte kullanabiliriz. Form'un ACTION parametresine dikkat ederseniz, formlar02_isle.php adlı bir
dosyanın adını göreceksiniz. Bu, ziyaretçinin Gönder düğmesini tıklamasıyla birlikte Form'un içerdiği bilgilerin
METHOD parametresinde pazılı olan GET yöntemiyle Sunucu'da gönderileceği programın adıdır. Bu sayfa,
Browser'da şöyle bir görüntü verecektir:
Şimdi bir an için ne olacağını düşünmeden, formu doldurun ve Gönder düğmesini tıklayın; ve Browser'ınızdaki
hata mesajına aldırmadan, URL adres kutusunda ne yazdığını okuyun:
http://server/formlar02_isle.php?adi=Muharrem+Ta%E7&[email protected]
Bu, HTTP protokolüne göre GET yoluyla bilgi göndermekte kullanılan yöntemin tam bir örneğidir: Browser,
GET yoluyla bilgi göndereceği zaman, Form'daki bütün bilgileri URL-Encoding denen sistemle kodlar;
Form'un alan adlarına o alanlara ziyaretçinin yazdığı bilgileri bir eşittir işaretiyle ekler; bu tür alan=girdi
çiftlerinin arasına & (ve işareti) koyar ve gönderir. Web sunucu, bu bilgileri alınca, önce kendi oluşturduğu bazı
değişkenlere (hem QUERY_STRING, hem de HTTP_GET_VARS dizisine) yazar ve sonra URL hanesinde adı
yazılı olan programa (sayfaya) verir. Şimdi bizim bu bilgilerin gönderildiği PHP programını kendisine verilecek
bu bilgileri işlemeye hazır şekilde yazmamız gerekir.
<?php
print ("Sayın <b>$adi</b>\n\n");
print ("<p>Elektronik adresiniz: <b>$adres </b></p>\n\n");
?>
Şimdi, Browser'ınızda formlar02.htm sayfasını yeniden açın, Form'u doldurun ve gönderin. Açılacak sayfa,
Form'un gönderecğii bilgileri alacak ve kendi görünteleyecektir.
18
Fakat burada gördüğünüz gibi Sunucu'nun ziyaretçiden gelen bilgileri depoladığı dizileri kullanmadık. Bunu
yaparken, GET ile gelen bilgiler kendisinde verildiğinde PHP programının alan adlarını değişken adı, bunların
karşısında yazılı olan verileri de bu değişkenin değeri saymasından yararlandık. Fakat isteseydik, bu
değişkenleri, Sunucu'nun oluşturduğu dizilerden de alabilirdik. Şimdi hem Form'umuzu geliştirelim; hem de bu
kez okuma işini Sunucu dizisinden yapalım.
<FORM ACTION="formlar03_isle.php" METHOD="GET">
Adınız, Soyadınız: <INPUT TYPE="TEXT" NAME="adi">
<BR>
Elektronik Adresiniz: <INPUT TYPE=TEXT" NAME="adres">
<BR>
Hangi notunuzu öğrenmek istiyorsunuz?
<BR>
<SELECT NAME="hangi_not">
<OPTION>--Lütfen seçiniz-<OPTION>Sınav 1
<OPTION>Sınav 2
<OPTION>Ortalama
</SELECT>
<BR>
<INPUT TYPE="SUBMIT" VALUE="Gönder Gitsin!"> <INPUT TYPE="RESET" VALUE="Vazgeç,
Gönderme!">
</FORM>
Yeni Form'da yeni bir HTML unsuruna yer verdiğimizi ve SELECT..OPTION etiketi ile ziyaretçiye bir seçim
imkanı verdiğimizi görüyorsunuz. Şimdi, bu Form'un göndereceği bilgileri işleyecek PHP programını yazalım.
Aşağıdaki kodları formlar03_isle.php adıyla kaydedelim:
<?php
foreach ($HTTP_GET_VARS as $anahtar=>$deger ) {
print ("<b>$anahtar = $deger <br>\n");
}
?>
Demiştik ki, Web sunucu, bir istemci Browser'dan kendisine GET yöntemiyle yollanan Form bilgilerini
$HTTP_GET_VARS adlı dizi değişkende tutar. Yine daha önce görmüştük ki dizi değişkenlerin içinde ya sayı
ya da isim olarak bir anahtar ve bu anahtarın temsil ettiği bir değer vardır. Burada, $HTTP_GET_VARS
değişkeninin anahtar ve değerlerini $anahtar ve $deger değişkenlerine => operatörünün yardımıyla, bir foreach
döngüsü içinde atıyoruz. Döngü kullanmamızın sebebi, dizi değişkenin içinde birden fazla anahtar=değer çifti
bulunması ihtimali bulunması; döngü olarak da foreach kullanmamızın sebebi dizide kaç adet anahtar=değer
çifti bulunduğunu bilmememizdir.
Form'dan POST Metoduyla Gelen Bilgiler
HTML Form etiketinin METHOD parametresinin değeri GET olabildiği gibi POST da olabilir; ve HTTP
sunucusu bu yöntemle gelen bilgileri $HTTP_POST_VARS dizi-değişkeninde tutar. Yukarıdaki çok-seçmeli
Form'un FORM etiketini şöyle değiştirerek, formlar03b.htm adıyla kaydedelim:
<FORM ACTION="formlar03a_isle.php" METHOD="POST">
Aynı şekilde son Form işleme programımızda da sadece şu değişikliği yapalım:
foreach ($HTTP_POST_VARS as $anahtar=>$deger ) {
Bu dosyayı da formlar03b_isle.php adıyla kaydedelim. HTML sayfasını açarak formu doldurur ve
gönderirseniz, sonucun metod olarak GET kullanan Form'dan hiç farklı olmadığını göreceksiniz. Çünkü PHP
programı bu Form'un gönderdiği bilgilerin $HTTP_POST_VARS değişkenine yazıldığını biliyordu.
19
$HTTP_POST_VARS da PHP açısından içinde anahtar=değer çiftleri olan bir dizi-değişkendir; bu değişkenin
değerlerine de tıpkı daha önce olduğu gibi erişiriz.
HTTP açısından GET ile POST'un tek farkı gelen değerlerin nerede nasıl tutuldueğundan ibaret değildir. GET
yönteminde, bir Browser'ın sunucuya gönderebileceği verinin uzunluğu, Sunucunun ayarlarına bağlı olmak
üzere, sınırlıdır. Oysa POST ile alacağımız veri miktarı, sadece sunucunun bulunduğu bilgisayarın sabit disk
alanıyla sınırlıdır. (Tabiî bu günümüzde sınırsızdır, anlamına geliyor!) Bir başka fark, Browser'ın GET yoluyla
gönderdiği verilerin (ve bu arada ziyaretçinin parola olarak yazdıklarında ekrana yıldız olarak çıkan metinler
dahil) tümü, sunucuya, URL-kodlanmış metin olarak, Browser'ın URL adres hanesine de yazılmasıdır. Bir çok
kullanıcı için bu bir güvensizlik belirtisi sayılır. Bu iki unsur Formlarımızda metod olarak GET yerine POST
kullanmanın daha yerinde olduğunu gösterir.
Tedbirli Web programcılığı, özellikle birden fazla tasarımcı ve programcının birlikte çalıştığı ve Formlarda
hangi yöntemin tercih edildiğini bilmenin kolay olmadığı projelerde, Form bilgisi işleyen PHP
programlarımızda Form'da hangi metod kullanılmış olursa olsun, işlyeyici programın iki duruma da elverişli
olmasını sağlamaktır. Sözgelimi son yazdığımız Form işleme programımızı şöyle değiştirirsek, ve Form içeren
HTML sayfasını bu programı veri gönderecek şekilde değiştirirsek (nasıl?), her iki metodla gönderilen verileri
işleme yeteneğine sahip bir program elde etmiş oluruz.
<?php
$form_bilgisi = ( isset($HTTP_POST_VARS ) )
? $HTTP_POST_VARS : $HTTP_GET_VARS;
foreach ($form_bilgisi as $anahtar=>$deger ) {
if ( gettype ($deger ) == "array" ) {
print ("$anahtar == <br>\n");
foreach ( $deger as $yeni_degerler )
print (".. $yeni_degerler<br>");
}
else {
print ("<b>$anahtar = $deger <br>\n");
}
}
?>
MySQL'de bir tablo oluşturmak için gerekli CREATE TABLE komutu şöyle kullanılır:
CREATE TABLE uyeler (adi VARCHAR(30), soyadi VARCHAR(30), üye_no INT ) ;
Bu komutla, "uyeler" isimli üç sütunlu bir tablo oluşturulur: birinci ve ikinci sütunlarda en fazla 30, karakterlik
değişen boyutta alfanümerik değerler yer alırken, üçüncü sütunda sadece tam sayı olan değerler bulunabilir. Bu
komutla oluşturulan tabloya INSERT INTO komutuyla veri girebilirsiniz:
INSERT INTO uyeler (adi, soyadi, uye_no) VALUES ('Muharrem','Taç','1234')
Bir tablonun oluşturulması ile içine veri yerleştirilmesi komutları ayrı ayrı zamanlarda, ayrı işlemler olarak
yapılabileceği gibi, toplu bir metin halinde, otomatik olarak da yapılabilir.
MySQL veritabanından bilgi edinmek için SELECT komutunu kullanırız:
SELECT * FROM uyeler ;
Bu, MySQL'e, uyeler adlı tablodaki bütün değerlerin okunmasını bildirir. Buradaki "*" işareti, "bütün
sütunlardaki bütün değerler" anlamına gelir. Diyelim ki yukardıda oluşturduğumuz tablonun sadece "adi" ve
"soyardi" sütunlarındaki bilgileri almak isteseydik, bu komutu şöyle yazacaktık:
SELECT adi soyadi FROM uyeler ;
Bir veritabanındaki bilgilerin yenileriyle değiştirilmesini, yani veritabanı dosyasının güncelleştirilmesini
UPDATE komutu sağlar. Bu komutu kullanarak veritabanımızdaki bazı kutucukların içindeki bilgileri
20
değiştirebiliriz. Veritabanı dosyalarını güncelleştirme zorunluğu bulunması ise bize veritabanı tasarımının çok
önemli olduğunu gösterir. Örneğin:
UPDATE uyeler SET adi = "Şahika" ;
Bu komut, veritabanındaki bütün satırlarda, birinci sütundaki değerleri "Şahika" olarak değiştirmekle
sonuçlanırdı. Amacımız bu ise, sorun değil; ancak çoğu kez MySQL'e hangi satırda (veritabanı tekniğindeki
terimle söylersek, hangi kayıtlarda) değişiklik yapılacağını daha ayrıntılı sölememiz gerekir. Veritabanı
dosyamızı oluştururken, her kaydın diğer kayıtlarda olmayan (unique) bir sütun (bunu da veritabanı
tekniğindeki terimle söylersek. alan) bulunmalıdır, ki MySQL'e yapılacak değişikliğin tam yerini söyleyelim.
Örneğin
UPDATE uyeler SET adi = "Şahika" WHERE uye_no = 1234;
MySQL bu komutu alınca sadece üye numarası 1234 olan kişinin (yani uye_no alanındaki değer 1234 olan
kaydın) "adi" alanındaki değeri silecek ve yerine verdiğimiz yeni değeri yazacaktır. Böyle birincil alanı
bulunan, iyi düşünülmüş bir veritabanından seçim yapmak da kolay olur. Örneğin:
SELECT adi soyadi FROM uyeler WHERE uye_no >= 123;
deyimi ile tablomuzda bulunan kayıtlardan sadece üye numarası 123'den büyük olanları seçebiliriz.
Bir MySQL veritabanındaki kaydı silmek için DELETE komutunu kullanırız:
DELETE FROM uyeler WHERE uye_no = 1234;
Veritabanında sadece bir kayıtta üye numarası 1234 olacağı için bu komutla sadece bir satır silinecektir. Bu
komutu, diyelim ki üyelik kaydını yenilememiş kişilerin tümünü silmek için de kullanabiliriz. Veritabanımızda
üyelik kaydının yenilendme tarihini gösteren bir alan bulunduğunu varsayalım:
DELETE FROM uyeler WHERE yenileme_tarihi < 2000-01-31;
Bu komutla, üyeliğini yenileme tarihi 31 Ocak 2000'den eski olan bütün üyelerimizin kaydını veritabanından
silmiş oluruz.
Bu komutların MySQL'in DOS komut işlemcisi ile komutsatırından yapılacağını belirtmemiz gerekir. Bunu
yapabilmek için MySQL Server'ın Windows'da çalıştırılması gerekir. MySQL'in paylaşım sürümünü kullanmak
için Windows sistemlerinde mysqld-shareware.exe programını çalıştırmanız gerekir. Bunun için DOS komut
istemcisi penceresinde "C:/mysql/bin" dizinine giderek, şu komutu vermemiz yeter:
mysqld-shareware
MySQL sürücülerinizin kişisel Web sunucusunda başarıyla çalıştığına, kitapçığın baş tarafında belirttiğimiz
küçük alıştırmayı yaparak emin olduktan sonra gerçek bir veritabanı dosyası yazabiliriz.
Yukarıda gördüğümüz komutları komut istemci satırından tek tek verebileceğimiz gibi, bir düzyazı dosyasında
toplayıp, MySQL programına da otomatik olarak yaptırabiliriz. Bu dosyaya, içindeki verileri alıp veritabanına
boca edeceğimiz için, Dump dosyası denir.
Aşağıdaki metni MySQL programının kurulu olduğu dizindeki /bin/ alt-dizinine (muhtemelen c:\mysql\bin)
veri.dump adıyla kaydedin (Notpad kullanıyorsanız, dosya adına .txt eklendiğine dikkat edin!)
CREATE TABLE calisanlar ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), adi
VARCHAR(20), soyadi VARCHAR(20), adres VARCHAR(60), pozisyon VARCHAR(60));
INSERT INTO calisanlar VALUES (1 , 'Sahika' ,'Tabak' ,'PCLife Dergisi, Istanbul' , 'Yazar');
21
INSERT INTO calisanlar VALUES (2 , 'Muharrem' , 'Tac' , 'Işık Kultur Merkezi, Bursa' , 'Yonetmen');
Bu metnin sadece üç satır olmasına, örneğin Notpad'de Düzen menüsünde Sözcük Kaydır maddesinin işaretsiz
olmasına dikkat edin. Daha sonra yine DOS komut istemcisi penceresinde MySQL programının dizininde /bin
alt-dizinine gidin ve şu komutu yazın:
mysqladmin -u root create veri
MySQL veri adlı veritabanının oluuştuğunu bildirecektir. Şimdi içi boş bir veri dosyamız oldu. Yazdığımız
dump dosyasındaki bilgileri veritabanı dosyasına işletmek işini MySQL yapacakatır. Bunu, şu komutla
yapabiliriz:
mysql –u root veri < veri.dump
İşlerin yolunda gidip gitmediğini c:\mysql\data dizininde veri adlı bir klasör oluşturulduğunu kontrol ederek
anlayabiliriz. Bu klasörün içinde calisanlar.frm, calisanlar.isd ve calisanlar.ism adında dosyalar bulunması
gerekir.
PHP-MySQL İlişkisi
Böylece, MySQL ile bir veritabanı dosyası oluşturma işlemi bitmiş oldu. bir PHP programı yazarak bu
veritabanındaki kayıtları okutabiliriz. Bunu yapmadan önce yine hızlı şekilde PHP-MySQL ilişkisinini sağlayan
fonksiyonlara gözatalım.
PHP programlarımızda veritabanından yararlanabilmek için programın önce Web sunucusu aracılığıyla
veritabanı dosyası ile bağlantı kurması gerekir. Başka bir deyişle, PHP programının veri ile arasında bir yol
açması gerekir. MySQL açısından ise bu bağlantı, veri sunucusunda yeni bir oturum açılması anlamına gelir. İki
program arasındaki bu ilişkiyi PHP'nin mysql_connect() fonksiyonu yapar. Bu fonksiyonun alabileceği üç
parametre vardır:
$veri_yolu = mysql_connect ("localhost" , "root" , "parola" );
Burada "localhost" yerine MySQL programının parçası olarak çalıştığı sunucunun adı yazılır. "root" bu
MySQL sunucusunda açılacak oturumun kimin adına açılacağını belirter. "root" kelimesi, sunucunun yönetici
olarak oturum açılacağı anlamına gelir: "parola" kelimesinin yerine de MySQL'i kurarken belirlediğimiz bir
kullanıcı parolası varsa, onu yazarız. Bu komutta yer alan $veri_yolu değişkeni, açılacak veri yolunun, PHP ile
MySQL veritabanı sunucusu arasındaki bağın tanıtıcı işareti olacaktır. Bu bağlantı kurulduktan sonra, açtığımız
veri yolundan gelecek bilgiler ve veritabanına gidecek bilgiler bu değişken aracılığıyla gerçekleşecektir. Veri
sunucusu ile veri yolu bağlantısı kurulursa, bu değişken değer tutar hale gelir; bağlantı kurulamazsa bu
değişken boş kalır. mysql_connect() fonksiyonunun başarılı olup olmadığını bu değişkenin durumunu sınayarak
anlayabiliriz. Örneğin:
$veri_yolu =mysql_connect("kara-murat", "root");
if ( ! $veri_yolu) die ("MySQL ile veri bağlantısı kurulamıyor!);
Burada veri sunucusunun bulunduğu Web sunucusunun adının "kara-murat" olduğuna, ve ooturumun
"root" yetkileriyle açıldığına dikkat edin. İkinci satırdaki if deyimi, $veri_yolu değişkeninin değer içerip
içermediğine bakıyor ve değişkende bir değer yoksa, bağlantı kurma girişini durdurarak, ziyaretçiye hata mesajı
gönderiyor.
Bağlantı başarıyla kurulduktan sonra PHP programı, bu yoldan, veritabanı sunucusuna, hangi veritabanı
dosyasından yararlanmak istediğini bildirmelidir. Buna veritabanı dosyası seçme işlemi denir ve
mysql_select_db() fonksiyonu ile yapılır:
mysql_select_db( "veritabanın_adı" , $veri_yolu ) or die ("Veritabanı açılamıyor!".mysql_error() );
Bu fonksiyonun başarıyla icra edilip edilmediği fonksiyondan dönen değerin true/doğru veya
false/yanlış olmasından anlarız. Bu değer false ise bu deyimin die() bölümü icra edilecek ve Browser
penceresine veritabanının açılamadığı mesajıyla birlikte MySQL'in hata mesajı da gönderilecektir. PHP'nin
MySQL veritabanını seçememesi çoğu zaman kullanıcı yetkilerinin Internet ziyaretçilerini kapsayacak şekimde
22
düzenlenmemiş olmasından kaynaklanır. Bu durum gerçek Web sunucusunda ortaya çıkarsa, Web sunucusu
yönetimine başvurmak gerekir.
Şimdi bu anlattıklarımızı biraraya getiren kolay bir PHP programıyla biraz önce oluşturduğumuz "veri"
adlı veritabanından bir birinci kişiye ait verileri "okutarak, HTML sayfamızda kullanalım. Aşağıdaki programı,
veri_01.php adıyla kaydedelim:
<?php
$veri_yolu = mysql_connect("kara-murat", "root");
if ( ! $veri_yolu ) die ("MySQL ile veri bağlantısı kurulamıyor!");
mysql_select_db("veri" , $veri_yolu)
or die ("Veritabanına ulaşılamıyor!" . mysql_error() );
$sonuc = mysql_query("SELECT * FROM calisanlar",$veri_yolu);
printf("Adı: %s<br>\n", mysql_result($sonuc,0,"adi"));
printf("Soyadı: %s<br>\n", mysql_result($sonuc,0,"soyadi"));
printf("Adresi: %s<br>\n", mysql_result($sonuc,0,"adres"));
printf("Görevi: %s<br>\n", mysql_result($sonuc,0,"pozisyon"));
?>
Burada, mysql_connect() fonksiyonu ile "kara-murat" isimli sunucuda root adına MySQL sunucu ile
bağ kurduktan sonra mysql_select_db() fonksiyonu ile bu bağı kullanarak veri isimli veritabanından veri
çekeceğimizi bildiriyoruz. Daha sonra mysql_query() fonksiyonu ile bu veritabanındaki “calisanlar” isimli
tablodan “herşeyi” seçiyoruz ve seçilenleri $sonuc dizi-değişkeninde topluyoruz. $sonuc değişkenin değerlerini
görüntülemek için PHP'nin özel bir fonksiyonu olan mysql_result() fonksiyonu kullanıyoruz. Burada metin
biçimlendirmekte yararlandığımız printf() fonksiyonunu daha önce tanımıştık.
mysql_query() fonksiyonu, PHP'nin SQL dilini kullahnarak veritabanı işlemleri yapmasını sağlayan
başlıca aracıdır. Yukarıda kısaca değindiğimiz bütün SQL komutlarıyla yazacağımız bütün "query" deyimlerini
bu fonksiyon ile icra ettireceğiz. mysql_result() ise SQL değil, Data Manipulation Language (DML) denen
başka bir veri-biçimlendirme dilinin inceliklerinden yararlanmamızı sağlar. Burada $sonuç değişkeninde
veritabanı kayıt biçiminde tutulan verileri PHP'nin ve dolayısıyla HTML'in anlayacağı biçime çeviren bu
fonksiyondur.
Şimdi bu programı biraz geliştirilim ve daha önce kendi kendine bilgi veren Form örneğimizi buraya
uygulayalım; ancak bu kez, ziyaretçimizin vereceği bilgileri veritabanına ekleyelim; ve kendi adının
veritabanına eklendiğini sayfadaki tabloyu güncelleyerek bildirelim. Önce şu programı, veri_02.php adıyla
kaydedelim:
<?php
// Form doldurulduktan sonra program buradan başlıyor
if ( isset ( $HTTP_POST_VARS )) {
$veri_yolu = mysql_connect("server", "root");
if ( ! $veri_yolu ) die ("MySQL ile veri bağlantısı kurulamıyor!");
mysql_select_db("veri" , $veri_yolu) or die ("Veritabanına ulaşılamıyor!" . mysql_error() );
$ekle = mysql_query("INSERT INTO calisanlar ( adi , soyadi , adres , pozisyon ) VALUES ('$adi', '$soyadi',
'$adres', '$pozisyon' )", $veri_yolu );
echo ("
<HTML>
<HEAD>
<TITLE>PHP'de Veritabanı</TITLE>
<meta http-equiv='content-type' content='text/html; charset=ISO-8859-9'>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1254'>
");
$sonuc = mysql_query("SELECT * FROM calisanlar", $veri_yolu);
echo ("
<TABLE>
<TR>
<TD><B>Uzmanın Adı</B></TD>
<TD><B>Çalıştığı Yer</B></TD>
23
<TD><B>Görevi</B></TD>
</TR>
\n");
while ($satir = mysql_fetch_row($sonuc)) {
printf("<TR><TD>%s %s</TD><TD>%s</TD></TD><TD>%s</TD></TR>\n", $satir[1], $satir[2],
$satir[3], $satir[4]);
}
echo ("
</TABLE>\n
<p><B>Teşekkür ederiz.</B></P>
<A HREF='index.php'>Ana sayfaya dönmek için tıklayınız</A>
");
}
// program ilk kez açılıyorsa buradan başlayacak
else {
echo ("
<HTML>
<HEAD>
<TITLE>PHP'de Veritabanı</TITLE>
<meta http-equiv='content-type' content='text/html; charset=ISO-8859-9'>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1254'>
</HEAD>
<BODY>
<p><B>Mevcut Üyelerimiz</B></P>
");
$veri_yolu = mysql_connect("server", "root");
mysql_select_db("veri", $veri_yolu);
$sonuc = mysql_query("SELECT * FROM calisanlar", $veri_yolu);
echo ("<TABLE>
<TR>
<TD><B>Uzmanın Adı</B></TD>
<TD><B>Çalıştığı Yer</B></TD>
<TD><B>Görevi</B></TD>
</TR>
\n");
while ($satir = mysql_fetch_row($sonuc)) {
printf("<TR><TD>%s %s</TD><TD>%s</TD></TD><TD>%s</TD></TR>\n", $satir[1], $satir[2],
$satir[3], $satir[4]);
}
echo ("
</TABLE>\n
<p></p>
<p><B>Siz de aramıza katılmak ister misiniz?</B></P>
<FORM ACTION='$PHP_SELF' METHOD='POST'>
<TABLE>
<TR><TD>Adınız: </TD><TD><INPUT TYPE='TEXT' NAME='adi'></TD></TR>
<TR><TD>Soyadınız: </TD><TD><INPUT TYPE='TEXT' NAME='soyadi'></TD></TR>
<TR><TD>İş Yeriniz: </TD><TD><INPUT TYPE='TEXT' NAME='adres'></TD></TR>
<TR><TDALIGN='left'>Göreviniz: </TD><TD><INPUT TYPE='TEXT'
NAME='pozisyon'></TD></TR>
<TR><TD ALIGN='center'><INPUT TYPE='SUBMIT' VALUE='Defteri imzala!'></TD><TD
ALIGN='center'><INPUT TYPE='RESET' VALUE='Tümünü sil!'></TD></TR>
</TABLE>
</FORM>
</BODY>
24
</HTML>
");
}
?>
Program, ilk kez çalıştığında, çalışmaya ikinci yarısındaki else() deyiminden itibaren icra ediliyor;
ziyaretçilerimize mevcut üyelerimizin listesini veriyor ve üye olmak isteyip istemediğini soruyor. Arzu edenin
üye olabilmesi için gerekli Form'u da sunuyoruz.
Programın her iki bölümünde de veri okuyan ve bunu görüntüleyen, yani programın canalıcı noktası,
mysql_fetch_row() fonksiyonudur. PHP'nin DML araçlarından olan bu fonksiyonun marifeti, bir
veritabanından elde edilen sonucu satır-satır okumasıdır. Nitekim, burada bu fonksiyondan dönen değeri $satir
adını verdiğimiz dizi-değişkene yazıyoruz ve sonra printf() bu dizinin elemanlarını sırayla Browser penceresine
gönderiyor. (Burada olduğu gibi $satır değişkenin içinde kaç kaç sütun olduğunu bildiğimiz durumlarda printf()
fonksiyonunu döngüsüz kullanmak mümkündür. Ancak veritabanının sütun sayısını bilmiyorsak bunu
sözgelimi count($satir) yoluyla öğrenip, bu bilgiyle bir for döngüsü kurmak yerinde olur.
Programın iki bölümü arasındaki tek fark, $HTTP_POST_VARS dizi-değişkeninin bir değer tutması
halinde (yani ziyaretçi sayfayı açtığında karşısına çıkan Form'u doldurduğu ve gönderdiği zaman) çalışan
birinci bölümünde, mysql_query() fonksiyonunun bu kez veritabanı dosyasına ziyaretçinin verdiği bilgileri
işlemek üzere farklı bir SQL deyimi içermesidir. Nasıl yazıldığını daha önce ele aldığımız bu fonksiyon
"calisanlar" tablosundaki dört alana elimizdeki dört değişkenin değerlerini SQL'in INSERT komutuyla ekliyor.
PHP'nin MySQL ile yapabileceğimiz veritabaynı yönetimi için 20'ye yakın fonksiyonu vardır; MySQL
de bu fonksiyonlar yardımıyla çok sayıda iş yapabilir. Bu konuda ayrıntılı bilgiyi MySQL ve PHP'nin Internet
sitelerin yanı sıra, http://hagen.let.rug.nl/~s0367672/pm_lin_e.htm adresinde bulabilirsiniz.
Bu konuya son verirken, Form örneğindenden farklı olarak yukarıdaki veritabanı örneğinde ziyaretçinin
gireceği bilgilerle ilgili güvenlik önlemleri alınmadığına dikkatinizi çekerim.
Tırnak İşareti Sorunu
PHP4.0'ü tasarlayanlar, özellikle zararlı kodları gizlemekte kötüniyetli kişilerin yararlandığı tek ve çift
tırnak işaretlerinin sisteme zarar vermesini önlemek amacıyla, ziyaretçi girdilerindeki tırnak işaretlerinin
otomatik olarak Escape karakteri ile zararsız hale getirilmesini sağlamış bulunuyorlar. Buna göre bir ziyaretçi
bir forma söz gelimi "PHP'nin yararları" yazacak olursa bu "PHP\'nin Yararları" haline dönecektir. Kimi zaman
çirkin görünse de bu, bir sitenin güvenliği için önemli bir kazançtır.
Bu sistemin işleyebilymesi için sunucu yönetiminin PHP kurulumu sırasında php.ini dosyasında gereken
düzenlemeyi yapmış olması gerekir. Bunun yapılmadığı durumlarda, programcı olarak siz, PHP'nin
değişkenlerin değerlerinde gerektiğinde tersbölü işareti uygulamasını, bu değişkeni addslashes() fonksiyonu ile
birlikte kullanarak çözümleyebilirsiniz. Örnek:
$yeni_degisken = addslashes($eski_degisken)
MySQL Yönetimi
Tüm SQL işlemleri için Php kullanılabileceği gibi veritabanı sunucusunda veritabanı, tablo oluşturmak,
değiştirmek ya da diğer işlemler için farklı arayüzler kullanmak zaman kazandırıcı olabilir. Php kullanılarak
geliştirilen PhpMyAdmin sayesinde web sunucu aracılığıyla tüm MySQL özelliklerini yönetebilmek
mümkündür. Hem Unix hem de Windows ortamları için PhpMyAdmin tavsiye edilir. Windows'da da MySQL'i
yönetmek için myAdmin adındaki yazılım da oldukça kullanışlıdır. MySQL'e ve Php'ye yeni başlayan
kullanıcılar için veritabanını tanımak amacıyla ayrı bir yazılım kullanmaları tavsiye edilebilir.
Php'de kullanılabilecek MySQL Komutları :
mysql_affected_rows :
mysql_close :
mysql_connect :
mysql_create_db :
Bir önceki işlemde etkilenen satır sayısı
Belirtilen MySQL bağlantısını kapatır
Sunucuya veritabanı bağlantısı açar
MySQL'de veritabanı açar
25
mysql_data_seek :
mysql_db_query :
mysql_drop_db :
mysql_errno :
mysql_error :
mysql_fetch_array :
mysql_fetch_field :
mysql_fetch_lengths :
mysql_fetch_object :
mysql_fetch_row :
mysql_field_name :
mysql_field_seek :
mysql_field_table :
mysql_field_type :
mysql_field_flags :
mysql_field_len :
mysql_free_result :
mysql_insert_id :
mysql_list_fields :
mysql_list_dbs :
mysql_list_tables :
mysql_num_fields :
mysql_num_rows :
mysql_pconnect :
mysql_query :
mysql_result :
mysql_select_db :
mysql_tablename :
Sonuç satırında belirtilen sıraya geçer
MySQL'e sorgu gönderir
Sunucudan veritabanı siler
Bir önceki işlemdeki MySQL hata numarasını verir
Bir önceki işlemdeki MySQL hata mesajını verir
Sonuçları dizi değişkeni olarak alır
Sonuç tablosundaki alan adını obje olarak alır
Sonuç tablosundaki dizi değişkenin uzunluğunu alır
Sonuç satırını obje olarak alır
Sonuç tablosundan dizi değişkeni olur
Sonuç tablsundaki sonucun tablodaki alan adını verir
Sonuç tablosunda sıra indisini belirtilen yere götürür
Alan adı verilen sonucun tablo adını verir
Sonuçtaki alanın hangi tip olduğunu belirtir
Sonuçtaki alanın hangi tür ekstra parametrelerle tanımlandığını belirtir
Sonuçtaki alanın veritabanındaki uzunluğunu verir
Sonuçlar için atanan hafızayı boşaltır
Bir önceki veri yerleştirmede oluşan otomatik veri değerini verir
Sonuçtaki tüm tablo alanlarını listeler
Sunucudaki tüm veritabanlarını listeler
Veritabanındaki tüm tabloları listeler
Sonuçtaki alan sayısını verir
Sonuçtaki satır sayısını verir
Sunucuya kalıcı bir bağlantı tanımlar
Veritabanına sorgu gönderir
Sorgudan dönen sonuçları alır
Sunucudan veritabanı seçer
Verilen alanın ait olduğu tablo adını verir
ASP.NET TELAFİ NOTLARI
26
Örnek 1:
degiskenYaz.aspx
<%@ page language="VB" %>
<script runat="server">
sub page_load(obj as object, e as eventargs)
dim merhaba as string
merhaba="Değişkenler ile string ifadelerin gösterimi
farklıdır."
response.write("merhaba" & "<br>")
response.write(merhaba)
end sub
</script>
0 <html><body></body></html>
27
ÖRNEK 2:
1 <script language="VB" runat="server">
2 sub page_load(obj as object, e as eventargs)
3 dim ad as string
4 ad = "MEB"
5 response.write(ad &"<br>")
6 response.write(AD &"<br>")
7 response.write(aD &"<br>")
8 response.write(Ad &"<br>")
9 end sub
10 </script>
Örnek3:
28
29
ÖRNEK 4:
parola.aspx
1 <script language="VB" runat="server">
2 dim parola as string = "192025"
3 sub onaylama(sender as object, e as eventargs)
4 if textbox1.text = parola then
5 label2.text="Parola onaylandı"
6 end if
7 if textbox1.text <> parola then
8 label2.text = "Parola hatası"
9 end if
10 end sub
11 </script>
12 <html><body>
13 <form runat="server">
14 <asp:label id="label1" text="Parola" runat="server"/>
15 <asp:textbox id="textbox1" ontextchanged="onaylama"
runat="server"/>
16 <asp:label id="label2" runat="server"/>
17 </form></body></html>
ÖRNEK 5:
3DefaYaz.aspx
1 <script language="VB" runat="server">
30
2 dim i as integer
3 sub Page_Load(sender as object, e as eventargs)
4 for i=1 to 3
5 response.write("Türkiye" & "<br>")
6 next
7 end sub
8 </script>
31
ÖRNEK 6:
32
ÖRNEK 7:
33
Grafik ve Animasyon Telafi Notları
Temel kavramlar
Pixel: Ekranda kontrol edilebilen ve resimleri tanımlayabilen en küçük noktalara (ki bu noktalar kare
şeklindedir) pixel denir. Bir pixel kırmızı, yeşil ve mavi renklerin karışımından oluşur. Pixellerin sayısı ve renk
derinliği resmin kalitesini belirler. Pixel tek başına bir ölçüyü ifade etmez. Verilen pixel sayısı belirtilen alan
içerisindeki pixel sayısıdır.
Örneğin;
10 cm’deki pixel sayısı 10 denilirse; 10 cm =100mm,
pixel boyutu: 100/10= 10mm’dir.
PIcture ELement den kısaltılmıştır. Resimlerin tanımlanmasında kullanılan temel birimdir. Pixel tabanlı
resim programlarına Bitmap adı verilir. Dijital ortamda bulunan resimler milyonlarca pixelin bir araya
gelmesiyle oluşurlar. Renk ve şiddet düzeyleri ayrıntıları ve sürekliliği belirler. Her pixel rengini ve şiddetini
ifade eden bir sayı dizisi ile gösterilir.
Şekilde bir resmin temel yapısı görülmektedir. Her bir kare bir pixeli
temsil eder. Pixeller 0 ve 1 değerini alır 1 ve 0 değerleri aydınlık ve karanlık
bölgeleri, nesne ve zemini
temsil ederler. Video resimlerinde ışık
seviyelerini daha iyi derecelendirebilmek için pixel başına 1 byte değer
kullanılır. Bununla 0 (siyah) ile 255 (beyaz) arasında tam sayılar elde edilir.
Ara değerlerde gri tonları olarak isimlendirilir. Renkli resimlerde ise bu ara
değerler, kırmızı, mavi, yeşil olan temel renklerin her biri için m*n ‘lik bir
diziye ihtiyaç duyarlar. Dolayısıyla her dizinin gri seviyeleri; kırmızı, mavi ve yeşil pixelde, bileşenlerin
şiddetini belirler.
Buradan çıkarak 8 bitlik bir resimde, her pixel 1 ve 0’lardan oluşur. Bu bitler 28 yani 256 renk meydana
getirir.
Dot Pitch(=DPI (Dot Per Inch)): Pixel’i oluşturan kırmızı, mavi ve yeşil renklerinden her birine dot
(nokta); Aynı renkli noktaların arasındaki uzaklığı belirleyen ifadeye ise dot pitch ismi verilir.
1 inch(=2,54 cm) de noktalanan yada pozlanan pixel sayısına dot per inch adı verilir ki bu noktalama
yada pozlama işlemi yazıcı yada tarayıcı gibi aygıtlarla gerçekleştirilir.
Inch başına düşen nokta sayısı azalırsa kalite kaybı olur, nokta sayısının gereksiz artması ise kaliteli olur
anlamına gelmez. Gereksiz nokta artımı görüntü işlemeyi zorlaştırır, dosya boyutu artar ve görüntü izlenme hızı
düşer.
Çözünürlük: Bir defada ekranda görüntülenebilen pixel sayısıdır. Örneğin; 800*600 çözünürlüğündeki
ekranda 480000 adet pixel bulunmaktadır.
34
Resolution: Bir resmin pixel yoğunluğu yani PPI (= Pixel Per Inch) 1 inch karede bulunan pixel
sayısıdır. Internette kullanılacak olan resimler için 72 PPI en ideal ölçüdür.
Resim formatları
Kodlama ve sıkıştırma algoritmalarına göre nitelendirilen ve en çok karşılaşılan formatlar şunlardır.
1. BMP: En temel resim formatıdır. Windows işletim sistemi için Microsoft, PCX formatını geliştirerek
oluşturmuştur. 16 ve daha fazla renk kaydedebilen ve herhangi bir sıkıştırma yapmayan, oldukça hızlı ve boyut
olarak hafızada fazla yer kaplayan bir formattır. Pixel derinliği 1-24 bit arasındadır. Windowsta Paint
programının desteklediği dosya formatıdır. Bu formatta renk sayısından ziyade resmin büyüklüğü önemlidir.
Mesela; 16 renkli(24), 800*600 çözünürlüğünde bir BMP dosyası: 800*600*1/2=240000 byte(=240 kbyte) yer
kaplar. (1/2 alınmasının nedeni, 1 byte 8 bittir, 16 renkte 4 bit yani 1 byte’ın yarısı kullanılmıştır.)
2. GIF (Graphics Interchange Format): Internet üzerinde yaygın olarak kullanılan bir format olup az sayıda
renk içeren (1 ve 8 bitlik) dökümanlarda oldukça iyi sıkıştırma sağlar. Buda resmin hızlı görüntülenmesini
doğrudan etki eder. Animasyonlarda zamanlama ve farklı boyutlardaki resimleri bir arada tutma desteği ile
saydam renk tanımlaması ve farklı katmanlarda çalışabilmesi gibi üstünlükleri vardır. LZW isimli sıkıştırma
algoritması kullanmaktadır.
3. JPEG (=JPG (The Joint Photographic Experts Group)): Gerçek renk değerini içeren bir sıkıştırma
formatıdır. Görüntünün algılanması için çok gerekli olmayan detayları atarak sıkıştırma yapılmasından dolayı
kayıplı formatlar arasında yer alır. Kaybedilen detaylar hiçbir şekilde getirilemez. 256 ve daha fazla renk
kullanan resimler için idealdir. Dolayısıyla daha az renk içeren uygulamalarda kaliteyi düşürür ve boyutunda
değişme gerçekleştirmez. 24 bit True Color uygulamalarda resim kalitesinde gözle görülür kayıplar meydana
gelmektedir. Megabyte olan resim boyutlarını duruma göre rahatlıkla kilobyte seviyelerine düşürür.
4. TIFF (=TIF (Tagged Image File Format)): Farklı işletim sistemleri ve uygulamalar arasında kayıpsız ve
esnek bir dosya yapısı sağlayan çalışmalar için kullanılan formattır. Bu format, RGB, CMYK, LAB gibi tüm
renk birimlerini destekler. Pek çok sıkıştırma algoritmasıyla birlikte sık olarak LZW sıkıştırma algoritmasını da
kullanmaktadır. Bu formatı kullanan resimler, herhangi bir uygulama ortamına alındıklarında, görüntünün ve
zeminin renk değerlerini azaltma ve değiştirme olanağına izin verirler. Çok sayıda alfa kanalı desteklemektedir.
JPG’e göre hafızada daha fazla yer kaplamaktadır.
5. PSD: Photoshop uygulamalarına özel bir formattır. Çok sayıda alfa kanalı, path ve layer,’ı destekleyerek,
ikili dosya, indekslenmiş renk, RGB, CMYK, LAB biçimlerinde çalışmaya olanak sağlar. Çalışmaya yönelik
kullanılır, dosya transferine pek olanak sağlamaz.
35
6. PNG (Portable Network Graphics): 48 bitlik True Color desteği olan formattır. Kayıpsız Wave Table
sıkıştırma yöntemini kullanır. Şu anda mevcut olmayan kayıpsız gerçek renk ve saydamlık bilgilerini içeren
resim kalitesini internete taşımayı amaçlar. Bu saydamlık bilgileri alfa kanalında saklanmaktadır.
7. EPS (Encapsulated Postscript): Vektör ve pixel tabanlı görüntüler için kullanılan formattır. Çoğunlukla
matbaacılar tarafından kullanılır. QuarkXpress, Adobe Photoshop, Illustrator, Corel Draw vb. programlarda
kullanılırlar.
Bunların dışında karşılaşılabilecek resim formatları ise şunlardır: PDF, DCS, PICT, RAW, TARGA,
WBMP…
Photoshop araç kutusu ve işlevleri...
Rectangular Marquee Tool “,adobe photoshop ta kare, dikdörtgen
çizmek için seçili alan yaratir. Klavye kisa yolu gördügünüz gibi ” M ”
tusudur. Kare çizmek istersek, kare seklini seçip, klavyemizdeki Shift
tusuna basili tutarak imajimiz üzerinde mause muzu sürüklemeliyiz.
Aksi halde dikdörtgen alan seçer. Elliptical Marquee Tool , adobe
photoshop da Sayet Daire çizmek istersek, daire seklini seçip yine klavyemizdeki Shift tusuna basili tutarak
imajimiz üzerinde mause muzu sürüklemeliyiz. Aksi halde elips alan seçer.Digerleri, tek pixel olarak yatay (
Single Row Marquee Tool ) veya dikey ( Single Column Marquee Tool) alan seçmeye yarar.
Move Tool“, adobe photoshop ile seçilen bir alani veya Layer ( Katman )’i tasimaniza
yarar.Otomatik seçim özelligi oldugu gibi imajin üzeründe iken sag tus yaparsaniz hangi Layer de
oldugunuzu da belirtir. Klavuzluk görevi vardir. ( V )
Lasso Tool“ adobe photoshop ta kement Araci denir. Imajiniz üzerinde
serbestçe çizerek alan seçebilirsiniz. Resmin belli noktalarini tek tek
seçmenize Polygonal LassoToolile yapabilirsiniz.adobe photoshop Magnetic
Lasso Toolise kontrast ve renge duyarlidir.
36
Magic Wand Tool“adobe photoshop ta Imaj üzerindeki benzer renkleri seçim aracidir. Benzer
renkleri veya tonlari seçebilirsiniz
Crop Tool“adobe photoshop ta kesme Araci denir. Imajinizdaki fazlaliklari kesmenize, fazlaliklari
temizlemenize ve imajinizi serbest olarak döndürmenize yarar
Slice Tool“adobe photoshop da Dilimleme Araci, imaj üzerinde dilimler yaratmaniza yarar.
Imajinizi dilimlere bölebilirsiniz. Slice Select Tool ise dilimleri seçmemize yarar.
Airbrush Tool“adobe photoshop ile Yumusak kenarli hat seklinde boyama yapmamizi saglar.
(Kalem hareketi saglar.)
Pencil Tool “adobe photoshop da Kalem Aracidir. Airbrush Tool aksine sert
kenarli çizgiler çekmeye yarar. Adindan da anlasilacagi üzere Kalem olarak
kullanilir.Paintbrush Toolise Firça etkisi saglar ve boyama yapmamiza yarar.
Clone Stamp Tool“adobe photoshop da Istampa Araci ile Imajin bir yerine
Alt tusu ile tikladigimizda buranin resim ve doku örnegini alir ve bu örnegi
istedigimiz yere tiklayarak yapistirmamizi saglar. Pattern Stamp Tool ise hafiza-sablon ( Pattern ) olarak
aldigimiz görüntüyü kullanmaya yarar.
History Brush Tool“adobe photoshop ta Imajin arkaplan rengini
kopyalayip imaj üzerine seçilen alani firça etkisiyle boyar. Art History
Toolise kullanilan seçili alandaki farkli boyama stillerine bakip onlari
taklit
ederek,
firça
etkisiyle
37
boyama
yapar
Eraser Tool “ adobe photoshop ta Silme Araci, imaj üzerinde
begenmediginiz yerleri siler ancak silerken alttaki Layerdeki rengin vaya
imajin görünmesini saglar. Background Eraser Tool , arkaplan rengini
silerek imaji transparent yapar. Magic Eraser Toolise tek tiklama ile imajin arkaplan rengini silerek imaji
tranparent yapar.
Paint Bucket Tool“adobe photoshop da Boya Kovasi ile seçili alani,
Foreground
denen
renk
degistirme
aracindaki
üstteki
renk
ile
doldurabilirsiniz. ” Gradient Tool” ise iki yada daha çok rengin birbiri arasinda yumusak geçis yaparak seçili
alanin boyanmasini saglar.
Blur Tool“adobe photoshop ta Imaja kenarlardan disa dogru belirsizlik hissi verir,
Sharpen Tool , imajin kenarini disa dogru keskinlestirme hissi verir, Smudge Tool
, imajin rengini dagitmak, renkleri birbirine karistirma, leke hissi verir
Dodge Tool“adobe photoshop ile Imajda aydinlanmis-isiklanmis alan saglar,
Burn Tool , Imajda koyulasmis-kararmis alan saglar, Spone Tool, ise imajin
renk
doygunlugunu
azaltip,
çogaltmaya
yarar
Path Companent Selection Tool - Direct Selection Tool“, Pen
Tooladobe photoshop ile Imaj üzerinde herhani bir yerde seçim
yaptigimizda vaya bir parça seçtigimizde seçim noktalarini ve
kontrol
hatlari
ile
kontrol
noktalarini
tespit
ederler
Type Tool “adobe photoshop Imaj üzerinde yazi (text) yazmamizi saglar, Photoshop ‘un Yazi
38
Editörüdür
(
T
).
Pen Tool“adobe photoshop Etkili ve denetimli seçim alanlari saglar,
yapilacak imajin düzgün kenar rotalari-yönleri çizmemize izin verir.
Uygulamalarda
daha
genis
açiklanacaktir
Rectangle Tool“adobe photoshop ta en üstte Rectangular Marquee
Tool bölümünde anlattigimiz islemleri yapar. Ancak bu araçin farki
Foreground denen renk degistirme aracindaki üstteki renk ne ise
uygulandigi yerde direkt o rengi kullanir ve maskeleme yapar.
Isterseniz daha sonra üzerine çift tiklayarak rengi degistirebilirsiniz.
Resimde de görüldügü gibi, köseleri yuvarlatilmis, elips, poligonal olarakta kullanilir.Herbirinin kenarliklari,
yariçaplari ” Tool Options Bar ” ‘dan ayarlanabilir. Line Tool , çizgi aracidir. Istenilen kalinlikta düz çizgiler
çizer. Custum Shape Tool , Photoshop’un hazir sekiller listesini kullanmamizi saglar
Notes Tool“adobe photoshop imaja açiklayici yazi ve ses ekler. Ancak bu
eklentiler
sadece
PSD
formatinda
etkindirler.
Eyedropper Tool “adobe photoshop imaj için örnek renk seçmemizi
saglar. Imajin hangi rengine tiklarsaniz o rengi alir. Color Sampler Tool,
Info sekmesinde seçilen rengin degerini gösterir. Measure Tool , imajda
iki
nokta
arasindaki
uzakligi
ölçmemizi
saglar
Hand Tool“adobe photoshop ekrana sigmayacak sekilde büyültülen imajlarda görünmeyen yerlere
39
ulasmak
için
kullanilir.(
H
)
Zoom Tool “adobe photoshop imajin istenilen bölümüne yakinlasmayi veya uzaklasmayi saglar.
(Z
)
Paletadobe photoshop(Renk Seçim Araci)”Foreground üstteki rengi, Background alttaki rengi
belirtir. Defaunt renk ( D ) resimdeki gibidir. ‘a tiklayarak da default ayarlara geçilebilir. ‘a
tiklayarak alttaki ve üstteki renkleri yer degistirebilirsiniz( X ). Ancak alttaki daima Background ,
üstteki daima Foreground olacaktir
Quick Mask Mode“adobe photoshop da Hizli maskeleme yapmaya veya maskelemeden çikmaya
yarar.(
Q
)
Full Screen Mode“adobe photoshop tam ekran yapar, eski hale gelir. ( F )
Jump to ImageReady“adobe photoshop ImageReady ‘ye atlama yapar. Herhangi bir imajiniz açiksa
dogrudan ImageReady ‘e gönderip ayni imajda bütün katmanlari, efektleri ve filitreleri ile
ImageReady
‘de
kullanima
hazirlar.
(
Ctrl+Shift+M
)
Photoshop araç kutusu ve işlevleri...
Rectangular Marquee Tool “,adobe photoshop ta kare, dikdörtgen
çizmek için seçili alan yaratir. Klavye kisa yolu gördügünüz gibi ” M ”
tusudur. Kare çizmek istersek, kare seklini seçip, klavyemizdeki Shift
40
tusuna basili tutarak imajimiz üzerinde mause muzu sürüklemeliyiz. Aksi halde dikdörtgen alan seçer. Elliptical
Marquee Tool , adobe photoshop da Sayet Daire çizmek istersek, daire seklini seçip yine klavyemizdeki Shift
tusuna basili tutarak imajimiz üzerinde mause muzu sürüklemeliyiz. Aksi halde elips alan seçer.Digerleri, tek
pixel olarak yatay ( Single Row Marquee Tool ) veya dikey ( Single Column Marquee Tool) alan seçmeye
yarar.
Move Tool“, adobe photoshop ile seçilen bir alani veya Layer ( Katman )’i tasimaniza
yarar.Otomatik seçim özelligi oldugu gibi imajin üzeründe iken sag tus yaparsaniz hangi Layer de
oldugunuzu da belirtir. Klavuzluk görevi vardir. ( V )
Lasso Tool“ adobe photoshop ta kement Araci denir. Imajiniz üzerinde
serbestçe çizerek alan seçebilirsiniz. Resmin belli noktalarini tek tek
seçmenize Polygonal LassoToolile yapabilirsiniz.adobe photoshop Magnetic
Lasso Toolise kontrast ve renge duyarlidir.
Magic Wand Tool“adobe photoshop ta Imaj üzerindeki benzer renkleri seçim aracidir. Benzer
renkleri veya tonlari seçebilirsiniz
Crop Tool“adobe photoshop ta kesme Araci denir. Imajinizdaki fazlaliklari kesmenize, fazlaliklari
temizlemenize ve imajinizi serbest olarak döndürmenize yarar
Slice Tool“adobe photoshop da Dilimleme Araci, imaj üzerinde dilimler yaratmaniza yarar.
Imajinizi dilimlere bölebilirsiniz. Slice Select Tool ise dilimleri seçmemize yarar.
Airbrush Tool“adobe photoshop ile Yumusak kenarli hat seklinde boyama yapmamizi saglar.
(Kalem hareketi saglar.)
41
Pencil Tool “adobe photoshop da Kalem Aracidir. Airbrush Tool aksine sert
kenarli çizgiler çekmeye yarar. Adindan da anlasilacagi üzere Kalem olarak
kullanilir.Paintbrush Toolise Firça etkisi saglar ve boyama yapmamiza yarar.
Clone Stamp Tool“adobe photoshop da Istampa Araci ile Imajin bir yerine
Alt tusu ile tikladigimizda buranin resim ve doku örnegini alir ve bu örnegi
istedigimiz yere tiklayarak yapistirmamizi saglar. Pattern Stamp Tool ise hafiza-sablon ( Pattern ) olarak
aldigimiz görüntüyü kullanmaya yarar.
History Brush Tool“adobe photoshop ta Imajin arkaplan rengini
kopyalayip imaj üzerine seçilen alani firça etkisiyle boyar. Art History
Toolise kullanilan seçili alandaki farkli boyama stillerine bakip onlari
taklit
ederek,
firça
etkisiyle
boyama
yapar
Eraser Tool “ adobe photoshop ta Silme Araci, imaj üzerinde
begenmediginiz yerleri siler ancak silerken alttaki Layerdeki rengin vaya
imajin görünmesini saglar. Background Eraser Tool , arkaplan rengini
silerek imaji transparent yapar. Magic Eraser Toolise tek tiklama ile imajin arkaplan rengini silerek imaji
tranparent yapar.
Paint Bucket Tool“adobe photoshop da Boya Kovasi ile seçili alani,
Foreground
denen
renk
degistirme
aracindaki
üstteki
renk
ile
doldurabilirsiniz. ” Gradient Tool” ise iki yada daha çok rengin birbiri arasinda yumusak geçis yaparak seçili
alanin boyanmasini saglar.
Blur Tool“adobe photoshop ta Imaja kenarlardan disa dogru belirsizlik hissi verir,
Sharpen Tool , imajin kenarini disa dogru keskinlestirme hissi verir, Smudge Tool
, imajin rengini dagitmak, renkleri birbirine karistirma, leke hissi verir
42
Dodge Tool“adobe photoshop ile Imajda aydinlanmis-isiklanmis alan saglar,
Burn Tool , Imajda koyulasmis-kararmis alan saglar, Spone Tool, ise imajin
renk
doygunlugunu
azaltip,
çogaltmaya
yarar
Path Companent Selection Tool - Direct Selection Tool“, Pen
Tooladobe photoshop ile Imaj üzerinde herhani bir yerde seçim
yaptigimizda vaya bir parça seçtigimizde seçim noktalarini ve
kontrol
hatlari
ile
kontrol
noktalarini
tespit
ederler
Type Tool “adobe photoshop Imaj üzerinde yazi (text) yazmamizi saglar, Photoshop ‘un Yazi
Editörüdür
(
T
).
Pen Tool“adobe photoshop Etkili ve denetimli seçim alanlari saglar,
yapilacak imajin düzgün kenar rotalari-yönleri çizmemize izin verir.
Uygulamalarda
daha
genis
açiklanacaktir
Rectangle Tool“adobe photoshop ta en üstte Rectangular Marquee
Tool bölümünde anlattigimiz islemleri yapar. Ancak bu araçin farki
Foreground denen renk degistirme aracindaki üstteki renk ne ise
uygulandigi yerde direkt o rengi kullanir ve maskeleme yapar.
Isterseniz daha sonra üzerine çift tiklayarak rengi degistirebilirsiniz.
Resimde de görüldügü gibi, köseleri yuvarlatilmis, elips, poligonal olarakta kullanilir.Herbirinin kenarliklari,
yariçaplari ” Tool Options Bar ” ‘dan ayarlanabilir. Line Tool , çizgi aracidir. Istenilen kalinlikta düz çizgiler
çizer. Custum Shape Tool , Photoshop’un hazir sekiller listesini kullanmamizi saglar
43
Notes Tool“adobe photoshop imaja açiklayici yazi ve ses ekler. Ancak bu
eklentiler
sadece
PSD
formatinda
etkindirler.
Eyedropper Tool “adobe photoshop imaj için örnek renk seçmemizi
saglar. Imajin hangi rengine tiklarsaniz o rengi alir. Color Sampler Tool,
Info sekmesinde seçilen rengin degerini gösterir. Measure Tool , imajda
iki
nokta
arasindaki
uzakligi
ölçmemizi
saglar
Hand Tool“adobe photoshop ekrana sigmayacak sekilde büyültülen imajlarda görünmeyen yerlere
ulasmak
için
kullanilir.(
H
)
Zoom Tool “adobe photoshop imajin istenilen bölümüne yakinlasmayi veya uzaklasmayi saglar.
(Z
)
Paletadobe photoshop(Renk Seçim Araci)”Foreground üstteki rengi, Background alttaki rengi
belirtir. Defaunt renk ( D ) resimdeki gibidir. ‘a tiklayarak da default ayarlara geçilebilir. ‘a
tiklayarak alttaki ve üstteki renkleri yer degistirebilirsiniz( X ). Ancak alttaki daima Background ,
üstteki daima Foreground olacaktir
Quick Mask Mode“adobe photoshop da Hizli maskeleme yapmaya veya maskelemeden çikmaya
yarar.(
Q
Full Screen Mode“adobe photoshop tam ekran yapar, eski hale gelir. ( F )
44
)
Jump to ImageReady“adobe photoshop ImageReady ‘ye atlama yapar. Herhangi bir imajiniz açiksa
dogrudan ImageReady ‘e gönderip ayni imajda bütün katmanlari, efektleri ve filitreleri ile
ImageReady ‘de kullanima hazirlar. ( Ctrl+Shift+M )
Katmanlar
45
46
1.1. Flash Yazılımının Kullanım Alanları
Flash ile web üzerinden yayınlanabilen vektör grafikleriyle hazırlanmış durağan
resimler, etkileşimsiz ve etkileşimli canlandırmalar (animasyon) hazırlanabilir. Ayrıca sahip
olduğu dahili programlama dili (ActionScript) yardımıyla yeni başlayanların sıradan
etkileşim denetimleri eklemesini sağlayacak kadar kolay canlandırmalar hazırlanabilir.
Flash, ileri düzey programcılarsa ActionScript yardımıyla çok güçlü etkileşimlere
sahip uygulamalar hazırlama imkanı sağlamaktadır.
Flash, ses dosyası ekleme ve ses denetimi yapma özelliğini de kullanıcılara sunmuştur.
Böylece sesli karikatürler, Flash ile kolayca hazırlanabilir.
47
1.2. Vektörel Grafikler
Vektörel grafikler, bilgisayar ekranında çeşitli çizimlerin oluşturulması için bir dizi
koordinat bilgisi ve matematiksel formüllerin kullanıldığı grafiklerdir
1.2. Vektörel Grafikler
Vektörel grafikler, bilgisayar ekranında çeşitli çizimlerin oluşturulması için bir dizi
koordinat bilgisi ve matematiksel formüllerin kullanıldığı grafiklerdir.
Vektör grafikleri ölçeklenebilir çizimlerdir. Bunun anlamını şöyle açıklayabiliriz:
Flash’la çizilmiş bir nesne ne kadar büyütülürse büyütülsün görüntüde bir bozulma meydana
gelmez.
Şekil 1.1: Noktasal ve vektörel doğrunun karşılaştırılması
Flash dosyalarına film (movie) adı verilir. Flash’la oluşturulan dosyalar, .fla
uzantısını alırken Flash Player (Flash oynatıcı) aracılığıyla oynatılan dosyalar .swf (‘svif diye
okunur) uzantısını alır. Flash oynatıcı yardımıyla .swf uzantılı filmler web tarayıcısı
üzerinden izlenebileceği gibi bağımsız olarak da çalıştırılabilir.
48
1: Zaman doğrusu (timeline). Kare kare canlandırma hazırlanırken zaman doğrusu
üzerindeki çerçeveler (frame) kullanılır.
2: Flash film dosyalarında kullanılan katmanlar (layer) gösterilir. Katmanlarla ilgili
işlemler buradan yapılır.
3: Flash’ta grafik çizimleri için gerekli olan araçların bulunduğu araç kutusudur.
4: Flash çalışma alanında ve panellerinde yer alan tüm nesne ve araçların sahip
oldukları özelliklerin gösterildiği Property Inspector (Özellik Sorgulayıcısı) panelidir.
5: Grafikler üzerinde çeşitli renk işlemlerinin yapıldığı Color Mixer (Renk
Karıştırıcısı) ve Color Swatches (Renk Pastelleri) panelleridir.
6: Radyo düğmesi, kaydırma çubuğu (scroll bar), kontrol kutusu (check box), buton
gibi kullanıcı hareketine duyarlı bileşenlerin çalışma sayfasına eklenmesini sağlayan
Components (Bileşenler) panelidir.
49

Benzer belgeler