Tunç, bahsettiğin konularla yıllardır içiçeyim. Elimden geldiğince yardımcı olmaya çalışayım. Bilgisayarı rendera bıraktım, 20 saat yazabilirim artık
İlk olarak hatırlatmam gereken şey, bir web uygulaması geliştirken grafik tasarımı ve programlama aşamalarının ayrı olduğudur. Yani PHP, SQL, JavaScript vs. bilmen sana grafik tasarım konusunda pek yardımcı olmayacak.
İkinci olarak Dreamweaver gibi programlar gerek tasarım gerekse programcılık öğrenmene pek yardımcı olmazlar. Bu programların kullanıcıları itiraz edebilirler ama yazımı sonuna kadar okurlarsa neden olduğunu anlayacaklardır.
Benim önerdiğim PHP öğrenme yöntemi işin en temelinden başlamaktır. C dilinden fonksiyon kullanımıda ve Java'dan nesnelere zaten alışık olduğun için PHP öğrenmek senin için çok kolay olacaktır. Hiç programlama bilmeyen biri için bile PHP oldukça iyi bir başlangıç noktasıdır.
PHP konusunda bilmen gereken ilk şey PHP'nin C gibi derlenen (compiled) bir dil değil, yorumlanan (interpreted) bir dil olduğudur. Yani PHP ile ikili (binary) yani çalıştırılabilir (executable) bir dosya oluşturmayız. Betik (script) her defasında yeniden yorumlanır.
PHP'nin temel çalışma prensibini canlı bir örnek ile -yüzeysel olarak- anlatmaya çalışayım.
Önce sadece bir HTTP server ile çalıştığımızı düşünelim. Sunucu uygulaması olarak Apache kullandığımızı varsayalım. Önermesem de IIS gibi şeyler de var.
Eğer özel bir ayar yapmadıysan Apache sunucuya gelen http isteklerine htdocs dizini altındaki dosyaları gönderek cevap verir. Örneğin, dosya bir html dosyasıysa dosyayı olduğu gibi aktarır, ve istemci bu dosyayı bir ağ tarayısıyla (Firefox, IE, Safari, Opera vs.) istemişse bu tarayıcı gelen html dosyasını önce parse eder, yani okur, sonra render eder, yani tarayıcı sayfasına çizer. Eğer sayfa içinde grafik gibi elemanlar varsa bunlar için de sunucuya istek gönderir ve sunucudan gelen grafiği (jpeg, png, bmp, svg vs.) gerekli yere yerleştirir. Eğer tarayıcıda Flash, Quicktime gibi eklentiler yüklü ise bunları yorumlaması için ilgili eklentiyi çağırır.
Yani; tarayıcının adres satırına adresi (URL) yazıp gönder tuşuna basmamızla birlikte tarayıcı bir HTTP istemi (HTTP request) oluşturur, bunu TCP/IP paket yönetimine uygun kapıyı (port) kullanarak bildirir, istem Internet'e çıkar ve sunucuya ulaşır, sunucu (1) istemin yapıldığı portu dinliyorsa (2) o isteme cevap verecek uygulamaya sahipse (ve düzgün ayarlanmışsa) istemi dikkate alır ve ilgili uygulamayı haber verir, bizim örneğimiz de Apache devreye girer, eğer istenilen dosya mevcutsa o dosyayı sunucu üzerindeki TCP/IP yöneticisine iletir, dosya paketlenir ve istemciye doğru yola çıkar. Aslına arada çalışan başka programlar var, ben özetliyorum, tam isabetli bir anlatım olmuyor.
Şimdi bu sunucuya bir de PHP sunucusu ekleyelim. Bu kez Apache kendine gelen isteği değerlendirirken, istek yapılan dosya içinde PHP betiği var mı diye bakar. Eğer PHP betiği varsa bu kez dosyayı istemciye olduğu gibi göndermez. Dosya PHP uygulaması tarafından değerlendirilir ve Apache'ye geri gönderilir, Apache, PHP'den geri gelen dosyayı istemciye yollar.
Şimdi bir html dosyasının içinden PHP'yi nasıl harekete geçirebileceğimize ve neler yapabileceğimize bakalım. PHP'yi göreve çağırmak için normalde HTML içinde bulunmayan etiketleri (tag) kullanırız, "<?PHP" ile başlayıp "?>" ile biten blok PHP'nin işleyeceği bloktur.
Peki PHP'ye neden ihtiyaç duyarız? PHP kullanarak statik HTML ile yapamayacağımız şeyler yapabiliriz. PHP bize sunucu tarafında çalışan bir programlama ortamı sunar. Matematiksel işlemlerden, veritabanı erişimine, grafik işlemlerinden, veri madenciliğine kadar pek çok şeyi mümkün kılar.
Eğer sunucu ile istemci arasında hızlı bir bağlantı varsa bilgisayarımızdan yerel olarak kullandığımız pekçok program tamamen sunucu üzerinde çalışacak şekilde yeniden tasarlanabilir. AJAX kullanımıyla da program oldukça akıcı hale gelir. Bunun pek çok örneği de var.
Bu arada bu işler için tek yol PHP değildir, başka yollar da var. PHP'nin yetersiz, yavaş kaldığı yerlerde, örneğin C ile hatta Assembly dili ile sunucu tarafı uygulamaları geliştirilebilir. Perl, Python, Ruby gibi diller de bu işler için yaygın olarak kullanılır.
PHP'ye alternatif bir de Coldfusion var. Hakkında çok fazla bilgim yok.
Veritabanı erişiminde de durum Apache ile PHP'nin iletişimine benzer. Apache PHP etiketini gördüğünde dosyanın işlenmesi için PHP'ye başvuruyordu. PHP de veritabanı işlemleri için veritabanı sunucusuna başvurur, üretilen sonucu alır, işler, ve Apache'ye aktarır.
Bu arada belirtmem gereken bir nokta var, Apache en sade kurulumda PHP'yi tanımaz. PHP ile iletişimini sağlamak için çeşitli ayarlar yapmak gereklidir. PHP de benzer şekilde en sade kurulumunda hiç bir veritabanı sunucusunu tanımaz, tanıştırmak için ayar yapmak gerekir.
Bu ayarlar özel yazılımlarla otomatik olarak yapılabilir. Apache+PHP+MySQL gibi paketler var. Tek kurulumla tüm ilişkilendirmeyi yapıp sistemi çalışır halde teslim ediyorlar. Ama ben teker teker kendim kurup elle ayarlamayı tercih ediyorum.
Örneği iyice pratiğe dökelim....
PHP ile veritabanı işlemi yapan bir web uygulaması geliştirmek istersek ilk olarak sunucuları yüklemememiz gerekecek. Önce Apache kurup, sonra PostgreSQL'i yüklerip en son PHP kurulumu ile sunucu tarafını hazır hale getiririz. Sunucu çalıştığımız bilgisayarın kendisi de olabilir. Yani aynı makine hem sunucu hem istemci olabilir. Eğer yerel ağda bulunan başka bir bilgisayarı sunucu yapmak istersek, bu sunucuya bir de FTP sunucusu kurmamız gerekecek.
Ben örneğimde istemci ve sunucunun yanı bilgisayar olduğunu varsayacağım.
Sunucu kurulumu tamamlandıktan sonra bir metin düzenleyicisine ihtiyacımız olacak. Aslında Windows üzerinde notepad bu iş için yeterli. Ama notepad'den daha iyi imkanlar sunan programcılara özel metin düzenleyicileri var. Bu programlar bize bazı kolaylıklar sağlarlar;
- Sözdizim yardımı yani syntax high-lighting; yazdığımız metni her an inceleyip komutları ayrı renk, parantezleri yarı renk, yorum satırlarını yarı renkte gösteriler. Bu bize çok büyük bir kolaylık sağlar.
- Bazı programların komutları tamamlama özelliği vardır, leb deyince leblebeyi anlarlar yani

