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&adres=muharremtac@mynet.com 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