- If-Else, Switch-Case gibi sık kullanılan program bloklarını kolayca koda ekleyebilirler.
- Bütünleşik yardım sistemi sunarlar. İmleç bir komutun üzerindeyken yardım istendiğinde o komutun manuel sayfasını açarlar.
- Bütünleşik FTP istemcisi barındırırlar, sunucuya başlanıp bir php dosyasını çekerler, istediğiniz düzenlemeyi yaparsınız, dosyayı FTP'ye koyarlar.
Daha pek çok kolaylık sayılabilir. Bunlar aklıma ilk anda gelenler. Tüm özelliklerden vazgeçebilirim ama sözdizimi yardımı olmadan çok fazla hata yapıyorum ben.
DZSoft PHP Editor, PHP Expert Editor gibi programlar var Windows için. Ben iki örnek verdim ama onlarca var piyasada, bazıları ücretsiz ve gayet iyi programlar. Mac için ne var bilmiyorum. GNU'da ise yüzlerce editör var, hepsi özgür yazılım, hepsi ücretsiz.
Metin düzenleyicimizi seçtikten sonra PHP ile programlamaya başlayabiliriz. Benim genelde kurulumdan sonra ilk yaptığım şey phpinfo() komutu ile sistemi test etmek...
Yani önce metin düzenleyicisinde şöyle bir program yazıyorum;
Sonra bunu Apache kurulumunu nereye yaptıysam oradaki htdocs dizini altına info.php olarak kaydediyorum* ve Firefox'u açıp localhost yada 127.0.0.1 yada bilgisayarın IP adresini giriyorum. (Sunucu başka bir bilgisayarsa IP adresini girmek gerekir)
Karşıma PHP bilgi sayfası çıkıyor ve isteğim tüm bileşenlerin yüklü olduğunu görüyorsam (veritabanı bağlantısı gibi) yoluma devam ediyorum. Sorun varsa gidermeye çalışıyorum.
Bu aşamada en yaygın sorunlar, Apache'nin HTTP kök dizini ayarlarındaki hatalar, Apache ayar dosyasında PHP ile ilgili ayarlardaki hatalar, PHP'nin veritabanı sunucusu ayarları ve yerelleştirme (localization) hatalarıdır.
PHP ve Apache ikilisi sağlıklı çalışıyorsa ikinci basamak PHP ile PostreSQL bağlantısını sınamaktır. Veri tabanı sunucusu ilk kurulumda örnek bir veritabanı ile gelir. Bu veritabanına bağlantı yaparak bağlantımızı sınayabiliriz. Ben genelde sisteme bir de veritabanı sorgu sistemi kuruyorum. Bu sistemler iki çeşit olabilir, (1) PGAdmin, SQLMaestro çalıştırabilir (exe) programlar (normal yükleme yapılan programlar) (2) PHPMyAdmin gibi PHP tabanlı, Apcahe htdocs altına kopyalanıp, tarayıcı üzerinden çalışan sistemler. Bu sistemler PHP kullandıkları için eğer veritabanına bağlanabiliyorlarsa PHP+SQL sistemi çalışıyor demektir.
Böyle bir programı kurduktan sonra o program içinden önce bir veritabanı sonra bu veritabanı için bir tablo oluşturarak devam ediyorum.
MySQL için;
Kod:
<?php
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
or die('Could not connect: ' . mysql_error());
echo 'Connected successfully';
mysql_select_db('my_database') or die('Could not select database');
?>
PostgreSQL için;
Kod:
<?php
$dbconn = pg_connect("host=localhost port=5432 dbname=mary")
or die("Could not connect");
echo "Connected successfully";
pg_close($dbconn);
?>
Eğer bağlantı başarılıysa veritabanı oluşturaya ve sorgulamaya geçiyorum. Aslında bunları yazmak isterim ama çok gereksiz bişey olucak zira Internet bunları anlatan site dolu... PHP ve veritabanı konusunda biraz daha ilerlediğinde veritabanı tasarımı, güvenlik, kod optimizasyonu vs. konularda konuşuruz. Temel konularda çok sayıda kaynak var zaten.
Benim önereceğim kaynak ise
www.php.net
PHP'nin başı sonu herşeysi burada...
http://id2.php.net/docs.php
İster bilgisayarına indir, ister siteden oku... Ben Extended HTML sürümünü öneririm. Ben ne öğrendiysem oradan öğrendim. Çok az undocumented şey var, onlar da ilk günlerde çok gerekli değil... Hatta belki yeni manuel sürümlerine dahil edilmişlerdir.
Bir de phpfreaks.com var. Uzun zamandır bakmıyordum, formatı değişmiş. Buradan da faydalanabilirsin.
Ayrıca PHP konusunda takıldığın yerde ben de yardımcı olmaya çalışırım. Bu yazıda da açıklık getirmemi istediğin yer varsa bildir.
Grafik tasarımı konusundaki soruna gelelim; Sen tabloyu nasıl çervelemişler, etrafına ve içine nasıl renk ve grafik vemişler onu mu soruyorsun, yoksa bu grafik nasıl yapılır, nasıl üretilir onu mu soruyorsun anlayamadım.
Tahmin ettiğin gibi Photoshop, GIMP gibi programlarda yapılabilir. Grafiğin nasıl yerleştirildiğini öğrenmek için html kaynağına bakabilirisin. Photoshop'ta nasıl üretildiğini öğrenmek için de Google'dan PS tutorialleri arayabilirsin.
HTML'de tablolara ve CSS konusunu biraz bilmen yeterli bunu yapmak için. Photoshop kısmı ise daha kolay... Buradan nasıl yazacağımı bilemedim ama...

İstersen sana çok basit bir tablo yapıp en sade haliyle gönderebilirim. Yaparken ekran görüntüleri de alıp tutorial haline dönüştürebilirim. Ama eminin bu konuda da binlerce tutorial vardır.
Örneğin;
http://www.sitepoint.com/article/design ... -photoshop
http://www.allwebdesignresources.com/we ... ntbox.html
Ama dediğim gibi, teklifim hala açık... Bunlar kesmedi dersen, bir örnek yaparım.
Dreamweaver ve Access konusuna gelince... Bence ikisini de unut... Aslında unut değil başla bişey demem gerek ama ağır olacak...
HTML'yi iyice öğrenmeden asla Dreamweaver, Frontpage vs. kullanma... Önce elle yazmayı öğren... Sonra gerek duyarsan bakarsın böyle şeylere...
Access yerel veritabanları için kullanılan bir program. VisualBasic felan kullanarak veritabanı uygulaması geliştirebilirsin. Çok iyi bildiğim ve hiç sevmediğim şeyler. Sertifikam bile var bu salak şeyler üzerine... Niye aldım hiç sorma...
Neyse... Özetle ben herşeyin önce manuel yolunu öğrenmek gerek diyorum... Şuradan template, oradan kod parçası aşırıp web uygulaması geliştirdim diye gezen vatandaşlardan olmamak lazım.
* Böyle bir dosyayı, halka açık bir sunucu üzerinde asla bırakmamak gerekir. phpinfo() komutu kötü niyetli kişiler için sistem hakkında çok güzel bilgiler sağlar.