Yahya Demircan. Muhittin Altınkaya
|
|
|
- Özlem Ünsal
- 10 yıl önce
- İzleme sayısı:
Transkript
1 Özet Sunucu ve İstemci Mail Sunucu: Ftp Sunucu (File Trasfer Protocol): Web Sunucu: Veritabanı Sunucu: Web-Veritabanı ilişkisi: MySQL Neden Gerekli PHP Neden Gerekli Apache Neden Gerekli Araçların Kurulumu Araçların RPM paket olarak kurulması Apache Web Sunucu Kurulması PHP nin Kurulması MySQL kurulması Araçların Modul (Statik) olarak kurulması: MySQL Kurulumu Apache ye Gerekli Modüllerin eklenmesi OpenSSL Kurulumu PHP Kurulumu Apache Kurulumu Apache de ayarlar MySQL Veritabanı Yönetimi Root kullanıcısına şifre vermek Sunucuya Bağlanmak ve Sunucu Yönetimi Sunucu Yönetimi, Kullanıcı Oluşturma ve Hakları MySQL Consol Komutları Tablo Onarmak Tablo Kontrol Etmek Konsolda Sorgu Komutları ve Fonksiyon Kullanımı Matematiksel Fonksiyonlar String Fonksiyonlar Tarih ve Zaman Fonksiyonları Çeşitli Fonksiyonlar MySQL Veri Türleri Veritabanı ve Tablo işlemleri için SQL Komutları Örnek Veritabanı ve Tabloları Oluşturma SQL Veri İşleme Komutları Kayıt ekleme Kayıt güncelleme Kayıt silme Magaza veritabanında oluşturulmuş örnek kayıtlar Kayıt sorgulama Şartsız (koşulsuz) kayıt sorgulama Şartlı kayıt sorgulama Kısıtlı bilgilere göre sorgulama Boş ve dolu alanlara göre sorgu Sorgu sonucu dönen kayıtların sıralanması SQL fonksiyonları İki veya daha fazla tablonun beraber sorgulanması (JOIN)
2 Tablo adlarına takma ad (Alias) verme Kayıtları gruplama PHP (Personal Home Page) Tarihçe PHP nedir? PHP nin test edilmesi PHP yazım kuralları HTML ve PHP kodlarını iç içe kullanma PHP kodlarını tek başına kullanma Özel karakterler Değişkenler ve veri türleri Veri türleri Değişkenler Sabitler İşlemciler (Operatörler) Atama operatörü Aritmetik operatörler İki string i birleştirme (Concotenation) Birleşik atama işlemleri Karşılaştırma operatörleri Mantıksal operatörler PHP dilinde işlemlerin öncelik sırası Diziler (Array) Dizi değişkenler Çok boyutlu diziler Dizilerde kullanılan fonksiyonlar count() is_array() array_merge() sort() explode PHP de kontrol yapıları if kontrol yapısı switch kontrol yapısı while döngüsü do while döngüsü for döngüsü Fonksiyonlar print () gettype() settype() ( integer ), ( double ), ( string ), ( boolean ) isset() unset() empty() ve isset() is_string(), is_integer(), is_double() String fonksiyonları substr() trim() chr()
3 ord() strlen() printf(), sprintf() number_format() Tarih ve saat fonksiyonları getdate() date() Dosya fonksiyonları : include() Kullanıcı tanımlı fonksiyonlar Fonksiyon tanımlama : Bir fonksiyonun çağırılması : Global ve Static Değişkenler HTML ( Hyper Text Markup Language ) Html Nedir - Nasıl Hazırlanır? Yazım kuralları HTML dilinde kullanılan taglar Genel parametreler <body> tagının parametreleri Yazı biçimlendirme tagları Başlıklar Paragraflar Web sayfalarında resim kullanılması Bağlantılar (Linkler) Listeler Sıralanmamış liste (Unordered List) Sıralanmış liste (Ordered List) Formlar Form nesneleri Düz metin girişi (Plain Text Entry) : Şifre girişi (Password Entry) : Yazı alanı (Text Area) : Seçim kutusu (Select Box) : Çoklu seçim kutusu (Multiple Select Box) : Onay kutusu (Check Box) : Seçenek düğmesi (Radio Button) : Komut düğmesi (Button) : Tablolar (Tables) Satır ve sütun tagları Çerçeveler (Frames) HTML kaynakları PHP ile MySQL Veritabanı Etikleşimi MySQL sunucusuna bağlantı Veritabanı seçimi SQL ifadesi yazılması SQL ifadesinin çalıştırılması SQL sonucu üzerinde işlemler MySQL bağlantısını kapatma Uygulamalar Uygulama
4 Uygulama Uygulama Uygulama Uygulama Kaynaklar Özet Hızla büyüyen bilişim dünyasında bilgiye ulaşmanın hızlı bir şekilde yapılması da kaçınılmaz hal almaktadır. Bu da zamana karşı bir yarıştır. Bilgiye ne kadar hızlı ulaşılırsa bir o kadar da verimlilik artacaktır. Var olan bilginin, tüm insanlar tarafından da kullanılması sağlanmalıdır. Bu kullanım tek yönlü olarak bilgiyi vermek, yada etkileşimli olarak bilgi verilip karşılığında bilgi almak şeklinde özetlenebilir. Bu bilgi paylaşımın en iyi yoluda bilgisayarların birbirleriyle haberleşebildiği internet ortamıdır. Bu ortamda bilgiye ulaşmak için zaman ve mesai kavramı yoktur. Bilgi kütüphaneleri, bilgi paylaşıldığı sürece zenginleşecektir. Bu paylaşmayı sağlayabilmek içinde bazı araçlara ihtiyaç duyurlur. Bu belgede bilginin paylaşılması için gerekli olan araçların tanımları, nasıl kurulacakları, ayarları, çalıştırılması ve bilginin internet ortamında nasıl kullanıldığı örneklerle anlatılacaktır. 4
5 1. Sunucu ve İstemci Bilginin paylaşılmasında rol alacak araçlardan en önemlisi web sayfalarıdır. Web sayfası, bilgiyi hizmete açan tarafından belgelerin isteyene gösterilmesidir. Bu istek ve sunuş işlemleri bilgisayar ortamında gerçekleşecektir. Bu aşamada bir sunucu, bir de istekte bulunan kavramları ortaya çıkmaktadır. Hizmet veren bilgisayara sunucu (ana makina, server), istekte bulunan bilgisayara da istemci (terminal, client) olarak adlandırılır. Bu iki bilgisayarı büyük ölçüde birbirinden ayıran ise, bu bilgisayarlar üzerinde çalışan programlardır. Sunucu, üzerinde çalışan programlara göre isimlendirilmektedir. Bunlardan sık kullanılanları aşağıda verilmiştir. Bunlar ayrı ayrı birer bilgisayar olabileceği gibi, tek bir bilgisayara tüm bu programlar yüklenerek de görevler verilebilir. Bu görevler işletim sisteminden bağımsız olarak verilir. Bir linux işletim sistemli makina, yada windows işletim sistemi kurulu bir bilgsisayara aşağıdaki görevler verilebilir. DNS sunucu (Domain Name Service): İnternet ağı üzerinde iletişimin sağlıklı olması açısından her bilgisayarın adreslenmesi gereklidir. İki tip adresleme vardır. Sembolik (domain name) ve mutlak (IP numarası) olarak adreslenmektedir. ankara.edu.tr, science.ankara.edu.tr birer sembolik isimlendirmedir. Bu makinalar ip numarası ( ve ) ile de mutlak olarak isimlendirilir. Sembolik isimlerde; tr Türkiye, edu.tr eğitim kurumu, ankara.edu.tr de Ankara Üniversitesini temsil etmektedir. science.ankara.edu.tr ise Ankara Üniversitesi ağ bünyesi altında yer alan bir bilgisayarı temsil eder. Sembolik isimler ağ yapısını belirtmekte ve hatırda kalması bakımından önemlidir. DNS, ip numarası ile sembolik isimlerin dönüşümünü yaparak istegin sembolik isimden gelmesine karşın hizmeti verecek olan ip numarasina yönlendirir. Eğer hizmet veren bilgisayarın ip numarası değişse dahi kullanıcılar sembolik isimleri bildiklerinden dolayı aksaklık meydana gelmeyecektir. Bu işlemi yapan DNS dir. Burada, ankara.edu.tr ( ) dönüşümü ODTÜ de yapılmaktadır, science.ankara.edu.tr ( ) gibi alt domainler ise Ankara Üniversitesi DNS sunucusunda (ankara.edu.tr) yapılmaktadır. Ip numarası bilinen (veya sembolik ismi bilinen ) bir adresin sembolik adresini (veya ip numarasını) aşağıdaki komutla öğrenmek mümkündür (Linux turu işeltim sistemlerinde). $ nslookup (sembolik adresi verecektir) $ nslookup science.ankara.edu.tr (ip numarasını verecektir) 1.1. Mail Sunucu: Elektronik ağlarda en yaygın olarak kullanılan servis elektronik mektup ( , e-posta, e- mesaj) servisidir. Bu servisin iki görevi bulunmaktadır. Birisi sunucuya gelen mailleri kullanıcının posta kutusuna dağıtmak, bir diğer görevi de kullanıcının maillini göndermektir. Gönderilen mail aynı domaine sahip ise hemen kullaniciya iletilir, eger farkli domain ise DNS ile isbirligi yaparak iligili ip numarali makinaya gönderir. Bunlar; smail, qmail, sendmail gibi programlardır. Mailler; pine, eudora, mail, mailtool gibi programlar ise yeni mesaj, gelen mesajları okuma, cevaplama gibi amaçlarla kullanılan programlardır. 5
6 Mail yoluyla gelen isteklere cevap veren, kendi arşivinden dosyaları sunan programlara mailserver, arşiv-server veya file-server gibi isimler verilmektedir. Örneğin subject kısmında fiyat bilgisi içeren bir mesaj geldiginde sunucuda çalişan bir programla bu yorumlanır ve istemciye ilgili dosya mail yoluyla göndirilir Ftp Sunucu (File Trasfer Protocol): İnternet ortamında dosya paylaşımını sağlayan servistir. Bu servis iki yönlü olarak veya yapılacak ayarlarla tek yönlü olarak ta hizmet verebilir. Sadece sunucudan dosya alınsın (download), sunucuya dosya yüklensin (upload) yada here ikisininde yapılması sağlanabilir. Dizin kısıtlamaları, ip kısıtlamaları ve şifreleme gibi yöntemlerle ftp servisi yönlendirilmektedir Web Sunucu: Elektronik ağda en yaygın kullanılan bilgi paylaşımını sağlayan, genelde halk arasında internet denilince akla gelen web sayfalarıdır. World Wide Web (dünyayı saran ağ) gelişmesiyle bir belgeyi okumak, bir şarkıyı dinlemek olası olmuştur. Buna kısaca www veya web de denilmektedir. Webte yayınlama dili olarak HTML (HyperText Markup Language) kullanılmaktadır. Web sunucu; web sayfalarını istemciye ileten veya sunucuda çalışan bir program ile konuşarak istemcinin isteklerini yerine getiren programdır. Unix/Linux ortamında Cern, NCSA, plexus gibi web sunucular kullanılmasına karşın en yaygın kullanılan Apache web sunucusudur. Apache web sunucusunun win32 (Windows işletim sistemleri) sürümüde mevcuttur. Ayrıca win32 sistemlerde PWS (Personel Web Server 95/98), IIS (İnternet İnformation Server NT/2000) gibi türevlerde mevcuttur Veritabanı Sunucu: Kullanılan veritabanının multi-user (çok kullanıcılı) olarak hizmet vermesini sağlayan programlardır. Veritabanını aynı anda birden fazla kişinin erişimini sağlayan programlardır. Bu programlar, seçilen veritabanına özgü yazılımlardır. Bu programlar, veritabanın web ortamında kullanılmasını veya kurum içi ağda kullanılmasını sağlar. Veritabanları, istemci programları ve server programları olarak iki kısma ayrılır. MySQL, msql, postgrsql gibi ücretsiz kullanılan veritabanları mevcuttur. Bu veritabanlarının istemci ve sunucu kısımları mevcuttur Web-Veritabanı ilişkisi: Bir veritabanını web ortamından kullanılabilmesi için bir arayüze ihtiyaç duyulur. Çoğu veritabanının kendi web arayüzleri mevcut olmakla birlikte pahalıdırlar. Bu arayüzler veritabanı sunucu - web sunucu ilişkisini kurarlar. Bu arayüzlere web programlama dili de denilmektedir. Bazı web programlama dilleri vardır ki bunlar ücretsiz olarak temin edilebilmektedir. Bunlar web sunucu ile etkileşimli olarak çalışırlar. PHP, perl, java ve c gibi programlama dilleri bunların arasında sayılabilir. Bunlardan PHP, oracle gibi ticari olan, MySQL gibi ücretsizleri direkt desteklemenin yanında ODBC sürücülerini de (veritabanlarına baglanmada aracılık eden programlar) desteklemektedir. Böylece her veritabanını desteklemektedir. Birbirleriyle en ideal olarak analaşan Apache web sunucu, MySQL veritabanı ve PHP dili artık kaçınılmaz üçlü olmuşlardır. 6
7 1.6. MySQL Neden Gerekli Etkileşimli web sayfalarında kaçınılmaz olan veri kutuphanesinin bir veritabaninda olmasidir. Veriye erişim hızı, veri guvenliği, çok kisinin kullanıyor olması gibi nitelikler bir veritabanından beklenen özelliklerdir. Veritabanının ücreti, destek bulabilmek, kullanacağınız arayüz programi (PHP gibi) ile uyumluluğu gibi parametreler veritabanı seçimini etkilemektedir. MySQL veritabanında aranan bu özelliklerin olması, bu dilin seçimini sağlamaktadır PHP Neden Gerekli Bir bilgi kütüphanesinin internet üzerinden dünyaya açılması gereklidir. Genelde bir çok web sayfasında görmeye alıştığımız formlar, kullanıcı anketleri, veritabanına bağlanıp sorgu yapma, veri girme sayfaları ve kullanıcı ile sayfa sahibi kişi arasında iletişim sağlayacak bir programlama dili seçilmelidir. Bunu yapacak bir çok programlama dilleri vardır. Bunların en önemli özellikleri platform bağımsız olmaları (aynı programın linux, yada windows gibi işletim sistemlerinde direkt çalışıyor olması), tamamen sunucu tarafında çalışmaları sayılabilir. Perl, C gibi cgi (Common Gateway Interface) programlari, Asp gibi dillerdir. PHP bu özellikleri taşıması, bir çok veritabanını özellikle MySQL desteklemesi, seçilmesinde etkili olmaktadır Apache Neden Gerekli Web sunucu özelliklerini en iyi şekilde taşıması (bkz. Web Sunucu), ücretsiz dağıtım olması, teknik destek ve bilgisinin elektronik ortamda bol olması, işletim sistemi bağımsız olması nedeniyle ideal bir web sunucudur. 7
8 2. Araçların Kurulumu Bu üçlünün kurulmasında üç yol izlenmektedir. Birinci yol Linux Dağıtımının kurulması sırasında, ikici yol daha sonradan rpm paketleri (Redhat için) ile kurulması ve üçüncü yol ise modul olarak sonradan ekleme yöntemleri sıralanabilir. Eğer linux u yeni kurmaya başlıyorsanız hemen bu aşamada bu üçlüyü dahil ederek kurmaya devam edebilirsiniz. Eğer sonradan kuracaksanız (linux daha önceden kurulu ise) iki yoldan birisi seçilebilir Araçların RPM paket olarak kurulması Bu yöntem seçilirse dikkat edilmesi gereken bazi küçük ayrıntılar olacaktır. Örneğin siz sadece Apache-Php-MySQL üçlüsünü için öncelikle Apache, php ve sonra MySQL kurulmalıdır. Öncelik sırası önemlidir. Burada önce MySQL kurarsanız, sunucuda PHP olmadiği için bazı ayarlamalar yapılamayacaktır. Bu nedenle başka modullere ihtiyacı olmayandan RPM paketlerinden başlamak çözüm olacaktır. Sırayla şu paketler kurulur Apache Web Sunucu Kurulması Günümüzde internette web sunucularının çoğunu Apache oluşturmaktadır. Windows un kendi web sunucuları olmasına karşın, kullanıcılar windows üzerinde de Apache kullanmayı tercih ediyorlar. Sağlamlık, güvenirlik, yüksek performansı, php ve MySQL ilişkilerinin olumlu olması tercih sebeplerindendir. İnternet ortamında bilgilerin sunucu-istemci arasında güvenli bir şekilde iletilmesi gerekmektedir. Bu bağlamda iki sunucu türü ortaya çıkmaktadır. Birincisi bilinen web sunucu, diğeri ise güvenli iletişim için, web sunucunun SSL (Secure Socket Layer) internet üzerinde şifrelenmiş veri alış-verişini sağlayan bir protokolle desteklenmesidir. Şifreleme artık günümüzde hızlı bir şekilde yaygınlaşan e-ticaret uygulamalarında kaçınılmaz duruma gelmektedir. Eğer RPM paketleriniz cd de ise # mount /dev/cdrom # cd /mnt/cdrom/rpms işlemleri ile cd sürücü bağlanır ve paketlerin olduğu klasöre geçilir. # rpm -i httpd i386.rpm --nodeps # rpm i mod_ssl i386.rpm --nodeps paketlerin bulunduğu ortamda yukarıdaki iki komut verilerek iki paketin kurulması sağlanır. --nodeps ifadesi apache ile kurulabilen paketleri (su anda bize gerekli olmayan) yok sayarak kur anlamına gelmektedir. Web sunucunun çalışırılması ve test edilmesi için; #/etc/init.d/httpd start komutuyla çalıştırılır. start yerine, durdurmak için stop, yeniden başlatmak için restart yazılabilir. 8
9 Apache web sunucusunun yönetimi /etc/httpd/conf/httpd.conf dosyasından yapılır. Buradaki ayarlamaların neler olduğunu, daha sonra sunucunun modül olarak kurulması kısmında bahsedilecektir. Sunucunun varsayılan web ana dizini /var/www/html klasörüdür. Web browser adres kısmına http//:localhost ifadesi yazıldığı taktirde bu dizin içindeki html sayfaları görüntülenecektir PHP nin Kurulması Php (php hypertext preprocessor, ön işlemci yüksek metin), web sunucuda yorumlanıp html diline gömülü çalışan bir script dili, bir çok programla beraber kullanılmaktadır. Bunlardan MySQL, OpenLDAP (Klasör erişim protokolü), GD (php de resim kütüphanesi) gibi bir çok kütüphane desteği ile beraber kurulmaktadır. CD'i sürücüye takılır ve aşağıdaki işlemleri yapılır # mount /dev/cdrom # cd /mnt/cdrom/rpms # rpm -i php i386.rpm --nodeps Yukarıdaki komutlar CD sürücüyü /mnt/cdrom dizinine bağlayacak ve /mnt/cdrom/rpms dizini altında (RPMS klasörü) yada rpm lerinizin bulunduğu dizin içinde php paketini kuracaktır. --nodeps ifadesiyle bu paketlerin gerek gördüğü alt paketler göz ardı edilerek kurulacaktır. Eğer Apache web sunucusu kurulu ise sunucuyu yeniden başlatmak gerekir. # /etc/init.d/httpd start komutu ile yeniden çalıştırılır. PHP nin çalıştığını da küçük bir uygulama yaparak test edilebilir. Apache'nin web sayfalarının bulunduğu kök /var/www/html klasörüdür. Bu klasöre her hangi bir text editörü ile aşağıdaki ifadeleri yazılarak deneme.php adında kaydediniz. php Print Bu bir php uygulamasıdır ; kaydedilen dosya, şeklinde web browserdan çağırılırsa ekranda sadece Bu bir php uygulamasıdır ifadesinin görünmesi gerekir. Aksi taktirde php çalışmamaktadır. Bu durumda deneme.php dosyasinin tamami ekranda görüntülenecektir. Bu da apache nin php yi tanımamasından kaynaklanır. Apache ayar dosyası /etc/httpd/conf/httpd.conf da AddType application/x-httpd-php.php AddType application/x-httpd-php-source.phps satırlarının olması sağlanır. Apache sunucusu yeniden çalıştırılarak sorun giderilmiş olacaktir. Bir başka sorun da php kodunun başladığını gösteren tag php ifadesi yerine kısa tag olarak kullanılan ifadesi yazılırsa çalışmayacaktır. Kısa tag kullanmak istiyorsanız /etc/php.ini dosyasında short_open_tag=off ifadesi short_open_tag=on yapılarak, web sunucu yeniden çalıştırılmalıdır. 9
10 MySQL kurulması MySQL'den en yüksek verimi almak için, aşağıdaki paketleri sisteme kurmalısınız. mysql: MySQL temel dosyaları ve kütüphaneleri (şart) mysql-devel: MySQL geliştirme için başlık dosyaları php-mysql: Php ve MySQL bağlantısı için gereken yordamlar (MySQL/PHP programlama yapılacaksa şart) mysql-server: MySQL sunucu (şart) mod_auth_mysql: Apache'nin mod_auth özelliği ile MySQL bağlantısı yapması için gerekli dosyalar Bu paketlerin sistemde kurulu olup olmadıklarını öğrenmek için, aşağıdaki komut işe yarayacaktır: #rpm -qa grep mysql komutuyla aşağıdaki paketlerin kurulu olup olmadığı görülür. mysql mysql-devel php-mysql-4.0.3pl1-1 mysql-server mod_auth_mysql Eğer paketler kurulu değil ise, CD'yi sürücüye takın ve aşağıdaki işlemleri yapın # mount /dev/cdrom # cd /mnt/cdrom/rpms # rpm -i *mysql* --nodeps Bulunulan yerde, içinde tüm mysql satırı geçen programları sisteme kuracaktır. --nodeps ifadesiyle bu paketlerin gerek gördüğü alt paketler göz ardı edilerek kurulacaktır. Örneğin MySQL kurulumunda perl ile ilgili paketlerin daha önceden kurulması gerekiyor, fakat perl istenmediği için bunun gibi paketler yok sayılır. RPM paketi olarak kurulan MySQL in çalışan uygulamaları /usr/bin altına, veritabanları ise /var/lib/mysql/ klasörü içine yerleştirilmektedir. # /usr/bin/mysql_install_db komutu verilerek, mysql yönetim veritabanını /var/lib/mysql/ klasörü altında mysql ve test veritabanları olarak oluşmaktadır. Bu işlem mysql-server kurulumu için şarttır. Eğer mysql istemci olarak kullanılacaksa bu işleme gerek yoktur, bu durumda sadece başka sunuculardaki veritabanlarına bağlanılabilir. Kullanıcının yeni veritabanları da /var/lib/mysql/ klasöründe oluşacaktır. Oluşan veritabanlarıda birer klasördür, içinde tablo, bilgi alanını yapısı ve veriler için gerekli dosyalar vardır. MySQL sunucusunu başlatmak için #/etc/inid.d/mysqld start komutu verilir (start yerine stop yazılırsa durdurulur). 10
11 MySQL sunucusuna bağlanmak: Bu işlem MySQL client (istemci) programi ile gerçekleşir. #/usr/bin/mysql komutuyla bağlanılır ve burada SQL sorgulama dili ve MySQL özgü konsol komutları kullanılır. Bu komutlar MySQL veritabanı yönetimi bölümünde anlatılacaktır Araçların Modul (Statik) olarak kurulması: Sistem yöneticilerinin tercih ettikleri yol olan statik kurulumdur. Bu yöntem en önemli özelliği bütün linux dağıtımlarında standarttır. RPM paketleri ile kurulumda müdahale edilmeden kurulduğu için programlar dağınık bir şekilde kurulmaktadır. Oysa linux ta gelenek haline gelen uygulamaların /usr/local/ klasöründe bulunmasıdır. Statik kurulum diğerine göre zahmetli gibi görünse de, her şey kullanıcının denetimindedir. Bu yöntemde kuruluma RPM paketine göre tersten başlamaktadır. Önce MySQL, PHP ve en son apache kurulacaktır. Bir çok programla veya modul kullanılabilen PHP; MySQL, SSL (güvenli bilgi alış-veriş desteği), OpenLDAP (Klasör erişim protokolü), GD (php de resim işleme kütüphanesi) gibi uygulamalarla derlenmektedir. PHP kurulmadan php ye gerekli olan veya kullanılacak uygulamalar daha önce kurulmalı, sonra PHP kurulmalıdır. Apache web sunucusu kurulmadan önce SSL protokolü ve PHP kurulu olmalıdır. Apache kurulumu sırasında hangi desteklerin verileceği bildirilecektir. Statik kurulumda kullanılan dosyalar tar.gz arşivlenmiş ve sıkıştırılmış dosyalar kullanılacaktır. Bu nedenle bu dosyaları /download/ isimli bir klasör açarak oraya saklanması önerilir MySQL Kurulumu MySQL için Linux a uygun olan tar.gz dosyasını adresinden mysql tar.gz dosyasını sisteminizdeki /download/ klasörüne indiriniz. Aşağıdaki komutlar sırasıyla uygulanmalıdır. # cd /usr/local # tar -zxf /download/mysql tar.gz # cd mysql sıkıştırılmış mysql tar.gz arşiv dosyası /usr/local/mysql klasörü içine açılacaktır. Bu klasör içine girilir. Kurulumun yapılacağı yer prefix ibaresi ile, veritabanında Türkçe karakterlere göre verilerin sıralanması için charset tanımı yapılır. Bu işlem configure programı ile yapılır. Bu program makinenizin konfigurasyonu hakkında bilgi toplayarak bu bilgilere göre bir makefile oluşturur. Oluşturulan bu makefile, programın makinenize göre kurulumunu sağlar. Örneğin bazı makinelerde C derleyicisi olarak gcc yerine cc kullanılmaktadır. "configure" programcığı makinemizin kendine has özelliklerine göre bize bir makefile oluşturur. 11
12 #./configure --prefix=/usr/local/mysql --with-charset=latin5 # make make komutu ile derlemek üzere kurulumu başlatırız. Bu komut ile birlikte o dizindeki kurulumla ilgili dosyalar bir düzene sokulur bir liste oluşturulur. make komutu ile makefile dosyasındaki yapıya göre kurulum dosyaları hazırlanır, varsa hatalar bu aşamada ortaya çıkar. Bu noktadan sonra hazırlanan kurulum dosyalarının bilgisayarımızda gerekli yerlere kurulması kısmının gerçekleştirilmesi için make install komutu verilerek kurulum tamamlanır. # make install Kurulumu tamamlanan MySQL in çalıştırılabilir komutları /usr/local/mysql/bin altında, veritabanları ise /usr/local/mysql/var klasörü altında yer almalıdır. Bu nedenle MySQL veritabanı sunucusunu başlatan uygulamayı aşağıdaki şekilde kopyası ilgili klasöre oluşturulur. # cp /usr/local/mysql/share/mysql/mysql.server /usr/local/mysql/bin Aşağıdaki komut ile MySQL veritabanı kurulur. Bu komutla /usr/local/mysql/var klasörü altında mysql ve test isminde iki veritabanı oluşturulur. mysql veritabanı, MySQL programın yönetimi için bilgilerin saklandığı veritabanıdır. Örneğin oluşturulan kullanıcılar, veritabanlarına verilen haklar gibi bilgiler saklanır. # /usr/local/mysql/bin/mysql_install_db Root haricinde MySQL sunucusunu kullanmak için mysql isminde bir grup ve bir de user oluşturmak için aşağıdaki komutlar verilir. # groupadd mysql # useradd -g mysql mysql Aşağıdaki komutlarla ilgili klasörlerin sahipleri belirlenmektedir. # chown -R root /usr/local/mysql # chown -R mysql /usr/local/mysql/var # chgrp -R mysql /usr/local/mysql MySQL veritabanı sunucusunu başlatmak için aşağıdaki komut verilmelidir. # /usr/local/mysql/bin/mysql.server start Bilgisayarın her açılışında otomatik olarak açılması için # pico /etc/rc.d//rc.local dosyası içerisine /usr/local/mysql/bin/mysql.server start ifadesi yazılır. # cd.. Kurulumdan sonra harddiskte tasarruf açısından aşağıdaki komut verilerek kaynak kodların bulunduğu klasör silinir. # rm -rf mysql
13 MySQL client olarak kullanılmak istenirse /usr/local/mysql/bin/mysql komutu verilmelidir. Burada SQL sorgulama dili ve MySQL özgü konsol komutları kullanılır. Bu komutlar MySQL veritabanı yönetimi bölümünde anlatılacaktır Apache ye Gerekli Modüllerin eklenmesi Apache nin kurulmadan önce gerekli modüllerin yüklenmesi eklenmesi gereklidir. Apache ye modul olarak php, mod_gzip gibi isteğe bağlı modüller eklenebilir. mod_gzip yazı veya makale gibi çok sıkıştırılabilen dosyaların kullanıcının çok hızlı olarak çekebilmesi ve çok daha az bant genişliği harcayarak internet yoğunluğunu azaltması için sunucuya verilecek destektir. Bu destek ile dosyaya tıklandığında, dosyanin browser da okunmasi için değil download edilmesi gerektiği anlaşılacaktır. Bu belgede sadece php ve ssl desteği modul olarak eklenecektir. Modüller eklenmeden önce apache nin kurulacağı dizin oluşturulmalıdır. Apache için gerekli apache_ tar.gz dosyası, sitesinden /download/ klasörüne indirilir. # cd /usr/local #tar -zxf /download/apache_ tar.gz /usr/local/apache_ klasörüne açılan apache kaynak kodlarının daha kolay kullanılmasını sağlama amacıyla aşağıdaki gibi bir sembolik link ile apache adı verilir. #ln -s apache_ apache #cd apache #./configure #cd.. Bu aşama ile modul olarak eklenecek programların /usr/local/apache klasöründe kullanacağı ortak dosyalar oluşmuş olur OpenSSL Kurulumu OpenSSL kurulumu seçimliktir. Kurulması istenirse php ve Apache den önce kurulması gerekir, çünkü bunlar kurulurken ssl desteği verilecektir. OpenSSL kurulmaz ise php ve apache configure edilirken bu destekler yazılmamalıdır. OpenSSL için gerekli dosya http//: adresinden temin edilebilir. openssl-0.9.6i.tar.gz dosyası /download/ klasörüne indirilir. # cd /usr/local # tar -zxf /download/openssl-0.9.6i.tar.gz # cd openssl-0.9.6i #./config # make # make install # cd.. # rm -rf openssl-0.9.6i Yukarıdaki komutlar ile openssl, /usr/local/ssl klasörüne kurulmuş olur. 13
14 PHP Kurulumu PHP için gerekli olan php tar.gz dosyası adresinden /download klasörüne indirilir. # cd /usr/local # tar -zxf /download/php tar.gz # cd php PHP yi configure ederken web sunucunun yerini, mysql in kurulu olduğu, openssl in kurulu olduğu yerler belirtilir. #./configure --with-apache=/usr/local/apache --with-mysql=/usr/local/mysql --enable-ftp --enable-safe-mode --enable-trans-sid --with-openssl=/usr/local/ssl --enable-inlineoptimization --with-zlib # make install # cd.. Bu işlemlerle php kurulumu tamamlanmıştır, php nin çalışıp çalışmadığı ancak apache kurulumundan sonra anlaşılabilir Apache Kurulumu # cd /usr/local/apache #./configure --prefix=/usr/local/apache --enable-module=ssl --activate-module=src/modules/php4/libphp4.a # make Apachenin isteğe bağlı modüllerle derlenmesi tamamlanmıştır. Ssl ile şifrelenmiş veri alış verişinde önemli bir yeri de, sayısal (dijital) sertifikalar tutar. Bu sertifikalar Web browser ile web sunucu arasında şifrelenmiş veri akışını sağlar. Eğer bir sertifikanız (sertifika yazılım şirketlerinden alınmakta) yok ise, bu aşamada aşağıdaki komutla bir sertifika yapabilirsiniz. Doğal olarak sizin yapacağınız sertifika web browserlar tarafından tanınmadığından dolayı, istemciler bir uyarı ile karşılaşacaklardır. İstemcilerde Tanınmayan sertifika, güvenlik açısından kabul ediyormusunuz şeklinde uyarı penceresi gelecektir. # make certificate Bu aşamada bazı sorular soracaktır. Örneğin şirketinizin adi, sertifika geçerlilik süresi gibi bilgiler onaylamanızı isteyecektir. Son olarak derlenmiş dosyalar ilgili yerlere gitmesi için # make install komutu verilerek apache kurulumu tamamlanmış olacaktır. Web sunucunun çalıştırılması için, iki yöntem vardır, bunlardan birisi çalıştırılmalıdır. Normal (ssl desteği olmadan) sunucunun başlatılması 14
15 #/usr/local/apache/bin/apchectl start komutu verilir. Eğer SSL desteği ile web sunucusu başlatılacaksa #/usr/local/apache/bin/apchectl startssl komutu verilir. Start yada startssl yerine durdurmak için stop, yeniden başlatmak için restart yazılabilir. İstemci web sunucuya bağlanırken yazılarak bağlanır, ssl destekli sunucuya bağlanmak için ise şeklinde yazılmalıdır. Adres web sunucunun host name yada ip adresidir Apache de ayarlar Web sunucusunda bütün ayarlar /usr/local/apache/conf/httpd.conf dosyasından yapılır. Web sunucunuzun ana dizini, alt dizin ayarlamaları, ana dizinde varsayılan bağlanılacak sayfa adı (index.html, index.php gibi dosya tanımları), kullanıcıların ana dizin (public_html) tanımı gibi bir çok ayarlamalar yapılabilmektedir. http.conf dosyasında yapılabilecek ayarları da gösteren ornek bir http.conf adresinde bulunmaktadır. Buradan nasıl ayarlamalar yapılacaği Türkçe olarak, anlatılmaktadır. Burada yapılabilecek bir kaç örnek verilmektedir. Bu ayarların httpd.conf dosyasında yerleri sabittir. İlgili yer bulunur ve örnekler deki gibi düzeltilir. - Sunucu zarar gördüğünde, istemci browserinda sunucu hakkında, sistem yöneticisinin mail adresi gibi bilgilerin çıkması olayına ServerSignature yönergesi denilir. Burada çıkması istenen mail adresi aşağıdaki gibi belirtilir. ServerAdmin [email protected] - Sunucudan, isteklere cevap olarak gönderilecek html sayfalarının varsayılan yeri yani ana dizin aşağıdaki gibi belirlenir. Örneğin adresi varsayılan olarak "/web/www/docs" klasöründeki index.html (yada belirtilen diğer dosya) dosyasını istemciye gönderecektir. İstenilen klasör aşağıdaki gibi ana klasör olarak belirlenebilir. DocumentRoot "/web/www/docs" - Varsayılan klasöre istek geldiğinde başlangıç olarak hangi dosyanın gelmesi gerektiği ise aşağıdaki gibi belirtilir. Birden fazla belirtilebilir. İlk dosya bulunmaz ise diğerlerine sırayla bakılır. DirectoryIndex index.php index.html index.htm - Sunucuda bulunan kullanıcıların kişisel web sayfalarına 15
16 şeklinde bağlanılır. Böyle bir istekte, kullanıcının hesabındaki hangi klasörün kullanıcı için varsayılan olması gerektiği aşağıdaki gibi belirtilir. Varsayılan public_html klasörüdür. UserDir public_html - PHP nin çalışması için aşağıdaki satırların olması (önünde # varsa kaldırılarak aktif edilmesi) gereklidir. AddType application/x-httpd-php.php AddType application/x-httpd-php-source.phps Tüm ayarlar yapıldıktan sonra web sunucu (apache) yeniden başlatılmalıdır. Aksi taktirde önceki ayarlar geçerli olacaktır. 16
17 3. MySQL Veritabanı Yönetimi MySQL veritabanı sunucusu kurulduktan sonra yapılacak olan işlemlerin başında mysql veritabanına sunucusunu yönetecek root kullanıcısına şifre verilmesidir. Daha önce de bahsedildiği gibi mysql sunucusu çalıştırılır. Arka planda çalışması için # /usr/local/mysql/bin/safe_mysqld komutu verilebilir Root kullanıcısına şifre vermek # cd /usr/local/mysql/bin/ # mysqladmin -u root -password '<şifre>' Örnek # mysqladmin -u root -password Aufen* Aufen* şifresi açık olarak yazılmaktadır. -u bağlanılacak user anlamına gelmektedir Sunucuya Bağlanmak ve Sunucu Yönetimi # mysql -u root -p komutu sonucunda sizden şifrenin girilmesi için aşağıdaki ileti gelecektir Enter passwd: Şifre girilerek sunucuya bağlanılır. Eğer bağlatı komutu ile şifre aynı anda girilecekse # mysql -u root -paufen* şeklinde yazılmalıdır. Burada dikkat edilmesi gereken husus p ile şifrenin birleşik olduğudur. Başka bir makinadaki MySQL sunucusuna bağlanmak için # mysql -h hostaname -pşifre şeklinde yazılmalıdır Sunucu Yönetimi, Kullanıcı Oluşturma ve Hakları MySQL sunucu yönetimi, sunucu kurulduğu anda oluşan mysql veritabanında gerçekleşir. Bu veritabanında 5 adet tablo vardır, bu tablolar erişim haklarını denetlerler. user tablosu kullanıcıların sunucuya hangi host makinadan hangi haklarla bağlanabileceğini belirler. Bu tabloda bulunan haklar kullanıcıya global olarak verilir ve verilen haklar istisnasız tüm veritabanları üzerinde etkili olur. Host alanı ise tam tersine bağlanabilecek tüm hostları içermelidir. Diğer tablolarda bunların dışında host alanı girilmesi anlam taşımayacaktır. db tablosu kullanıcıların belirli bir veritabanına hangi haklarla erişebileceğini gösterir. Global olarak sahip olunmayan hakları verebilir, ancak global olarak sahip olunan 17
18 hakları kaldıramaz. Yani user tablosunda kullanıcıya verilen hakları geri alamaz ama belirli bir veritabanına ait olmak üzere yeni haklar verebilir. Burada host alanı user tablosunda verilen host aralığını daraltabilir. Yani bir kullanıcı user tablosundaki host aralığının kapsadığı bir host'tan sunucu bağlantısı kursa da, db tablosunda belirli bir veritabanına kullanıcının bu hosttan erişimine ilişkin bir satır (kayıt) yoksa veritabanına erişemez. Burada host alanı için için tipik olarak '%' kullanılabilir. Böylece sunucu bağlantısı sağlayabilen tüm hostlar veritabanına kabul edilirler. host tablosu db tablosundaki 'host' alanına değer girilmezse anlam kazanır. Bu durumda ilgili veritabanına bağlanabilecek hostlar host tablosundan taranır ve erişim haklarına bakılır. Burada haklar açısından user ve db tabloları arasındaki ilişkiden farklı br durum vardır. Öyle ki burada db ve host tabloları arasında adeta bir AND işlemi yapılır. table-priv tablosu tablo düzeyinde erişim haklarını belirler. (Sadece grant, revoke komutları ile değiştirilmeli) column-priv tablosu tablo kolonları düzeyinde erişim haklarını belirler. (Sadece grant, revoke komutları ile değiştirilmeli) Bu tablolarda kullanıcının bir erişim hakkı varsa daha alt düzey tablolara bakılmaz. Yapılan değişiklikleri etkinleştirmek için flush privileges komutu kullanılır. # mysqladmin flush-privileges Veri işleme komutları ile mysql veritabanı üzerinde değişiklik yaparak kullanıcı hakları değiştirilebileceği gibi, daha emniyetli metod olarak grant ve revoke komutları kullanılabilir. GRANT priv_type [(column_list)] [, priv_type [(column_list)]...] ON {tbl_name * *.* db_name.*} TO user_name [IDENTIFIED BY [PASSWORD] 'password'] [, user_name [IDENTIFIED BY 'password']...] [WITH [GRANT OPTION MAX_QUERIES_PER_HOUR # MAX_UPDATES_PER_HOUR # MAX_CONNECTIONS_PER_HOUR #]] priv_type seçenekleri ALL [PRIVILEGES] ALTER CREATE DELETE DROP FILE INDEX INSERT SELECT RELOAD REPLICATION CLIENT REPLICATION SLAVE SHOW DATABASES UPDATE Açıklama Tüm haklar verilir. ALTER TABLE komutu kullanma hakkı CREATE TABLE komutu kullanma hakkı DELETE komutu kullanma hakkı DROP TABLE komutu kullanma hakkı SELECT... INTO OUTFILE ve LOAD DATA INFILE. CREATE INDEX and DROP INDEX INSERT SELECT sorgu komutu ayarların geçerli olması için yeniden başlatmak Gives the right to the user to ask where the slaves/masters are. Needed for the replication slaves (to read binlogs from master). SHOW DATABASES komutu kullanma UPDATE komutu kullanma Bu priv_type seçenekleri seçilerek haklar verilebilir. 18
19 Kullanıcı Oluşturma ve Hak verme Kullanıcıların erişim hakları mysql komut satırında SQL komutlarıyla mysql veritabanındaki user, db, host, table-priv ve column-priv tablolarına girilebileceği gibi bu işi otomatik olarak yapan GRANT komutunu kullanmak daha doğru olacaktır. Örnek1: mysql>grant ALL PRIVILEGES ON *.* TO IDENTIFIED BY 'berfin1' ; berfin kullanıcısı, localhost bilgisayardan, berfin1 sifresiyle tüm haklara sahip olarak oluşturulur. Sadece user tablosunda oluşturulur. Örnek 2: mysql>grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON personel.* TO sena@localhost IDENTIFIED BY 'sena1'; sena kullanıcısı, localhost bilgisayardan, personel veritabanının tum alanlarında SELECT,INSERT,UPDATE,DELETE,CREATE,DROP haklarına sena1 şifresiyle erişecek şekilde oluşturulur. User tablosu ve db tablosunda yaratılır. Kullanıcı Haklarını Silme REVOKE ALL PRIVILEGES ON personel.* FROM sena@localhost; sena kullanıcısının, localhost dan yapacağı bağlantılı, personel tablosundaki tüm haklarını iptal eder. Db tablosundan siler, user tablosunda kalır, fakat hiç bir tabloyu kullanamaz. User tablosundan da silmek için mysql>delete From user where user = sena yazılır MySQL Consol Komutları MySQL sunucusuna bağlanıldıktan sonra artık MySQL özgü komutların ve veritabanı yönetimi için SQL komutlarının verileceği komut satırı (konsol) gelmektedir. mysql> mysql>? Soru işareti(?) konsolda verilecek komutları görüntüler. Bu komutlar aşağıda verilmiştir. Komut Kısa kullanımı İşlev help \h MySQL de kullanılabilecek komutların listesini görüntüler? \? Help komutu ile aynı işlevi görür connect \r MySQL sunucusuna yeni bir bağlantı için kullanılır Ego \G MySQL sunucusuna gönderilen komutun sonucunu dikey olarak görüntüler (sorgudan dönen alanları alt alta yazar \G de noktalı virgül kullanılmaz). 19
20 exit \q MySQL den çıkmak için kullanılır (quit komutu ile aynıdır). print \p Geçerli komutu, dönen sonuçlardan önce görüntüler rehash \# MySQL sunucusundaki son yapılan ayarları günceller source \. Bir dosya içine yazılmış sql ifadesini çalıştırır status \s MySQL Server yapısı hakkında bilgi verir Tee \T Bu komuttan sonraki işlemlerin tamamı belirtilen dosyaya yazdırılır. notee \t \T ile dosyaya yazdırma işlemi sonlandırılır Use \u Başka bir veritabanı seçmeye yarar (Kullanıma hazır hale getirir) Örnek 1: mysql>\u mysql Database changed mysql> Örnek 2: sorgu.sql (metin) dosyasının içeriği aşağıdaki gibidir. select count(*) from user; Bu dosya içerisindeki SQL ifadesi, komut satırında şu şekilde yazılarak çalıştırılır. User tablosundaki kayıt sayısını görüntüler. mysql>\. sorgu.sql Tablo Onarmak mysql>repair tablo <tabloadi>; Belirtilen tablodaki bozukluğu giderecektir. Örnek mysql>repair tablo personel Tablo Kontrol Etmek mysql>check table <tabloadi>; belirtilen tablonun durumu kontrol edilir. Örnek mysql>check tablo personel Konsolda Sorgu Komutları ve Fonksiyon Kullanımı Select deyimi: MySQL temel deyimidir. Bu deyim ile bilgi veritabanından alınacağı gibi, hazir bilgiyi kullanıcıya gösterir. 20
21 mysql> select "MySQL veritabani",300; MySQL veritabani MySQL veritabani row in set (0.00 sec) Select deyimi ile Mysql fonksiyonlarıda kullanılabilir Matematiksel Fonksiyonlar ABS ( x ) SIGN ( x ) MOD ( x, y ) FLOOR ( x ) CEILING ( x ) ROUND ( x ) ROUND ( x, D ) Örnek : x'in pozitif degerini bulur. : x pozitif ise 1, negatif ise -1, 0 ise 0 degerini uretir. : x y'ye bolunur ve kalan deger fonksiyondan doner. : x'e en yakin ve x'den kucuk tamsayiyi bulur. : x'e en yakin ve x'den buyuk tamsayiyi bulur. : x'e en yakin tamsayiyi verir. : noktali sayilarda x'e en yakin, noktadan sonra D rakam olan sayiyi verir. mysql> select floor(-5.2), ceiling(-5.2), round(1.16), round(1.16,1); floor(-5.2) ceiling(-5.2) round(1.16) round(1.16,1) row in set (0.05 sec) POW ( x, y ), POWER ( x, y ) : x'in y'ninci kuvvetini bulur. SQRT ( x ) : x'in karekokunu bulur. PI ( ) : Pi sayisini verir. GREATEST ( x, y, z.. ) : en buyuk veriyi bulur. TRUNCATE ( x, D ) : noktali x sayisini noktadan sonra D rakamli hale sokar. Örnek mysql> select power(3,3),sqrt(25), truncate(pi(),1); power(3,3) sqrt(25) truncate(pi(),1) row in set (0.05 sec) String Fonksiyonlar ASCII ( veri ) : veri'nin ascii karsiligini bulur. CHAR ( m1, m2, ) : ascii kodlu m1,m2 degerlerini stringe donusturur ve birlestirir. mysql> select char(77,121,83,81,76); char(77,121,83,81,76) MySQL row in set (0.06 sec) 21
22 LENGTH ( m ) : m stinginin karakter sayisini bulur. LOCATE ( m1, m2 ) : m1'in m2'deki pozisyonunu bulur. mysql>select locate( h, yahya ); sonuc:3 LEFT ( m, a ) : m metninin soldan a sayisi kadarini alir. mysql>select left( yahya,3); sonuc:yah RIGHT ( m, a ) : m metninin sağdan a sayisi kadarini alir. SUBSTRING ( m, a ) : m metninin a'ninci karakter ve sonrasini alır. mysql>select substring( yahya,3) sonuc:hya SUBSTRING ( m, a, b ) : m' metninin a'ninci karakterden itibaren b karakterlik kismini alır. TRIM ( BOTH LEADING TRAILING ' m ' FROM ' veri ' ) : LEADING ile; veri'nin solundaki ' m ' verileri silinir. TRAILING ile; veri'nin sagindaki ' m ' verileri silinir. BOTH ile; veri'nin iki yanindaki ' m' verileri silinir. mysql> select trim( ankara ); sonuc:ankara mysql>select trim(both a from ankara ); sonuc:nkar SPACE ( a ) : a tane bosluk (space karakteri) uretir. REPLACE ( veri, n1, n2 ) : veri'deki n1 yerine n2 getirilir. mysql>select replace( astroloji, loji, nomi ); sonuc:astronomi REPEAT(veri,a) : Yanyana a tane veri olusturulur. REVERSE(veri) : veri'yi ters hale getirir. mysql>select reverse( Ankara U. Fen Fakültesi ); sonuc:isetlükaf nef.u arakna LCASE ( veri ), LOWER ( veri ) : veri'yi kucuk harfler bicimine sokar. UCASE ( veri ), UPPER ( veri ) : veri'yi buyuk harfler bicimine sokar Tarih ve Zaman Fonksiyonları DAYOFWEEK(tarih) : YYYY-MM-DD formatindaki tarih'in, haftanin kacinci gunu oldugunu bulur mysql>select dayofweek( ); sonuc:4 DAYOFMONTH(tarih) :Ayin kacinci gunu oldugunu bulur. DAYOFYEAR(tarih) :Yilin kacinci gunu oldugunu bulur. MONTH(tarih) :Kacinci gun oldugunu bulur. DAYNAME(tarih) :Gun adini bulur. mysql>select dayname( ); sonuc:wednesday 22
23 MONTHNAME(tarih) :Ay adini bulur. QUARTER(tarih) :Tarihin, yilin kacinci ceyreginde oldugunu bulur. mysql>select quarter( ); sonuç:2 WEEK(tarih) YEAR(tarih) HOUR(zaman) :Yilin kacinci haftasi oldugunu bulur. :Hangi yil oldugunu bulur. :HH:MM:SS formatindaki zaman verisinden saat bulunur. mysql>select hour( 10:15:06 ); sonuc:10 MINUTE(zaman) :Dakikayi bulur. SECOND(zaman) :Saniyeyi bulur. TO_DAYS(tarih) :Tarihi sayıya dönüştürür mysql>select to_days( ); sonuc: FROM_DAYS(sayi) :Sayıyı tarihe dönüştürür mysql>select from_days(731721); sonuc: DATE_FORMAT(parametreler): Verilecek çeşitli parametrelere karşın farklı bilgiler verir. mysql>select date_format(' :23:00', '%W %M %Y'); sonuc:wednesday May 2003 DATE_FORMAT fonksiyonu ile kullanilabilecek %W %M gibi parametreler : %M : Ay adi ( January, December ) %W : Gun adi ( Sunday, Saturay ) %D : Gun degeri ve eki ( 1st, 2nd ) %Y : Yil degeri, 4 dijit ( 1993 ) %y : Yil degeri, 2 dijit ( 93 ) %a : Kisaltilmis gun adi ( Sun, Sat ) %d : Gun degeri, 2 dijit ( 00, 31 ) %e : Gun degeri ( 0, 31 ) %m : Ay degeri, 2 dijit ( 01, 12 ) %c : Ay degeri ( 1, 12 ) %b : Kisaltilmis ay adi ( Jan, Dec ) %j : Yilin gun sayisi ( 001, 366 ) %H : Saat, 2 dijit ( 00, 23 ) %k : Saat ( 0, 23 ) %h : Saat, 2 dijit ( 01, 12 ) %l : Saat ( 1, 12 ) %i : Dakika ( 00, 59 ) %r : Zaman, 12 saatlik ( hh : mm : ss [AP] M ) %T : Zaman, 24 saatlik ( hh : mm : ss ) %S : Saniye ( 00, 59 ) %p : AM yada PM %w : Haftanin kacinci gunu oldugu ( 0=Sunday, 6=Saturday ) %U : Yilin kacinci haftasi oldugu ( Sunday haftanin birinci gunu ) 23
24 %u : Yilin kacinci haftasi oldugu ( Monday haftanin birinci gunu ) %% : Sadece ' % ' karakteri TIME_FORMAT fonksiyonu da DATE_FORMAT biciminde kullanilir. Ancak sadece saat, dakika, saniye verileri kullanilir. Aksi halde NULL degeri verir. CURDATE(), CURRENT_DATE(): O anki tarihi verir. mysql>select current_date(); sonuc: CURTIME(), CURRENT_TIME ():O anki saati verir. NOW(): O anki zamanı mysql>select curtime(); sonuc: :17:53 SEC_TO_TIME (sayi) TIME_TO_SEC( saat ) mysql>select sec_to_time(68); sonuc 00:01:08 mysql>select time_to_sec(68); sonuc 00:01: Çeşitli Fonksiyonlar : sayiyi zamana dönüştürü : zamanı sayiya dönüştürür DATABASE ( ) :Calisilan database ismini verir. USER ( ) :MySQL kullanıcı ismini verir. PASSWORD ( ifade ) :Girilen ifadeyi sifreli forma sokar. ENCRYPT( ifade ) :Girilen ifadeyi ' Unix crypt() ' metodu ile sifreli forma sokar. mysql>select PASSWORD('abc'), ENCRYPT('abc'); sonuc 7cd2b5942be28759, hfciof2w.hvve VERSION ( ) : MySQL Server versiyonunu bildirir. SHOW databases : Veritabanları listesini verir. USE db_adi : Veritabanı seçimi yapar kullanıma hazırlar SHOW tables : Seçili veritabanı tablolarını listesini verir. DESC table_adı : Belirtilen tablonun alan listesini verir. QUIT : MySQL den çıkmaya yarar. mysql> show databases; Database mysql test rows in set (0.00 sec) mysql>use test; test veritabanı seçilmiş olur. 24
25 MySQL Veri Türleri MySQL de bilgi alanları aşağıdaki türler olabilir. TINYINT(M) -> Numerik tamsayilar icin. -128, 127 arasinda deger alabilir. UNSIGNED ifadesi kullanilabilir. SMALLINT(M) -> Numerik tamsayilar icin , arasinda deger alabilir. UNSIGNED ifadesi kullanilabilir. MEDIUMINT(M) -> Numerik tamsayilar icin , arasinda deger alabilir. UNSIGNED ifadesi kullanilabilir. INT(M),INTEGER(M) -> Numerik tamsayilar icin , arasinda deger alabilir. UNSIGNED ifadesi kullanilabilir. BIGINT(M) -> Numerik tamsayilar icin , arasinda deger alabilir. FLOAT((M)(D)) -> Ustel tamsayilar icin E+38, E-38 arasinda deger alabilir. DOUBLE((M)(D)) -> Ustel tamsayilar icin E+308, E-308 arasinda deger alabilir. DECIMAL((M)(D)) -> Noktali sayilar icin. DATE -> Tarih formatli veri icin. 'YYYY-MM-DD' formundadir. DATETIME -> Tarih-saat formatli veri icin. 'YYYY-MM-DD HH:MM:SS' formundadir. TIMESTAMP -> Ozel tarih-saat formatli veri icin. TIME -> Zaman formatli veri icin. 'HH:MM:SS' formundadir. YEAR(2 4) -> 2 yada 4 dijitli yil degeri tutan tarih formati. 'YYYY' veya 'YY' formundadir. CHAR(M) -> Sabit uzunluklu karakter dizisi icin arasinda karakter tutabilir. VARCHAR(M) -> Degisken uzunluklu karakter dizisi icin arasinda karakter tutabilir. TEXT -> Degisken uzunluklu karakter dizisi icin arasinda karakter tutabilir. MEDIUMTEXT -> Degisken uzunluklu karakter dizisi icin arasinda karakter tutabilir. LONGTEXT -> Degisken uzunluklu karakter dizisi icin arasinda karakter tutabilir. ENUM('deger1'..) -> Kullanicinin belirttigi anahtarlari tutar. Anahtar 65535'e kadar olabilir Veritabanı ve Tablo işlemleri için SQL Komutları Burada bahsedilecek komutlar programlama ve veritabanlarında ortak olan SQL komutlarıdır. CREATE DATABASE :Yeni veritabanı oluşturmak için kullanılır. mysql>create database fen; fen isminde bir veritabanı oluşur. DROP DATABASE :Veritabanını siler. mysql>drop database fen; fen isimli veritabanı silinmiş olur. CREATE TABLE :Yeni tablo oluşturmak için kullanılır. Tablo oluşturma işlemi yapılmadan önce mutlaka veritabanı seçili olması gereklidir. Tablo oluşturmak için aşağıdaki komut dizisi yazılır. CREATE TABLE tablo_adı alan_adı veri_türü [DEFAULT ifade][alan_kısıtlaması], 25
26 [tablo_kısıtlaması]); tablo_adı alan_adı alan_veri_türü DEFAULT ifade alan_kısıtlaması tablo_kısıtlaması : Tabloya verilecek isim (örnek musteri), : Tabloda yer alacak bilgi alanlarının adı (Örnek, müşteri_no, adı, soyadı gibi) : O alana girilecek bilginin türü (sayı, metin, tarih gibi) : O alan belirtilmez ise başlangıçta atanacak değer : O alanla ilgili kısıtlama (boş olmaması, o alana sadece E veya K girilmesi gibi kısıtlama) : Her kaydın belirli alanlara göre kısıtlanması (kayıtların tek olmasını sağlamak, başka bir tablo ile ilişkilendirmek) mysql>create table personel (sicil INTEGER NOT NULL, ad CHAR(10), soyad CHAR(10)); personel isimli tablo ve 3 bilgi alanı oluşur. Tablo adı değiştirme Alter komutu ile tablo yapısı değiştirilir. Bir tablonun adı da değiştirilebilir. ALTER TABLE <eski tablo adı> RENAME <yeni tablo adı>; Urun tablosunun adını urun1 olarak değiştirmek için aşağıdaki ifade yazılır. mysql> ALTER TABLE urun RENAME urun1; Query OK, 0 rows affected (0.02 sec) Not: Eğer tablo adı değiştirilmişse tekrar tablo adını eski haline getirmelisiniz, aksi halde aşağıdaki örnekler hata verecektir. Tabloya alan ekleme Tablolara yeni bir alan eklenebilmektedir. ALTER TABLE <tablo adı> ADD <alan adı> <veri_turu>; Urun tablosuna her üründe yapılabilecek iskonto için bir alan oluşturmak için aşağıdaki ifade yazılır. mysql> ALTER TABLE urun ADD iskonto BIGINT; Query OK, 5 rows affected (0.03 sec) Records: 5 Duplicates: 0 Warnings: 0 Tabloda alan adları değiştirme Bir tabloya ait alanların da adı değiştirilebilir. ALTER TABLE <tablo adı> CHANGE TABLE <eski alan adı> <yeni alan adı>; 26
27 mysql> ALTER TABLE urun CHANGE iskonto indirim BIGINT; Query OK, 5 rows affected (0.02 sec) Records: 5 Duplicates: 0 Warnings: 0 Tablodan alan silme Var olan alanlar silinebilir. ALTER TABLE <tablo adı> DROP <alan adı>; Urun tablosundan indirim alanını silmek için aşağıdaki ifade yazılır. mysql> ALTER TABLE urun DROP indirim; Query OK, 5 rows affected (0.03 sec) Records: 5 Duplicates: 0 Warnings: 0 Tablo Silme Tablolara ihtiyaç kalmadığı zaman silmek için kullanılır. Silme işlemlerinin geri dönüşü yoktur, bu sebeple silme işlemlerinde son derece dikkatli davranılmalıdır. DROP TABLE mysql>drop table personel; personel tablosu silinir Örnek Veritabanı ve Tabloları Oluşturma : Tablo silmek için kullanılır. Örneğin spor malzemeleri satan bir mağaza internet üzerinden müşterilerinin siparişlerini almak istemektedir. Bunun için veritabanı yapısı şöyle olmalıdır. MAGAZA isimli veritabanında, siparişi veren müşterinin kişisel bilgilerinin tutulacağı MUSTERI tablosu, mağazada satılan ürünlerin bilgilerinin tutulacağı URUN tablosu ve siparişlerin tutulacağı SIPARIS tablosu oluşturmak gereklidir. Tablolarda aşağıdaki bilgi alanları oluşturulmalıdır. MUSTERI tablosu musteri_no : Her müşteriyi temsil edecek bilgi (her numara bir tane olacak) adi : Müşterinin adı soyadi : Müşterinin soyadı dogum_tarihi : Müşterinin doğum tarihi cinsiyeti : Müşterinin cinsiyeti bilgisi adresi : Müşterinin adresi kart_no : Müşterinin kredi kartı numarası zaman : Müşterinin kayıt edildiği tarih ve saat 27
28 URUN tablosu urun_kodu : Her ürünü temsil edecek bilgi (her kod bir tane olacak) urun_markasi : Ürünün markası urun_adi : Ürünün adı urun_fiyati : Ürünün satış fiyatı SIPARIS tablosu musteri_no : Siparişi yapan müşteriyi belirlemek için kullanılacak bilgi (aynı ada soyada sahip olan müşteriyi ayırt etmek amacıyla tek olan müşteri numarası kullanılır) siparis_tarihi : Siparişin verildiği tarih urun_kodu : Siparişi yapılan ürünü temsil eden kod (aynı isme sahip olan ürünleri ayırt etmek için ürün kodu kullanılır) fiyat : Ürünün sipariş verildiği tarihteki fiyatı miktar : Kaç adet sipariş verildiği sayı tutar : Siparişin tutarı (Fiyatı*Miktar) Örne oluşt MAGAZA MUSTERI URUN SIPARIS musteri_no adi soyadi dogum_ta cinsiyet adresi kart_no zaman urun_kodu urun_markasi urun_adi urun_fiyati musteri_no siparis_tarihi urun_kodu fiyat miktar tutar Şekil 1-2 Magaza veritabanı ve yapısı in sırasıyla musteri, urun ve siparis tabloları aşağıdaki SQL ifadeleri Musteri tablosunun oluşturulması: mysql>create TABLE musteri ( musteri_no INTEGER(5) ZEROFILL NOT NULL, adi VARCHAR(20) NOT NULL, soyadi VARCHAR(20), dogum_tarihi DATE, cinsiyeti ENUM('E','K') DEFAULT 'E', adres VARCHAR(30), kart_no BIGINT(16) UNSIGNED, 28
29 ); zaman TIMESTAMP, CONSTRAINT musteri_no_pk PRIMARY KEY (musteri_no) Urun Tablosunun oluşturulması mysql>create TABLE urun ( urun_kodu INTEGER(5) ZEROFILL NOT NULL, urun_markasi VARCHAR(20) NOT NULL DEFAULT 'BELiRSiZ', urun_turu VARCHAR(20) NOT NULL DEFAULT 'BELiRSiZ', urun_fiyati BIGINT(10) UNSIGNED, CONSTRAINT urun_kodu_pk PRIMARY KEY (urun_kodu) ); Siparis Tablosunun oluşturulması mysql>create TABLE siparis ( musteri_no INTEGER(5) ZEROFILL NOT NULL, siparis_tarihi TIMESTAMP, urun_kodu INTEGER(5) ZEROFILL NOT NULL, fiyat BIGINT(10) UNSIGNED, miktar SMALLINT UNSIGNED, tutar BIGINT(16) UNSIGNED, CONSTRAINT siparis_pk PRIMARY KEY (musteri_no,siparis_tarihi,urun_kodu), CONSTRAINT siparis_musteri_fk FOREIGN KEY (musteri_no) REFERENCES musteri(musteri_no), ); CONSTRAINT siparis_urun_fk FOREIGN KEY (urun_kodu) REFERENCES urun(urun_kodu) Başka bir şekilde de sql komutları çalıştırılabilir. Yukarıdaki sql ifadeleri bir text dosya içine yazılabilir. yapi.sql text dosyasinin içine yazılır ve aşağıdaki gibi çalıştırılabilir. mysql>\. yapi.sql şeklinde mysql komut satırında yapi.txt çağırılarak tablolar oluşturulur SQL Veri İşleme Komutları Kayıt ekleme INSERT INTO <tablo_adi> VALUES (tablodaki tüm alanların sırasına göre değerleri); veya INSERT INTO <tablo_adi> (alan1,alan2,...) VALUES (deger1,deger2,...); mysql> INSERT INTO musteri VALUES (1,'Yahya','Demircan','1990/05/26','E','Ankara Üniversitesi',' ',' '); 29
30 Örnek 2. mysql> INSERT INTO musteri (musteri_no,adi,soyadi) VALUES (2,'Muhittin','Altınkaya'); Örnek 1 de VALUES dan sonra tablodaki tüm alanların değerleri aynı sırada yazılmalıdır. Eğer değeri yoksa veri türüne göre sayısal ise 0, alfasayısal ise (tırnak aç-kapa) yazılır. Örnek 2 de ise tablo adından sonra girilecek bilgi alanları yazılır, VALUES dan sonrada bu sıraya göre değerleri yazılır Kayıt güncelleme UPDATE <tablo_adı> SET alan1 = değer1 [, alan2=değer2,...] [WHERE koşul cümlesi] ; mysql>update musteri SET dogum_tarihi = 1977/03/03 ; Örnek 1 uygulandığında tüm müşterilerin doğum tarihleri koşul belirtilmediği için aynı olacaktır. Örnek 2. mysql>update musteri SET dogum_tarihi = 1978/04/05 WHERE musteri_no =2; Örnek 2 uygulandığında koşul belirtildiği için sadece 2 nolu müşterinin doğum tarihi değiştirilmiş olur Kayıt silme DELETE FROM <tablo_adı> [WHERE koşul cümlesi]; Bu örnek oldukça tehlikelidir. Çünkü koşul belirtilmediği için musteri tablosundaki tüm kayıtlar silinmiş olacaktır, geri dönüşü olmayacaktır. mysql>delete FROM musteri; Örnek 2. mysql>delete FROM musteri WHERE adi = Muhittin ; Örnek 2 uygulandığında koşul belirtildiği için Muhittin adlı müşteri tablodan silinmiş olacaktır. 30
31 Magaza veritabanında oluşturulmuş örnek kayıtlar Veritabanı sorgulama işlemlerinde yapılan örneklerde aşağıdaki kayıtlar esas alınmıştır. Musteri Tablosundaki tüm kayıtlar musteri_no adi soyadi dogum_tarihi cinsiyeti Yahya Demircan E Muhittin Altınkaya E Banu Demirel K Sibel Demirel K Murat Köseçavuş E Ethem Derman E rows in set (0.00 sec) Urun Tablosundaki tüm kayıtlar urun_kodu urun_markasi urun_turu urun_fiyati Adidas Futbol ayakkabı Adidas Eşofman Reebok Forma Mert Pinpon Topu Mert Masa Tenisi Raket rows in set (0.00 sec) Siparis Tablosundaki tüm kayıtlar musteri_no siparis_tarihi urun_kodu fiyat miktar tutar rows in set (0.00 sec) Kayıt sorgulama Bu kısımda, bir veya birden çok tablodaki kayıtların nasıl sorgulanacağı anlatılacaktır. Yukarıda anlatılan veri işlemleri ile ilgili yapılan uygulamalar çalıştırıldıklarında sadece işlemin yapılıp yapılmadığına ilişkin mesajlar verilir. Buna rağmen, veritabanı işlemlerinde en çok sorgulama işlemleri kullanılır. Sorgulama cümlesine bağlı olarak, tablodaki kayıt sayısı, herhangi bir sayısal işlemin sonucu (toplam, ortalama, en küçük değer, en büyük değer,...) gibi bir veya birden çok tabloya bağlı olarak sorgulamanın sonucu görüntülenir. Sonuç olarak diğer veri işlemlerinden farklı olarak, sorgulama işlemleri sonucunda tablolardaki kayıtlar üzerinde herhangi bir değişiklik olmamaktadır. SELECT [ALL DISTINCT] { * alan_adi_listesi} [INTO {OUTFILE DUMPFILE} dosya_adı export_options] FROM tablo-ismi [WHERE koşul] 31
32 [GROUP BY alan_adi1 [, alan_adi2]...] [HAVING search-condition] [ORDER BY siralama_alanlari] şeklinde genel bir ifadesi vardır Şartsız (koşulsuz) kayıt sorgulama Herhangi bir tabloya ait bilgi alanlarındaki bilgilerin listesini almak için; SELECT <alan adı [,alan adı1,...]> FROM <tablo adı>; ifadesi kullanılır. SELECT ile FROM arasına ekrana görüntülenecek bilgi alanları yazılır. Eğer tüm alanlar görüntülenecekse * (yıldız) kullanılır. Kesinlikle hem * hem de yanına başka bir bilgi alanı yazılamaz. Sorgulamanın en genel ifadesidir. Siparis tablosundaki bütün bilgi alanlarının içeriğini listeler. mysql> SELECT * FROM siparis; musteri_no siparis_tarihi urun_kodu fiyat miktar tutar rows in set (0.00 sec); Örnek 2. Musteri tablosundaki tüm kayıtların musteri_no, adi ve soyadini görüntüleyen şartsız bir SQL ifadesidir. mysql> SELECT musteri_no,adi,soyadi FROM musteri; musteri_no adi soyadi Yahya Demircan Muhittin Altınkaya Banu Demirel Sibel Demirel Murat Köseçavuş Ethem Derman rows in set (0.00 sec) Örnek 3. Tablo sorgulanırken aynı anda alanlar üzerinde hesaplamalar yapılabilir. Fakat yapılan hesaplamalar geçici olarak ekranda görüntülenir, tabloya kayıt edilmez. 32
33 mysql> SELECT tutar,tutar*0.25 FROM siparis; tutar tutar* rows in set (0.00 sec) Örnek 4. Musterilerin ad ve soyadlarını birleştirerek görüntüleyen SQL ifadesidir. Bu birleştirme işlemine geçici olarak isimsoyad başlığı verilmiştir. mysql> SELECT CONCAT(adi,' ',soyadi) isimsoyad FROM musteri; isimsoyad Banu Demirel Sibel Demirel Murat Köseçavuş Ethem Derman rows in set (0.00 sec) SQL sonucunu txt dosyasına aktarma Eğer SQL ifadelerinin sonucunu bir dosyaya yazdırmak gerekiyorsa aşağıdaki gibi bir ifade yazılmalıdır. rapor.txt dosyası bilgisayarın c:\mysql\data\magaza\ klasöründe oluşur. mysql> SELECT CONCAT(adi,' ',soyadi) isimsoyad -> INTO OUTFILE 'rapor.txt' FROM musteri; Query OK, 6 rows affected (0.00 sec) Şartlı kayıt sorgulama Genellikle tablolardaki kayıtların tümüne değil, belli koşullara uyanlar görüntülenmek istenir. Bu durumda SQL cümlesine WHERE ifadesi eklenir. SELECT <alan adı [,alan adı1,...]> FROM <tablo adı> WHERE <koşullar> Musteri tablosundaki erkek müşterilerin adının ve soyadının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT adi,soyadi FROM musteri WHERE cinsiyeti = 'E'; adi soyadi Yahya Demircan Muhittin Altınkaya Murat Köseçavuş Ethem Derman rows in set (0.00 sec) 33
34 Örnek 2. Soyadı Demirel olan müşterilerin adı ve doğum tarihinin görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT adi,dogum_tarihi FROM musteri WHERE soyadi = 'Demirel'; adi dogum_tarihi Banu Sibel rows in set (0.00 sec) Yukarıdaki örnekten farklı olarak tarih formatını değiştirmek için SQL ifadesinde fonksiyonlarda kullanılabilir. Örnek 3. mysql> SELECT adi,date_format(dogum_tarihi,'%d.%m.%y') FROM musteri WHERE soyadi = 'Demirel'; adi DATE_FORMAT(dogum_tarihi,'%d.%m.%Y') Banu Sibel rows in set (0.00 sec) Koşul ifadelerinde birden fazla alan birlikte kullanılabilir. Her koşul ifadesi arasına AND veya OR bağlaçları yazılır. Örnek 4. Soyadı Derman ve adı Ethem olan müşterilerin numarasını görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT musteri_no FROM musteri WHERE soyadi='derman' AND adi='ethem'; musteri_no row in set (0.02 sec) Örnek 5. Soyadı Demircan veya cinsiyeti K olan müşterilerin adi ve kredi kart numaralarının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT adi,kart_no FROM musteri WHERE soyadi='demircan' OR cinsiyeti='k'; 34
35 adi kart_no Yahya Banu Sibel rows in set (0.00 sec) Eğer aynı alan için iki veya daha çok değere göre sorgulanacaksa OR bağlacı yerine IN bağlacı kullanmak ifadeyi daha da kısaltacaktır. Örnek 6. Adı Yahya veya Muhittin veya Özgü olan müşterilerin adının ve adresinin görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT adi,adres FROM musteri WHERE adi IN ('Yahya','Muhittin','Özgü'); adi adres Yahya Kızılay Muhittin Beşevler rows in set (0.00 sec) Örnek 7. 30/09/2002 tarihinde doğan müşterilerin adının ve soyadının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT adi,soyadi FROM musteri WHERE dogum_tarihi = '1979/09/30'; adi soyadi Sibel Demirel row in set (0.00 sec) Yukarıdaki örnekten farklı olarak koşul kısmında fonksiyonlarda kullanılabilir. Örnek yılından daha sonra doğan müşterilerin adının ve soyadının görüntülenmesi için aşağıdaki ifade yazılır. mysql>select adi,soyadi FROM musteri WHERE YEAR(dogum_tarihi) > 1975; adi soyadi Yahya Demircan Muhittin Altınkaya Banu Demirel Sibel Demirel rows in set (0.00 sec) SQL ifadelerinde koşula uymayan kayıtları görüntülemek için <> operatörü kullanılır. 35
36 Örnek 9. Soyadı Demirel olmayan kayıtların adının ve soyadının görüntülenmesi için aşağıdaki ifade yazılır. mysql>select adi,soyadi FROM musteri WHERE soyadi<>'demirel'; adi soyadi Yahya Demircan Muhittin Altınkaya Murat Köseçavuş Ethem Derman rows in set (0.00 sec) Bir alan içinde belirli bir aralığı sorgulamak için BETWEEN bağlacı kullanılır. Örnek /02/1960 ile 15/06/1980 yılları arasında doğan müşterilerin adının, soyadının ve doğum tarihinin görüntülenmesi için aşağıdaki ifade yazılır. mysql>select adi,soyadi,dogum_tarihi FROM musteri WHERE dogum_tarihi BETWEEN ' ' AND ' '; adi soyadi dogum_tarihi Muhittin Altınkaya Banu Demirel Sibel Demirel Murat Köseçavuş rows in set (0.00 sec) Kısıtlı bilgilere göre sorgulama Sorgulama işlemlerinde alfasayısal bilgi alanları için koşul yazılırken değerin tamamı yazılmadan sorgulama yapılabilir. Bu durumda koşul cümlesi yazılırken (=,<>,>,>=,<,<=) yerine LIKE operatörü kullanılır. Like operatörü üç farklı yöntem ile kullanılır. İstenilen değer ile başlayan kayıtları listelemek için tırnak içerisinde değerin başlangıç kısmı yazıldıktan sonra % (yüzde) işareti yazılır. SELECT <alan adı [,alan adı1,...]> FROM <tablo adı> WHERE <alan> LIKE < değer% > Soyadı Demir ile başlayan kayıtların adının ve soyadının görüntülenmesi için aşağıdaki ifade yazılır. mysql>select adi,soyadi FROM musteri WHERE soyadi LIKE 'Demir%'; 36
37 adi soyadi Yahya Demircan Banu Demirel Sibel Demirel rows in set (0.00 sec) İstenilen değer ile biten kayıtları listelemek için tırnak içerisinde % (yüzde) işaretinden sonra değer yazılır. SELECT <alan adı [,alan adı1,...]> FROM <tablo adı> WHERE <alan> LIKE < %değer > Örnek 2. Soyadı an ile biten kayıtların adının ve soyadının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT adi,soyadi FROM musteri WHERE soyadi LIKE '%an'; adi soyadi Yahya Demircan Ethem Derman rows in set (0.00 sec) İçerisinde istenilen değer geçen kayıtları listelemek için tırnak içerisinde değerin başlangıç ve son kısmına % (yüzde) işareti yazılır. SELECT <alan adı [,alan adı1,...]> FROM <tablo adı> WHERE <alan> LIKE < %değer% > Örnek 3. Adının içinde M geçen kayıtların adının ve soyadının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT adi,soyadi FROM musteri WHERE adi LIKE '%M%'; adi soyadi Muhittin Altınkaya Murat Köseçavuş Ethem Derman rows in set (0.00 sec) Yukarıdaki üç örneğe uymayan kayıtları görüntülemek için LIKE operatöründen önce NOT bağlacı kullanılmalıdır. Örnek 4. Adının içinde M geçmeyen kayıtların adının ve soyadının görüntülenmesi için aşağıdaki ifade yazılır. 37
38 mysql> SELECT adi,soyadi FROM musteri WHERE adi NOT LIKE '%M%'; adi soyadi Yahya Demircan Banu Demirel Sibel Demirel rows in set (0.00 sec) Boş ve dolu alanlara göre sorgu Tablolar yaratılırken bazı alanlara değer işlenmediği taktirde, tabloda yer işgal etmemesi için alan NULL olarak tanımlanır ve bu alanların ilk değerleri NULL dır. Bu tip alanların oluşturulmasının nedeni her zaman bilgi girilmemesinden dolayıdır. Aksi takdirde o alana bilgi girişi yapılmasa bile bilgi alanının veri türüne göre ilk değer atanmış olur. NULL değere sahip alanlara göre listeleme SELECT <alan adı> FROM <tablo adı> WHERE <alan adı> IS NULL. Adı NULL olan kayıtların adının ve soyadını görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT adi,soyadi FROM musteri WHERE adi IS NULL; Empty set (0.00 sec) Tabloda hiç NULL değer olmadığı için sonuç görüntülenmemiştir. NULL değere sahip olmayan (dolu) alanlara göre listeleme SELECT <alan adı> FROM <tablo adı> WHERE <alan adı> IS NOT NULL. Örnek 2. Adı NULL olmayan (dolu) kayıtların adının ve soyadını görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT adi,soyadi FROM musteri WHERE adi IS NOT NULL; adi soyadi Yahya Demircan Muhittin Altınkaya Banu Demirel Sibel Demirel Murat Köseçavuş Ethem Derman rows in set (0.00 sec) 38
39 Sorgu sonucu dönen kayıtların sıralanması Bir tablo sorgulandığı zaman dönen sonuçlar birincil anahtara (primary key) göre sıralı gelmektedir. Sonuçların sıralamasını değiştirmek mümkündür. ORDER BY bütün SQL ifadelerinde kullanılabilir. SELECT <alan adı> FROM <tablo adı> [WHERE <koşullar>] [ORDER BY alan1 [,alan2,...] {ASC DESC}]. Müşteri tablosundaki kayıtları adına göre sıralayarak adının ve soyadının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT adi,soyadi FROM musteri ORDER BY adi; adi soyadi Banu Demirel Ethem Derman Muhittin Altınkaya Murat Köseçavuş Sibel Demirel Yahya Demircan rows in set (0.00 sec) Örnek 2. Müşteri tablosundaki kayıtları adına göre tersten (büyükten küçüğe) sıralayarak adının ve soyadının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT adi,soyadi FROM musteri ORDER BY adi DESC; adi soyadi Yahya Demircan Sibel Demirel Murat Köseçavuş Muhittin Altınkaya Ethem Derman Banu Demirel rows in set (0.00 sec) Örnek 3. Müşteri tablosundaki kayıtları soyadı ve adına göre sıralayarak adının ve soyadının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT adi,soyadi FROM musteri ORDER BY soyadi,adi ; 39
40 adi soyadi Muhittin Altınkaya Yahya Demircan Banu Demirel Sibel Demirel Ethem Derman Murat Köseçavuş rows in set (0.00 sec) Örnek 4. Urun tablosunda fiyatı 500 den küçük olan ürünleri fiyatına göre küçükten büyüğe göre sıralayarak ürün turunun ve fiyatının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT urun_turu,urun_fiyati FROM urun WHERE urun_fiyati <500 ORDER BY urun_fiyati ; urun_turu urun_fiyati Pinpon Topu 100 Masa Tenisi Raket rows in set (0.00 sec) SQL fonksiyonları Distinct DISTINCT alan_adi Belirtilen alana göre farklı olan kayıtların bulur. Musteri tablosundaki birbirinden farklı soyadların görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT DISTINCT soyadi FROM musteri; soyadi Demircan Altınkaya Demirel Köseçavuş Derman rows in set (0.11 sec) SQL de SELECT ile FROM arasında kullanılan fonksiyonlar vardır, bu fonksiyonlar ekrana sadece tek değer görüntülerler. Sum SUM(alan_adi) Belirtilen alanın toplamını bulur.(sayısal alanlarda) 40
41 Siparis tablosundaki toplam tutarın görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT SUM(tutar) FROM siparis; SUM(tutar) row in set (0.05 sec) Count COUNT(*) Toplam kayıt sayısını bulur. Musteri tablosundaki kayıt sayısının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT COUNT(*) FROM musteri; COUNT(*) row in set (0.00 sec) COUNT(DISTINCT alan_adi) Belirtilen alana göre farklı olan kayıtların sayısı bulur. Örnek 2. Musteri tablosundaki birbirinden farklı soyadların sayısının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT COUNT(DISTINCT soyadi) FROM musteri; COUNT(DISTINCT soyadi) row in set (0.00 sec) Max MAX(alan_adi) Belirtilen alandaki en büyük değeri bulur. Urun tablosundaki en pahalı ürünün fiyatının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT MAX(urun_fiyati) FROM urun; MAX(urun_fiyati) row in set (0.00 sec) 41
42 Min MIN(alan_adi) Belirtilen alanda en küçük değeri bulur. Urun tablosundaki en ucuz ürünün fiyatının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT MIN(urun_fiyati) FROM urun; MIN(urun_fiyati) row in set (0.00 sec) Avg AVG(alan_adi) Belirtilen alandaki ortalama değeri bulur. Siparis tablosundaki ortalama sipariş tutarının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT AVG(tutar) FROM siparis; AVG(tutar) row in set (0.00 sec) İki veya daha fazla tablonun beraber sorgulanması (JOIN) Birden fazla tablodan aynı anda bilgi getirilmesi gerektiğinde, ortak alanlar üzerinden birleştirme işlemleri yapılır. Birleştirme işlemi koşullar bölümünde yapılır, ortak olan alanlar eşleştirilir. SQL ifadelerinde alan isimlerinin önüne tablo adı yazılır. Tablo adı ile alan adı arasına. (nokta) konulur. SELECT alan1[,alan2,...] FROM tablo1,tablo2 [,tablo3,...] WHERE tablo1.alan1 = tablo2.alan1 [AND tablo1.alan2 = tablo2.alan2,...] Müşterilerin adlarının ve sipariş verdikleri ürünlerin kodlarının, fiyatının ve tutarının görüntülenmesi için aşağıdaki ifade yazılır. mysql>select musteri.adi,siparis.urun_kodu,siparis.fiyat,siparis.tutar FROM musteri,siparis WHERE musteri.musteri_no=siparis.musteri_no; 42
43 adi urun_kodu fiyat tutar Yahya Yahya Muhittin Muhittin Muhittin rows in set (0.00 sec) Örnek 2. Yahya adlı müşterinin sipariş verdiği ürünlerin kodlarının, fiyatının ve tutarının görüntülenmesi için aşağıdaki ifade yazılır. mysql>select musteri.adi,siparis.urun_kodu,siparis.fiyat,siparis.tutar FROM musteri,siparis WHERE musteri.musteri_no=siparis.musteri_no AND musteri.adi = 'Yahya'; adi urun_kodu fiyat tutar Yahya Yahya rows in set (0.02 sec) Örnek 3. Sipariş verilen ürünlerin adlarının ve siparis miktarının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT urun.urun_markasi,urun.urun_turu,siparis.miktar FROM urun,siparis WHERE urun.urun_kodu = siparis.urun_kodu; urun_markasi urun_turu miktar Adidas Futbol ayakkabı 15 Adidas Eşofman 10 Adidas Futbol ayakkabı 5 Adidas Eşofman 5 Reebok Forma rows in set (0.00 sec) Tablo adlarına takma ad (Alias) verme SQL ifadelerinde dikkat edilirse tablo isimleri yazıldığı zaman ifadeler biraz daha karmaşık bir hal almaktadır ve ifadeler uzamaktadır. Bu sebeple tablo adını temsil edecek daha kısa bir ad (alias) vermek daha uygundur. Tercihen tablo adlarının ilk harfleri verilir. Takma ad için, FROM dan sonra tablo adı bir boşluk ve takma ad yazılır. Takma ad verildikten sonra bilgi alanları önüne bu takma ad yazılır. Takma ad ile alan adı arasına yine. konulur. 43
44 Müşterilerin adının, vermiş olduğu siparişlerin tarihlerinin ve tutarının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT m.adi,s.siparis_tarihi,s.tutar FROM musteri m, siparis s -> WHERE m.musteri_no=s.musteri_no; adi siparis_tarihi tutar Yahya Yahya Muhittin Muhittin Muhittin rows in set (0.00 sec) Örnek 2. Müşterilerin adının, vermiş olduğu siparişlerdeki ürün markasının ve sipariş tutarının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT m.adi,u.urun_markasi,s.tutar FROM musteri m, siparis s,urun u WHERE m.musteri_no=s.musteri_no AND s.urun_kodu = u.urun_kodu; adi urun_markasi tutar Yahya Adidas Yahya Adidas Muhittin Adidas Muhittin Adidas Muhittin Reebok rows in set (0.00 sec) Kayıtları gruplama Bir tablo içerisinde yer alan kayıtlar kendi içerisinde gruplandırılır. Bu gruplar üzerinde çeşitli işlemler yapılır. Listelenecek bilgi alanları mutlaka GROUP BY ifadesinden sonra belirtilmelidir. SUM, COUNT, AVG, MIN, MAX gibi fonksiyonlarla kullanılan alanlar GROUP BY dan sonra belirtilmez. SELECT alan1[,alan2,...] FROM tablo1 GROUP BY alan1[,alan2,...]; Her müşterinin müşteri numarasının ve yapmış olduğu siparişlerin toplam tutarının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT musteri_no,sum(tutar) FROM siparis -> GROUP BY musteri_no; musteri_no SUM(tutar) rows in set (0.00 sec) 44
45 Örnek 2. Kız ve erkek müşteri sayısının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT cinsiyeti,count(*) FROM musteri GROUP BY cinsiyeti; cinsiyeti count(*) E 4 K rows in set (0.00 sec) Örnek 3. Her marka üründen kaç adet olduğunun görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT urun_markasi,count(*) FROM urun GROUP BY urun_markasi; urun_markasi COUNT(*) Adidas 2 Mert 2 Reebok rows in set (0.08 sec) Örnek 4. Her müşterinin sipariş sayısının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT COUNT(*) FROM siparis GROUP BY musteri_no; COUNT(*) rows in set (0.01 sec) Bu örnekte 2 ve 3 sonucu dönmüştür, bu sayıların hangi müşteriye ait olduğunun da bilinmesi gerekirse SQL ifadesi aşağıdaki gibi olmalıdır. mysql> SELECT musteri_no,count(*) FROM siparis GROUP BY musteri_no; musteri_no COUNT(*) rows in set (0.00 sec) Örnek 5. Urunler içerisinde her üründen en pahalı olanın fiyatını ve markasını görüntülemek için aşağıdaki ifade yazılır. mysql>select urun_markasi,max(urun_fiyati) from urun group by urun_markasi ; 45
46 urun_markasi max(urun_fiyati) Adidas Mert 175 Reebok rows in set (0.01 sec) Gruplar üzerinde koşullu sorgulama Gruplanmış veriler içerisinde belli koşula uyanlar sorgulanacaksa SQL cümlesinde, HAVING ifadesi ile koşullar yazılır. Bu tür SQL cümlelerinde WHERE ile yazılan koşullar varsa öncelikle bunlar göz önüne alınır, sonra gruplama işlemi yapılır. Gruplama sonunda da HAVING ile verilen koşullara uygun kayıtlar listelenir. HAVING ile verilecek koşullar mutlaka GROUP BY yanına yazılan alanlar olmalıdır ve ayrıca COUNT, SUM, MAX, MİN, 3 ten az siparişte bulunan müşterilerin numarasının görüntülenmesi için aşağıdaki ifade yazılır. mysql>select musteri_no,count(*) FROM siparis GROUP BY musteri_no HAVING count(*)>2; musteri_no COUNT(*) row in set (0.00 sec) Örnek 2. Sipariş tutarı dan fazla olan her müşterinin müşteri numarasının ve yapmış olduğu siparişlerin toplam tutarının görüntülenmesi için aşağıdaki ifade yazılır. mysql> SELECT musteri_no,sum(tutar) FROM siparis -> GROUP BY musteri_no HAVING SUM(tutar)> ; musteri_no SUM(tutar) rows in set (0.00 sec) 46
47 4. PHP (Personal Home Page) 4.1. Tarihçe PHP, ilk olarak 1990 lı yılların ortalarında Rasmus Lerdorf tarafından geliştirilmeye başlanmıştır. Lerdorf un amacı kişisel bilgilerini internet üzerinden yayınlamaktı. O tarihteki teknolojide, günümüzdeki gibi gelişmiş web tasarım yazılımlarının bulunmamasından dolayı, kişisel web sayfası yapmak çok daha zordu. Buradan yola çıkarak, kişisel web sayfası yapmak için bir yazılım hazırladı ve adına Personal Home Page (PHP) adını verdi. PHP, Perl dili üzerine kurulu bir dil olarak geliştirilmeye başlanmıştır. PHP nin çok tutulması üzerine web tasarımcılarının çok ihtiyacı olan, yani form yoluyla ziyaretçiden gelen bilgileri işlemeyi sağlayan eklemeler yapılarak adına PHP/FI (Form Interpreter) adını aldı. Kimileri tarafından programın bu versiyonu PHP2 olarak adlandırıldı yılının ortalarında PHP Lerdorf un kurmuş olduğu bir grup tarafından daha da geliştirildi. Bu sefer Perl dilindeki fonksiyonlardan tamamen arındırılmış ve Object Oriented (Nesneye Dayalı) bir dil haline getirildi. Günümüzde PHP4 versiyonu geliştirilmiş durumdadır. PHP dili Linux gibi Açık Kaynak Kodlu bir dildir ve ücretsiz olarak dağıtılmaktadır ve geliştirilmektedir. Linux, Unix, Windows tabanlı işletim sistemlerinde çalışabilen versiyonları mevcuttur PHP nedir? PHP bir script dilidir ve PHP ile yazılan kodlar bir editörde yazılıp PHP veya (kullanılan sürüme göre) PHP, PHP3 gibi uzantılı dosya olarak kaydedilir. PHP ile yazılan dosyalar derlenmezler (compile edilmezler). Sadece Web Server da bu dilde yazılmış scriptleri yorumlayabilecek bir PHP yorumlayıcı program mevcuttur. Bu yorumlayıcı, yazılmış PHP scriptlerini Web Server ın anlayabileceği bir biçime dönüştürür ve yollar. PHP ile yazılmış bir web sayfasına bağlandığınızda temel olarak aşağıdaki işlemler yapılmaktadır. - İstemci(Client) tarafından PHP dosyası bir tarayıcı (browser) ile çağrılır. - Web Server(Web Sunucu) dosya uzantısından bu isteğin bir PHP dosyası olduğunu algılar ve PHP yorumlayıcıya yollar. - PHP yorumlayıcısı ilgili dosya içindeki scriptleri çalıştırarak geriye döndürdüğü sonucu Web Server a tekrar gönderir. - Web Server a ulaştırılan sonuç İstemci(Client) tarafına HTML dosya olarak yollanır. PHP oyun programı yazmaya kadar bir çok amaca hitap edebilecek nitelikte bir dildir. Fakat konular içerisinde veritabanları üzerinde kayıt ekleme, silme, değiştirme, sorgulama işlemlerine yer verilecektir. Sonuç olarak PHP, HTML dilinin yapamadığı işlemleri yapabilmek, HTML olarak daha işlevsel sayfalar yapabilmek, Web Server a bir takım işler yaptırmak gibi yararlar sağlayan bir programlama dilidir PHP nin test edilmesi PHP nin bilgisayara düzgün bir şekilde kurulduğunu test etmek için bir metin editöründe test.php adlı bir dosya oluşturulmalıdır. Bu dosya, "/web/www/docs" web home klasörüne konulmalıdır. 47
48 Test.php dosyasının içeriği phpinfo(); Web browserın adres satırına yazılırsa PHP tanıtım sayfası görüntülenir PHP yazım kuralları Programlama Yapısı PHP yorumlayıcısı, bu "programı" çalıştırabilmek için dosyanın içinde PHP komutlarını arar. PHP Komutları, komut ayıracından anlaşılır ve bunlar üç tanedir. 1. PHP < SCRIPT LANGUAGE="PHP">...</SCRIPT> Örnek 1: ornek1.php dosyası <html> PHP print ("İlk PHP uygulaması "); </html> Örnek 2: ornek2.php dosyası <html> print ("İlk PHP uygulaması "); </html> Örnek 3 : ornek3.php dosyası <html> <SCRIPT LANGUAGE= "PHP" > print ("İlk PHP uygulaması "); </SCRIPT> </html> Bu üç örnekte de sonuç aynı şekilde görüntülenir. Ekrana aynı ifadeler yazılır. 48
49 PHP de yazılan kodlar HTML olarak geri döndürülür. Bunun sebebi yazılan kodların sunucu (server) tarafında PHP tarafından yorumlanarak çalışmasıdır. Bundan dolayı eğer web browserda bir PHP sayfasını çağırılırsa ve sayfanın kaynak kodu görüntülenirse PHP kodları değil bu kodların sonuçları görüntülenir. En uygun komut ayıracını belirlemek sizin elinizdedir. Eğer sadece PHP kullanıyorsanız ikinci yöntemi kullanabilirsiniz. Eğer HTML yerine XML kullanıyorsanız XML tagları... şeklinde olduğundan birinci yöntemi kullanabilirsiniz. Eğer scriptlerinizi daha iyi ayırt edebilmek istiyorsanız üçüncü yöntemi kullanabilirsiniz. Dikkat edilmesi gereken nokta, buradaki script mantığı, JavaScript ve VBScript' ten farklı olarak Web Server tarafında çalışmasıdır. Oysa ki JavaScript ve VBScript gibi scriptler Client (istemci) tarafında çalışmaktadır. 4. "/*"... "*/" bu iki işaret arasında yazılacak her türlü metin açıklama anlamına gelecektir ve PHP yorumlayıcısı tarafından göz ardı edilecektir. 5. "//" işaretinden sonra yazılacak her türlü metin açıklama anlamına gelecektir ve PHP yorumlayıcısı tarafından göz ardı edilecektir. 6. "#"işaretinden sonra yazılacak her türlü metin, açıklama anlamına gelecektir ve PHP yorumlayıcısı tarafından göz ardı edilecektir. 7. Her satırın sonuna ";" işareti konulur (açıklama satırları hariç). Bu işaretlerin birbirinden farkı, tek satır veya çok satır için geçerli olmasıdır. Aşağıdaki örnekleri inceleyiniz. ornek4.php dosyası <HTML> PHP /* Bu iki işaret arasında istediğiniz kadar açıklama yazmanız mümkün */ print ("Açıklama örnekleri!"); // İsterseniz bu şekilde de açıklamalarınızı yazabilirsiniz # Bu satır bir açıklama satırıdır... </HTML> 4.5. HTML ve PHP kodlarını iç içe kullanma PHP kodları, HTML kodlar içerisinde yazılırken ; <html> # PHP kodlarının yazılmaya başlanacağı bildirilir. 49
50 # PHP kodlarının bitirildiği bildirilir. </html> şeklinde kullanılır. Örnek 1: <html> echo "İlk PHP uygulaması"; </html> Yukarıdaki örneği Web Server da "/web/www/docs" klasörü içine "p_ornek1.php" şeklinde kaydedilir ve web tarayıcının adres satırında " yazarak çağırılır. İşlem sonucunda browserda "İlk PHP uygulaması" ifadesi yer alır Örnek 2. <html> print "PHP bir script dilidir.\n" <html> print "PHP kolay öğrenilen bir dildir." Yukarıdaki örneği Web Server da "/web/www/docs" klasörü içine "p_ornek2.php" şeklinde kaydedilir ve web tarayıcının adres satırında " yazarak çağırılır. Yukarıda görüldüğü gibi HTML kod içerisinde birden çok defa PHP kodu yazmak için PHP tagı açılabilir. Öneri : PHP kodları yazmaya başlanırken, PHP tagı açıldıktan sonra kapatılmalı ve diğer kodlar araya eklenmelidir. Aksi halde PHP tagları kapatılmaz ise istenilen sonuçlar elde edilmeyebilir ve daha sonra hangi tagın kapatılmadığını bulmak güçleşebilir PHP kodlarını tek başına kullanma Bu yöntemle oluşturulacak PHP uygulamalarında tüm HTML kodları PHP komutlarıyla yazılır. Fakat sayfa dizaynı ve kodun anlaşılırlığı zor olduğundan bu yöntem çok fazla tercih edilmez. Örnek 1: PHP print ("<html>"); print ("Herşeyi PHP ile yazabilirsiniz"); print ("</html>"); 50
51 4.7. Özel karakterler PHP dilinde bazı karakterlerin özel anlamları vardır (örneğin $ işareti gibi). Bu işaretleri PHP farklı olarak algıladığından, bunlar metin olarak kullanılacakları zaman önlerine "\" karakteri konulur. Böylelikle PHP yorumlayıcısı bunları düz metin olarak değerlendirmiş olur. Bu karakterler ve işlevleri aşağıdaki gibidir. \' Tek tırnak \" Çift tırnak \\ Ters bölü \$ Dolar işareti \n Yeni Satır (New Line) \r Satır Başı (Return) \t Sekme (Tab) karakteri Örnek 1 : <html> PHP print ("1\$ = TL'dir"); </html> Ekrana "1$ = TL' dir" ifadesi yazılır Değişkenler ve veri türleri Veri türleri Integer : Tamsayı veri türüdür. $sayi = 1000; $sayi1 = ; Double: Ondalıklı sayılar için kullanılır. $sayi = 82.05; String: Karakter bilgiler için kullanılır. $adi = "Sibel" Boolean: Mantıksal ifadeler için kullanılır. $cevap = True. $sonuc = False. Object : Nesne değişkenleri için kullanılır. Array : Dizi şeklinde değişken tanımlamak için kullanılır. 51
52 Değişkenler Değişken mantığı diğer programlama dillerinde olduğu gibidir. Bu sebepten değişkenin ne demek olduğu Programlamaya Giriş kısmında bahsedildiği için burada sadece nasıl kullanıldığı anlatılacaktır. 1. PHP de değişkenler önüne $ simgesi konularak tanımlanır. $adi="muhittin"; $soyadi=""; $numara=0; $telefon=" "; $cinsiyet="e"; 2. Değişkenler, harf, rakam veya alt çizgi (_) ile başlayabilirler; bu karakterleri içerebilirler; ama içinde boşluk veya ((,[,],),?,\,!) gibi işaretler bulunmaz. Birçok programlama dilinden farklı olarak PHP de değişkenlerin tipleri (nümerik,karakter,tarih,...) ilk değerleri atandıktan sonra belirlenir. Örnek 2. $adi = "Yahya"; // String $soyadi = "Demircan"; // String $tel = ; // Integer 3. Değişkenlere değer atamak için "=" işareti kullanılır. Örnek 3. $degisken1 = "değer"; $degisken2 = 5; print $degisken1; // Ekrana "değer" ifadesi yazılacaktır. print $degisken2; // Ekrana "5" ifadesi yazılacaktır. 4. Bir değişken, direkt olarak değer atanarak tanımlanabilir. Örnek 4. $tanimla1 = "Ankara"; $tanimla2 = 276; $tanimla3 = 45.23; 5. Bir değişkenin değerini diğer bir değişkene atamak için "=" den sonra ikinci değişken yazılır. 52
53 Örnek 5. $adi = "Ali"; $isim = $adi; print $isim; // $adi değişkenine "Ali" değeri atanıyor. // $isim değişkenine $adi değişkeninin değeri atanıyor. // Ekrana "Ali" yazılacaktır. $isim değişkeninin değerinin her seferinde $adi değişkeni ile birlikte değişmesi, aşağıdaki atama işlemiyle sağlanabilir. Örnek 6: $adi = "Ali"; $isim = $adi; $adi = "Murat"; print $isim; // $adi değişkenine "Ali" değeri atanıyor. // "" işareti her seferinde $isim değişkeninin değerinin // değişmesinin sağlıyor. // $adi değişkenine "Murat" değeri atanıyor. // Ekrana "Murat" yazılacaktır. 6. PHP de diğer programlama dillerinden farklı olarak bir değişkenin tuttuğu değer diğer bir değişken tarafından gösterilebilir. Örnek 7. $adi = "Muhittin"; $isim = "adi"; print $$isim; // Ekrana $adi değişkeninin değeri Muhittin yazılacaktır. Örnek 8. PHP $isim = "adi" ; $$isim = "Murat"; print "$adi"; print $$isim; print "${'adi'}"; print "${$isim}"; # Bu dört print işleminden sonra ekrana "MuratMuratMuratMurat " yazılacaktır Sabitler Sabitler program boyunca değişmeyen değerlerdir. Bir sabit tanımlandıktan sonra atanan ilk değerini korur, yeni bir değer ataması yapılamaz. Sabitler define() komutu ile tanımlanırlar. define ( sabit_adi,deger) 53
54 Örnek 1: define ( pi_sayisi, 3.14); define ( dis_acilar 360); $aci1 = 120; $aci2 = 80; $aci3 = dis_acilar - ($aci1 + $aci2); print ($aci3); // 160 değerini döndürür. Bir sabitle bir değişken arasındaki kullanım farkı, sabitlerin önünde $ simgesinin bulunmamasıdır. defined() : Bir sabitin daha önce tanımlanıp tanımlanmadığına göre true / false sonuç döndürür. defined ("sabit_adi") Örnek 2: if (defined ("pi_sayisi")) print "Tanımlanmış"; else print "Tanımlanmamış"; // "pi_sayisi" adlı bir sabit olmadığı için ekrana "Tanımlanmamış" // yazılır İşlemciler (Operatörler) Atama operatörü = Bir değişkene değer atamak için kullanılır Aritmetik operatörler + Toplama - Çıkartma / Bölme * Çarpma % Kalan (Modulus) 54
55 $a = 6; $b = 3; print ($a + $b); // = 9 sonucunu döndürür print ($a - $b); // 6-3 = 3 sonucun döndürür print ($a / $b); // 6 / 3 = 2 sonucunu döndürür print ($a * $b); // 6 * 3 = 12 sonucunu döndürür print ($a % $b); // 6 / 3 işleminden kalanı yani 0 (sıfır) döndürür İki string i birleştirme (Concotenation) İki string ifadeyi birleştirmek için "." kullanılır. $a = "Ankara ". "Üniversitesi ". " Fen ". " Fakültesi" ; $b = "PHP ". "Programlama". "Dersi "; $c = $a. " ve " $b; print ($c); // "Ankara Üniversitesi Fen Fakültesi ve PHP Programlama Dersi" //sonucu çıkar Birleşik atama işlemleri += :Değişkenin değerini belirtilen sayı kadar artırır. $degisken += sayi $sayi = 30; $sayi += 10; print ($sayi); // $sayi = $sayi + 10 işlemini yapmış olur. // 40 sonucunu döndürür -= :Değişkenin değerini belirtilen sayı kadar eksiltir. $degisken -= sayi Örnek 2: $sayi = 30; $sayi -= 10; print ($sayi); // $sayi = $sayi - 10 işlemini yapmış olur. // 20 sonucunu döndürür *= :Değişkenin değerini belirtilen sayıyla çarpar. $degisken *= sayi 55
56 Örnek 3: $sayi = 30; $sayi *= 10; print ($sayi); // $sayi = $sayi * 10 işlemini yapmış olur. // 300 sonucunu döndürür /= :Değişkenin değerini belirtilen sayıya böler. $degisken /= sayi Örnek 4: $sayi = 30; $sayi /= 10; print ($sayi); // $sayi = $sayi / 10 işlemini yapmış olur. // 3 sonucunu döndürür.= :Değişkenin değerini belirtilen metine ekler. $degisken.= "metin" Örnek 5: $metin = "Ankara "; $metin.= "Üniversitesi"; // $metin = $metin. "Üniversitesi" işlemini yapmış olur. print ($metin); // "Ankara Üniversitesi" sonucunu döndürür ++ : Değişkenin değerinin bir artırır. $degisken++ veya ++$degisken Örnek 6: $a = 5; $a++; print ($a); // 6 sonucunu döndürür. -- : Değişkenin değerinin bir eksiltir. $degisken-- veya --$degisken 56
57 Örnek 7: $a = 5; $a--; print ($a); // 4 sonucunu döndürür Karşılaştırma operatörleri == : Eşittir === : Aynı!= : Eşit Değildir > : Büyüktür < : Küçüktür >= : Büyük yada Eşittir <= : Küçük yada Eşittir Karşılaştırma operatörleri string ve sayısal karşılaştırmalarda kullanılabilir Mantıksal operatörler or : Koşullardan en az birinin sağlanması durumunda True sonuç döndürür. or yerine " " kullanılabilir. and : Sadece koşulların tümünün doğru olduğu zamanlarda True sonuç döndürür. and yerine "" işareti kullanılabilir. Xor : İki koşuldan sadece bir tanesinin doğru olması sonucuna True değer döndürür.! : Koşulun değerlerinden birinin yanlış olması durumunda True değer döndürür PHP dilinde işlemlerin öncelik sırası Diğer dillerde olduğu gibi PHP için de işlemlerin öncelik sırası mevcuttur ve / * % $a = 5; $b = 3; $c=$a++ * $b; print $c; print "<br>"; print $a; //Ekrana c degeri 15, a degeri 6 olarak yazılır. 57
58 Örnek 2. $a = 5; $b = 3; $c=++$a * $b; print $c; print "<br>"; print $a; //Ekrana c degeri 18, a degeri 6 olarak yazılır Diziler (Array) Dizi, bellekte aynı isim altında toplanmış değişkenler kümesidir. Eğer ki aynı türden veriler grubunu bellekte tutmak gerekirse diziler kullanılır. Örneğin verilerin sıralanması, ortalamasının bulunması gibi işlemlerde dizilere ihtiyaç duyulur. PHP içerisinde tanımlanan diziler bir veya daha çok boyutlu olabilir. Bunun daha iyi anlaşılabilmesi için aşağıdaki dizi tanımlamaları ve örnekler incelenmelidir Dizi değişkenler Aynı türden bilgilerin bir değişkenin içerisinde tutulmasıyla oluşturulur. Bir değişkenin dizi olup olmadığı "[]" simgelerinden anlaşılır. $degisken = array(deger1, deger2,...,degern) veya $değişken[indis_no] = deger şeklindedir. Bir dizinin n. inci elemanına ulaşmak için dizinin adından sonra köşeli parantez içinde dizi elemanının indis numarası yazılır. $degisken[5] = "Aylin"; print $degisken[5]; // Ekrana Aylin yazılacaktır Bu örnekte dizinin 5.inci elemanına "Aylin" değeri atanmıştır. Diziler tanımlanırken array komutu kullanılmayabilir. Eğer indis numarası yazılmazsa ilk eleman olan sıfırıncı sıradaki elemana ulaşılır. Daha sonra indis numarası verilmeden ulaşılan eleman bir sonraki eleman olacaktır. $liste = (deger1,deger2,...); veya $liste[] = deger1; $liste[] = deger2; $liste[] = degern; 58
59 Örnek 2. $degisken[] = "Ocak"; $degisken[] = "Şubat"; $degisken[] = "Mart"; $degisken[] = "Nisan"; print $degisken[1]; print "<br>"; print $degisken[3]; //Ekrana "Şubat" ve"nisan" yazılır Diziler tanımlanırken indis numarası yerine isim verilebilir. $liste[isim1] = deger1; $liste[isim2] = deger1; Örnek 3. $degisken["ay1"] = "Ocak"; $degisken["ay2"] = "Şubat"; $degisken["ay3"] = "Mart"; $degisken["ay4"] = "Nisan"; print $degisken["ay1"]; print "<br>"; print $degisken["ay3"]; //Ekrana "Ocak" ve"mart" yazılır Çok boyutlu diziler Bu dizi tipi dizi değişkenlerden farklı olarak birden fazla değişkeni içerebilir. $degisken = array (array ("isim1"=>deger1, "isim2"=>deger2,..,isimn"=>degern), array...) yada $dizi [x][y][] = deger Bir apartmanda oturan kişilerin isimlerini tutacak iki boyutlu bir dizi aşağıdaki gibi oluşturulur. Daire Kişi No Adı Soyadı Sena Demircan Murat Köseçavuş 3 1 Banu Demirel 3 2 Sibel Demirel 4 1 Ethem Derman $kisiler[1][1] = ""; 59
60 $kisiler[1][2] = "Sena Demircan"; $kisiler[2][1] = ""; $kisiler[2][2] = "Murat Köseçavuş"; $kisiler[3][1] = "Banu Demirel"; $kisiler[3][2] = "Sibel Demirel"; $kisiler[4][1] = "Ethem Derman"; print ($kisiler[4][1]); //Ekrana Ethem Derman yazılacaktır Dizilerde kullanılan fonksiyonlar count() Bir dizideki eleman sayısını döndürür. count($dizi_adi); $kisiler[1] = ""; $kisiler[2] = "Sena Demircan"; $kisiler[3] = ""; $kisiler[4] = "Murat Köseçavuş"; $kisiler[5] = "Banu Demirel"; $kisiler[6] = "Sibel Demirel"; $kisiler[7] = "Ethem Derman"; print count($kisiler); //Ekrana 7 yazılacaktır is_array() Bir değişkenin dizi olup olmadığını araştırır. is_array( $dizi_adi ); $liste = 5; if (is_array($liste)) print "dizi"; else print "dizi değil"; 60
61 array_merge() İki dizinin elamanlarını birleştirerek yeni bir dizi oluşturur. $yeni_dizi = array_merge ( $ilk_dizi, $ikinci_dizi ); $kisiler1[1] = ""; $kisiler1[2] = "Sena Demircan"; $kisiler1[3] = ""; $kisiler1[4] = "Murat Köseçavuş"; $kisiler2[1] = "Banu Demirel"; $kisiler2[2] = "Sibel Demirel"; $kisiler2[3] = "Ethem Derman"; $kisiler3 = array_merge ($kisiler1,$kisiler2); print $kisiler3[6]; //Ekrana Ethem Derman yazılacaktır sort() Bir dizinin elemanlarını küçükten büyüğe veya A' dan Z' ye sıralamak için kullanılır. sort ($dizi_adi); $kisiler[1] = ""; $kisiler[2] = "Sena Demircan"; $kisiler[3] = ""; $kisiler[4] = "Murat Köseçavuş"; $kisiler[5] = "Banu Demirel"; $kisiler[6] = "Sibel Demirel"; $kisiler[7] = "Ethem Derman"; sort($kisiler); print $kisiler[1]; print $kisiler[2]; print $kisiler[3]; print $kisiler[4]; print $kisiler[5]; print $kisiler[6]; print $kisiler[7]; /* Ekrana sırasıyla Banu Demirel Ethem Derman Murat Köseçavuş Sena Demircan Sibel Demirel */ 61
62 rsort(): Bir dizinin elemanlarını büyükten küçüğe veya Z' den A' ya sıralamak için kullanılır. sort() fonksiyonunun tersini yapar. rsort ($dizi_adi); explode Bir string değişkeni belirtilen karakterden ayırarak diziye dönüştürür. degisken1 = explode( ayirac,degisken2); $xkurs= Ankara;Üniversitesi;Fen;Fakültesi;Bilgisayar;Kurs;Merkezi ; $xadres = explode(";",$xkurs); echo $xadres[0]."<br>"; //Ankara echo $xadres[1]."<br>"; //Üniversitesi echo $xadres[2]."<br>"; //Fen echo $xadres[3]."<br>"; //Fakültesi echo $xadres[4]."<br>"; //Bilgisayar echo $xadres[5]."<br>"; //Kurs echo $xadres[6]."<br>"; //Merkezi PHP de kontrol yapıları if kontrol yapısı Bir koşulun olması veya olmaması durumunda yapılacak işlemleri belirlemek amacıyla kullanılır. Kullanılış biçimi 1: if ( koşullar ) { Komutlar } elseif (diğer koşullar) { Komutlar } else { Komutlar } 62
63 Kullanılış biçimi 2: if ( koşullar ) { Komutlar } elseif (koşullar) { Komutlar } Kullanılış biçimi 3: if ( koşullar ) { Komutlar } else { Komutlar } Kullanılış biçimi 4: if ( koşullar ) { Komutlar } Koşul kısmında birden fazla koşul var ise, bunlar bağlaç ile birleştirilir. Eğer koşula göre yapılacak (yazılacak komut) bir tane ise { } (küme parantez) kullanılmayabilir, ama karışıklığa meydan vermemek için { } kullanılması önerilir. İki sayıdan büyük olanı bulan program aşağıdaki gibi yazılır. $sayi1 = 5; $sayi2 = 15; if ($sayi1 > $sayi2) { print ("İlk sayı büyük $sayi1"); } else if ($sayi1 < $sayi2) { print ("İkinci sayı büyük $sayi2"); } else { print ("Sayılar eşit $sayi1,$sayi2"); } // İkinci sayı büyük 15 yazar 63
64 switch kontrol yapısı Değişkenin değerinin uygun olduğu duruma göre yapılacak işlerin belirlenmesini sağlar. switch ( değişken ) { case deger1; Komutlar break; case deger2; Komutlar break; case deger3; Komutlar break; default: Komutlar } Görüldüğü gibi bir koşul sonunda yapılacak işler bitirildikten sonra break komutu kullanılmaktadır. Break komutu kullanılmayabilir fakat program akışı sırasında uygun koşuldaki işlemler bittikten sonra diğer koşullarında uygun olup olmadığı sınanır. Mevcut koşullardan hiçbirinin sağlanmaması durumunda yapılacak işlemler default bloğunda belirlenmektedir. Uyarı : Eğer koşullardan sonra break komutunu kullanmazsanız default bloğundaki komutlarda çalıştırılacaktır. Verilen sayıya göre gün adını bulan program aşağıdaki gibi yazılır. $gun = 3; switch ( $gun ) { case 1; print ("Pazartesi"); break; case 2; print ("Salı"); break; case 3; print ("Çarşamba"); break; case 4; print ("Perşembe"); break; case 5; print ("Cuma"); break; case 6; 64
65 print ("Cumartesi"); break; case 7; print ("Pazar"); break; default : print ("Yanlış seçim"); break; } //ekrana Çarşamba yazılır while döngüsü Bir şart sağlandığı sürece bir yordamın icra edilmesidir. Programın icrası sırasında while bloğuna gelindiğinde koşul kontrol edilir ve koşul sağlanıyorsa while döngüsü içerisine girilir. while (koşul) { Şart sağlanıyorsa yapılacaklar } 1'den 10'a kadar olan sayıların toplamını bulan program aşağıdaki gibi yazılır. $sayac = 0; $toplam =0; while ($sayac <= 10) { $sayac ++; $toplam = $toplam + $sayac; } print ($toplam); //ekrana 66 degeri yazılır do while döngüsü While döngüsünden farklı olarak programın icrası sırasında do - while bloğuna gelindiğinde şart kontrol edilmez. do - while bloğuna direkt girilir ve koşul ikinci döngünün başlayacağı sırada kontrol edilir. do { Şart sağlanıyorsa yapılacaklar (en az bir kez yapılır) } while (koşul); 1'den başlayarak, sonuç 100 den büyük oluncaya kadar toplanması gereken rakamların sayısını bulan program. 65
66 $sayac = 0; $toplam = 0; do { $sayac = $sayac + 1; $toplam = $toplam + $sayac; } while($toplam<=100); print ("Kullanılan rakam sayısı : $sayac"); // Kullanılan rakam sayısı : 14 sonucu ekrana gelecektir for döngüsü Bir yordamın istenilen sayı kadar çalıştırılmasını sağlar. for ( $degisken = ilk_deger ; kosul ; adim ) { Koşul doğru ise yapılacak işlere ilişkin komutlar } Örnek 1 1'den 100'e kadar çift sayıların toplamını bulan program. $cift=0; for ( $say = 0; $say <= 100 ;$say+= 2 ) { $cift = $cift + $say; } print ($cift); For bloğunun herhangi bir yerinde çıkmak için break komutu kullanılır. For bloğunun herhangi bir yerinde, bir sonraki tekrara geçmek için continue komutu kullanılır. Bu işlemler mutlaka koşula bağlı (if) olarak yazılmalıdır Fonksiyonlar PHP de fonksiyonlar diğer programlama dillerinde olduğu gibi iki türdedir. Birinci olarak PHP içerisindeki hazır fonksiyonlar ve ikinci olarak programcı tarafından oluşturulan fonksiyonlardır. İlk olarak PHP ye ait olan fonksiyonların neler olduğunu ve nasıl kullanıldıklarını anlatılacaktır print () Ekrana bir değişkenin değerini veya bir metni yazdırmayı sağlar. print ("Yazılacak ifade") veya print ($degisken_adi) 66
67 print ("PHP Programlama"); // Ekrana "PHP Programlama" yazdırır. $gun = "Perşembe"; print ($gun); //Ekrana "Perşembe " yazdırır. echo fonksiyonu da print fonksiyonu gibi ekrana bir bilgi yazdırmak için kullanılır. Örnek 2. echo "PHP Programlama"; // Ekrana "PHP Programlama" yazdırır. $gun = "Salı"; echo $gun; //Ekrana "Salı " yazdırır gettype() Bir değişkenin ne tür bir veri içerdiğini döndürür gettype($degisken_adi) $ders_adi = "PHP Programlama"; print gettype($ders_adi); // Ekrana "string" yazılacaktır settype() Bir değişkenin veri türünü değiştirmek için kullanılır. Burada dikkat edilmesi gereken nokta veri türü değiştirilecek değişkenin değerinin yeni türle uyumlu olması gerekir. Örneğin bir metin değeri içeren değişken sayısal bir türe dönüştürülemez. settype($degisken_adi, "yeni_tur") yeni_tur : String, Integer, Double, Boolean olabilir. Örnek 3: $sayi = 56.48; // İlk atama ondalık sayı olduğundan tür Double oldu. settype($sayi, "Integer"); // Tip tamsayıya dönüştü ve ondalık kısım atıldı. $final = 78; settype($final, "String"); // Tip karaktere dönüştü print gettype($sayi)."<br>"; print gettype($final); 67
68 ( integer ), ( double ), ( string ), ( boolean ) Bu fonksiyonlar ayrı türdeki verileri içeren iki değişkenin değerini birbirine aktarırken, tür değiştirmek için, kullanılır. $degisken1 = ( integer ) $degisken2 $degisken1 = ( double ) $degisken2 $degisken1 = ( string ) $degisken2 $degisken1 = ( boolean ) $degisken2 $sonuc = "75" ; // Karakter türdeki $sonuc değişkenine "75" değeri atanıyor. $basari =(integer) $sonuc; // $sonuc değişkeninin değeri integer a dönüştürülüyor // ve $basari değişkenine atanıyor. //Artık $basari değişkeni sayısal olmuştur print $basari * 2; // ekrana 150 değeri yazılacaktır isset() Bir değişkene değer atanıp atanmadığı (tanımlı olup olmadığı) sonucunu döndürür. Genelde koşul cümleleriyle birlikte kullanılır. Sonuç olarak değişken tanımlı ise true (1), tanımsız ise false (0) değeri dönürür. isset($degisken) if (isset($sifre)) { print("şifre tanımlı"); } else print "Değişken tanımsız"; //$sifre değişkeni tanımlı olmadığından "Değişken tanımsız" yazacaktır Örnek 2. $sifre = '1950abc'; if (isset($sifre)) { print("şifre tanımlı"); } else print "Değişken tanımsız"; //$sifre tanımlı olduğundan "Şifre tanımlı" yazacaktır 68
69 unset() Varolan bir değişkeni yok eder. Eğer ki bir değişken program sonlandırılıncaya dek bir daha işe yaramayacaksa bellekte yer kaplamaması için yok edilmesi uygundur. unset($degisken_adi) $sifre = '1950abc'; unset($sifre); if (isset($sifre)) { print("şifre tanımlı"); } else print "Değişken tanımsız"; //$sifre değişkeni yok edildiği için "Değişken tanımsız" yazacaktır empty() ve isset() Fonksiyonunun tersine eğer değişkene değer atanmamışsa True sonuç döndürür. empty($degisken_adi) $adi = ""; print (empty($adi)); // True değerini döndürür ekrana 1 yazar. if (empty($adi)) print "Değişkenin içi boş"; is_string(), is_integer(), is_double() Değişkenin türünün aranılan tür olup olmadığına göre True değer döndürür, sorgulanan türden değilse false değeri döndürmez. is_string ($degisken_adi) is_integer ($degisken_adi) is_double ($degisken_adi) $sayi = 10; $sonuc = is_integer ($sayi); // True sonuç döndürür. print $sonuc; $metin = "Ankara"; $sonuc1 = is_string ($metin); // True sonuç döndürür. print $sonuc1; 69
70 4.14. String fonksiyonları substr() Bir metnin içerisinden istenilen bir kısmının alınmasını sağlar. Başlama değeri yazılırken metnin ilk harfi 0 (sıfır) olarak sayılmalıdır. substr($degisken, başla, [boyut] ); $metin = "Ankara Üniversitesi Fen Fakültesi"; $fak_adi = substr($metin, 20, 13 ); print ("Fakülte :".$fak_adi); trim() Metnin başındaki ve sonundaki boşlukları siler. trim ($degisken); $sehir = " Ankara"; trim ($sehir); print ($sehir); // Sağ ve sol boşlukları kırparak "Ankara" yazılacaktır chr() ASCII kodu verilen karakteri döndürür. chr(kod); print (chr(65)); // "A" değerini döndürür print chr(66); // "B" değerini döndürür ord() Verilen karakterin ASCII kodunu döndürür. CHR() fonksiyonunun tersi işlemi yerine getirir. ord(karakter); print (ord("a")) ; // 65 değerini döndürür. 70
71 strlen() Verilen metnin uzunluğunu tamsayı cinsinden döndürür. strlen($degisken); print (strlen("ankara")); //6 değerini döndürür printf(), sprintf() Metin biçimlendirme için kullanılır. % :Yüzde işareti yazdırır. b :Değer tamsayı olarak işlem görür ve ikili sayı olarak döner. c :Değer tamsayı olarak işlem görür ve ASCII değerinin karşılığı olan karakter olarak döner. d :Değer tamsayı olarak işlem görür ve ondalık sayı olarak döner. f :Değer kesirli sayı olarak işlem görür ve kesirli sayı olarak döner. o :Değer tamsayı olarak işlem görür ve sekiz-tabanlı (octal) sayı olarak döner. s :Değer string olarak işlem görür ve alfanümerik olarak döner. x :Değer tamsayı olarak işlem görür ve 16 tabanlı (hexadecimal) sayı olarak döner. (Harfler, küçük harf olur). X :Değer tamsayı olarak işlem görür ve 16 tabanlı (hexadecimal) sayı olarak döner. (Harfler, büyük harf olur). printf( "biçim", $degisken1, $degisken2,... "metin" ); $yil = 2002; $ay = 1; $gun = 21; $tarih = sprintf("tarih:%04d-%02d-%02d", $yil, $ay, $gun); print $tarih; //Ekrana " " sonucu görüntülenir. Bu örnekte %04d yerine $yil, %02d yerine $ay, %02d yerine $gun değişkenlerinin değerleri yazılır. 71
72 number_format() Sayı basamaklarını gruplamak için kullanılır. number_format($degisken, ondalik_hane, ondalik_ayirac, binler_ayirac) ); $sayi = ; // varsayılan format $sonsayi = number_format($sayi); // 1, $sayi = ; $sayi1= number_format($sayi, 2, '.', ''); // Tarih ve saat fonksiyonları getdate() PHP nin kurulu olduğu sunucudan tarih ve saat bilgisini alır ve vereceğiniz bir isimdeki dizideğişkende kaydeder. Bu durumda, $saat_tarih dizi değişkeninde sırasıyla şu bilgiler yer alır: "seconds" - saniye "minutes" - dakika "hours" - saat "mday" ayın günü (1,2,3...31) "wday" haftanın kaçıncı günü sayısal 0 Pazar, 6 cumartesi "mon" - ay sayısal (1,..12) "year" yıl sayısal "yday" yılın kaçıncı günü "weekday" - haftanın günü "Monday,...,Sunday" "month" ay adı "January" $saat_tarih = getdate(); print $saat_tarih['year']."<br>"; //2002 print $saat_tarih['mon']."<br>"; //10 print $saat_tarih['mday']."<br>"; //3 72
73 date() getdate() komutunun yaptığı işi yapar. Burada sonuç dizi değişkene atılmaz onun yerine belli parametrelerle şekillendirilir. a :12 saat esasına dayanan öğleden önce "am" ve öğleden sonraki saatlerde "pm" işaretlerini verir A :Aynı işaretleri büyük harfle yazar d :İki haneli gün sayısını verir 01 den 31 D :Üç haneli güngün adı verir Sun gibi F :Ay adlarını tam olarak verir Jenuary gibi h :12 saat sisteminde saati temsil eder 01,..,12 gibi H :24 saat sisteminde saati temsil eder 0,..., 23 gibi g :12 saat sisteminde saatin önüne sıfır koymaz 1,..., 12 gibi G :24 saat sisteminde saatin önüne sıfır koymaz 0,..., 23 gibi i :Dakikayı verir 00,..., 59 gibi j :Gün sayısını verir sıfır koymaz 1,..., 31 gibi l :Uzun gün adını verir L :Artık yıl olup olmadığını verir. Artık yılsa 1 değerini değilse 0 değerini verir. m :Sıfır koyarak ay sayısını verir 01,..., 12 M :Kısaltılmış ay adını verir Jan gibi n :Sıfır koymadan ay sayısını verir 1,..., 12 s :Saniyeyi verir, 00,..., 59 gibi t :Beliritilen ayın gün sayısını verir 28,.., 31 gibi w :Haftanın gün sayısını verir.0.gün Pazardır. W : Yılın kaçıncı haftasında olduğunu verir 42 (42. hafta gibi) Y :4 haneli yılı verir y :Yılın son iki rakamını verir z :Yılın gün sayısını verir. 0,..., 365 gibi : print date("h:i:s")."<br>"; //16:13:12 print date("d/m/y")."<br>"; //03/10/2002 print date("t/"."f/"."y")."<br>"; //31/October/ Dosya fonksiyonları : include() Bir dosyayı başka bir dosya içerisinden çağırmak için kullanılır. Çağırılan dosyada yer alan PHP kodları aynen çağrıldığı program içerisine yazılmış gibi işlem görür. Bu fonksiyon, ortak yapılacak işlemlerin bir dosyaya yazılarak her program içerisinde kullanılmasını sağlar. include(dosya_adi); gun.inc dosyasının içeriği aşağıdaki gibi olsun print date("t/"."f/"."y"); 73
74 print "Bu gün "; include('gun.inc'); print " Havalar yağmurlu ve biraz soğuk"; //Ekrana "Bu gün 31/October/2002Havalar yağmurlu ve biraz soğuk" iletisi görüntülenir Kullanıcı tanımlı fonksiyonlar Daha önceden de belirtildiği gibi kullanıcının oluşturacağı fonksiyonlar da PHP içerisinde kullanılabilir. Bu fonksiyonlar kullanılmadan önce tanımlanmalıdır. Bir fonksiyon dışardan aldığı değerlere karşılık bir değer döndürme mantığıyla çalışır. Fonksiyonun dışardan aldığı değerlere argüman adı verilir. Bir fonksiyon birden fazla argüman alabilir. Fakat geriye tek değer döndürür Fonksiyon tanımlama : function fonksiyonun_adı (argüman1, argüman2,... argümann) { fonksiyon içinde yapılacak işlemler [return deger] } function ucgen_alan_hesapla($a,$h) { $alan = $a * ($h / 2); return $alan; } Fonksiyon içerisinden geriye değer döndürmek için return komutu kullanılır. return $degisken_adi; Bir fonksiyon tanımlanırken argümanlarına değer atanarak varsayılan değerler oluşturulabilir. Örnek 2. function hesapla ($boy,$en= 40) { $alan = $boy * $en; return $alan; } Bir fonksiyonun çağırılması : fonksiyon_adi(argüman1, argüman2,... argümann) Bir fonksiyon hiç argüman kullanmasa bile çağrılırken mutlaka parantez işaretleri yazılmalıdır. Varsayılan değerlere sahip bir fonksiyon çağrılırken, varsayılan değeri olan 74
75 argümanlar yazılmazsa da fonksiyon çalışır. Fakat bu durumda argümanın varsayılan değeri kullanılacaktır. Bir sayının karesini hesaplayan kullanıcı tanımlı fonksiyon print kare(3); //3 sayısının karesini almak için kare fonk. çağrılır ve ekrana 9 yazar function kare ($sayi) { $sonuc = $sayi * $sayi; return $sonuc; } Örnek 2. İki sayıdan büyük olanını döndüren program. print hesapla(5,7); //5 ile 7 den hangisinin büyük olduğunu bulan fonk. çağırılır ve ekrana 7 yazar function hesapla($sayi1,$sayi2) { if ($sayi1 > $sayi2) { return $sayi1; } if ($sayi2 > $sayi1) { return $sayi2; } } Örnek 3. Argümanı varsayılan olarak belirlenen fonksiyonlarda tek argüman veya iki argüman ile nasıl çalıştığı gösterilmektedir. print hesapla(3); //ekrana 120 değeri gösterilir print hesapla(4,5); //ekrana 20 değeri gösterilir function hesapla($boy,$en=40) { $alan = $boy * $en; return $alan; } Global ve Static Değişkenler Bir fonksiyon sadece içerisinde tanımlanan değişkenlerle çalışabilir. Fonksiyon geriye değer döndürdükten sonra içinde tanımlanmış değişkenler ve bunların değerleri yok olurlar. Programın herhangi bir yerinde tanımlanmış bir değişkenin değerine bir fonksiyon içerisinden ulaşabilmek için, değişkenin o fonksiyon içerisinde, global tanımlanması gerekir. 75
76 global $degisken_adi; Daha önceden de belirtildiği gibi fonksiyonun çalışması bittikten sonra içinde tanımlı değişkenler ve bunların değerleri yok olur. Bunun önüne geçmek için fonksiyon içerisindeki değişkenleri static olarak tanımlamamız gerekir. Static değişkenlerin değeri sade tanımlı olduğu fonksiyon için geçerlidir. $a = 20; hesapla(); print ($a); // sonucu yazılır function hesapla() { global $a; $a = $a * 1000; //$a global olmasaydı buradan değerine ulaşamazdık return $a; } Örnek 2. $adi = "Ankara Üniversitesi"; print fenyazdir(); print "<br>"; print hukukyazdir(); function fenyazdir () { global $adi; $fakulte = $adi. " Fen Fakültesi"; return $fakulte; } function hukukyazdir () { global $adi; $fakulte = $adi. " Hukuk Fakültesi"; return $fakulte; } Static degişken kullanımı static $degisken_adi; Örnek 3. print hesapla(); //20 değerini yazar print "<br>"; print hesapla(); //40 değerini yazar print "<br>"; print hesapla(); //60 değerini yazar 76
77 print "<br>"; print hesapla(); //80 değerini yazar print "<br>"; print hesapla1(); //20 değerini yazar function hesapla() { static $a; $a = $a + 20; //$a static olmasaydı değeri hep 10 geriye dönerdi return $a; } function hesapla1() { static $a; $a = $a + 20; //$a static olmasaydı değeri hep 10 geriye dönerdi return $a; } 77
78 5. HTML ( Hyper Text Markup Language ) 5.1. Html Nedir - Nasıl Hazırlanır? Html (Hypertext Markup Language) web sayfalarının yapımında kullanılan bir dildir. Diğer programlama dillerinden farklı yönü sadece görsel düzenleme için kullanılmasıdır. Html herhangi bir text editörle (Notepad, Word,...) hazırlanabilir. Fakat bunun yerine web sayfası tasarımı için Dreamweaver, FrontPage, Netscape Composer gibi gelişmiş araçlar da kullanılabilir. Kitap içerisindeki örnek uygulamalar için Notepad kullanılmıştır. Bir html dokümanı hazırlandıktan sonra kaydedilirken dosya_adi.htm veya dosya_adi.html olarak kaydedilmelidir Yazım kuralları - Komutlar büyük yada küçük harfle yazılabilir. - Komutlar Türkçe karakterler (ş,ç,ı,ü,ğ,ö) karakterleri içermez. - Komutlar < ve > işaretleri arasında yazılır ve tag adını alırlar. <tag_adi> <HTML>,<BODY>,<TITLE> - Bir tag <tag_adi> şeklinde başlar ve bazı taglar dışında </tag_adi> şeklinde biter. - Taglar iç içe yer alırlar ve en içteki tag dan başlatılarak kapatılırlar. Kodların okunabilirliğini artırmak için bir tag bitmeden tekrar tag açılırsa içeride açılan tag biraz daha içeriden yazılmalıdır. <tag_1> <tag_2> </tag_2> </tag_1> Örnek 2. <HTML> <BODY> </BODY> <FORM> </FORM> </HTML> - Bir tag parametreler kullanarak biçimlendirilir ve bu parametrelere ( ) tırnak işaretleri arasında değer atanır. Değerle parametre adı arasında eşittir (=) işareti kullanılır. 78
79 <tag_adı parametre_adı ="değer"> Örnek 3. <body bgcolor="blue"> 5.2. HTML dilinde kullanılan taglar Her html dokümanının içermesi gereken bazı temel taglar vardır. Bunlar: html, body, head ve title taglarıdır. <html></html> : <html> tagı bir web sayfasında bulunan ilk tagdır. Amacı o dokümanın bir html dokumanı (web sayfası da denilebilir) olduğunu bildirmektir. Önceki anlatılanlardan anlaşılacağı üzere web sayfası içersindeki bütün taglar <html></html> tagının içerisinde yazılır.bu tagın hiç parametresi yoktur. <head> </head> : <head> tagı bir web sayfasının başını oluşturur. <head></head> tagları arasına yazılacak herhangi bir şey sayfada görünmez. Bu tagın içine style sheet kodlari girilir. Bu tagın hiç parametresi yoktur. <title></title> : Bu tag içine yazacağınız yazı web sayfanızın başlığı olacaktır ve browser penceresinin başlık çubuğunda görünecektir.<title> tagı <head></head> tagının içerisinde yazılır. <title> Sayfanın başlığı </title> <html> <head> <title> HTML Dersleri Giriş Sayfası </title> </head> <html> <body> </body> : Bu tag web sayfasının görünen bütün yazıların, resimlerin, formların,... içine yerleştirildiği tagdır. Bu tagın parametreleri daha ilerki konularda anlatılacaktır. <body> </body> Buraya kadar anlatılan konularla temel tagları kullanarak aşağıda bir web sayfasının temel yapısı verilmiştir. <html> <head> <title> Sayfa Başlığı </title> </head> <body> </body> </html> 79
80 Bu kodları Notepad de yazıp çalışma dizininize ornek1.html olarak kaydedilir ve bir browser dan (Internet Explorer veya Netscape) açılırsa aşağıdaki ekran görüntüsünü elde edilir. Bu örnekte <body> tagının içerisine hiç bir şey yazılmadığı için sayfa boş bir sayfa olarak görünmektedir. Pencerenin başlığının Sayfa Başlığı olduğuna dikkat edilmelidir Genel parametreler color: Kullanıldığı tagın rengini belirler. Genel olarak renk değerleri iki şekilde verilebilir. İlk yöntem olarak kullanılmak istenen rengin İngilizce adı ve ikinci olarak da o renge karşılık gelen Hexadecimal değer verilebilir. Örnek olarak şu renk adları verilebilir : aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal. Hexadecimal (onaltılık taban sayı sistemi) renk yönteminde değer olarak 6 rakam ve başında # işareti bulunan kodlar yer almaktadır. Örneğin "#ff0000" kodu Kırmızı renge karşılık gelmektedir. Bu kodların hepsini öğrenmek mümkün olmayacağından bu yöntemi öğrenme zorunluluğu yoktur ve bu yöntem genellikle web sayfası hazırlama araçları tarafından kullanılmaktadır. <tag_adi color= değer > < font color= red > </font> bgcolor : Arka plan rengini belirler. <tag_adi bgcolor= değer > Örnek 2. <body bgcolor= red > </body> Bu şekildeki bir kodlama web sayfasının zemin rengini kırmızı yapacaktır. 80
81 background : Arka plana yerleştirilecek resmin dosya konumunu belirler. <tag_adi background= dosya_adi.(gif, bmp, jpeg) > Örnek 3. <html> <head> <title> HTML Tagları ve Parametreleri </title> </head> <body background="resim.jpg"> </body> </html> Örnekte de görüldüğü gibi resim dosyası web sayfasının içerisine arka plan resmi olarak yerleştirilmiştir. Web sayfası hazırlarken dikkat edilmesi gerekli hususlardan biride resim dosyalarının çalışma klasörünün içinde başka bir klasörde tutulmasıdır. Örneğin çalışma klasörü C:\kurs\ ise bu klasör içerisinde image isimli bir klasör oluşturulabilir. Bu klasör içerisindeki bir resme ulaşmak için background parametresindeki dosya yolunu background= image/resim.jpg olarak değiştirilmelidir. align : Kullanıldığı sayfadaki yatay yerini belirler. Bu parametrenin 3 değeri vardır. Bunlar: left, right ve center dir. Left sola, right sağa dayalı olarak gösterilmesini, center ise ortalanmasını sağlar. <tag_adi align= değer > Örnek 4. <table align= center > </table> valign : Kullanıldığı sayfadaki dikey yerini belirler. Bu parametrenin 3 değeri vardır. Bunlar: bottom, middle ve top dır. Bottom aşağıya doğru, top yukarı middle ortaya konumlandırılacağını belirtir. <tag_adi valign= değer > 81
82 Örnek 5. <table valign= bottom > </table> border : Kullanıldığı nesnenin etrafında bordür oluşturulmasını sağlar. Bordür kalınlığı için sayısal değer verilir. Border parametresi kullanılmaz ise varsayılan olarak değeri 1 kabul edilir. <tag_adi border= değer > Örnek 6. <html> <head> <title> Hizalama ve Borderlar </title> </head> <body> <table align="center" border="2"> <tr> <td>satır1</td> </tr> </table> </body> </html> height : Nesnenin yüksekliğini belirler. Height parametresine sayı olarak değer verilir. <tag_adi height= değer > Örnek 7. <tr height= 30 > </tr> 82
83 <body> tagının parametreleri bgcolor: Arka plan rengini belirler. Bu parametrenin değerleri yukarıda anlatılan şekilde verilir. background:bu parametreyi kullanarak sayfanın arka planında resim kullanabilir. link: Sayfada ki text linklerin rengini belirler. alink: Link'e tıklandığındaki rengi belirler. vlink: Daha önce ziyaret edilmiş linklerin rengini belirler. text: sayfadaki biçimlendirilmemiş yazıların rengini belirler. <body bgcolor = değer link= değer vlink= değer alink= değer text= değer > <body alink="aqua" link="blue" vlink="red" text="black" bgcolor= "white"> Yazı biçimlendirme tagları <font> </font>: Yazı biçimlerinin verildiği tagdır. <font> tagının bir takım parametreleri vardır Bunlar: color : Önceden anlatılan teknikler ve renk kodlarıyla yazının rengi belirlenebilir. Örnek 2. <font color="#ff0000">kırmızı renkli yazı</font> face : face parametresi yazının hangi yazı biçimini kullanacağını gösterir.(helvetica, arial,verdana... gibi).bu parametreye yazı değerleri isimleri verilir. Yazı biçiminin görünmesi için web sayfasını açan bilgisayarda o yazı tipinin bulunması gerekmektedir. Eğer yoksa bir kaç yazı tipini alternatif olarak ve virgülle ayırarak yazabilirsiniz. Örnek 3. <font face="arial,verdana,helvetica">bu yazı tipi arial dir. Eğer arial bulunmuyorsa diğer tipler kullanılır </font> size : Font büyüklüğünü belirler. Bu parametreye 1-7 arası rakamlar girilir (1 en küçük, 7 en büyük). Eğer en son kullanılan yazı tipi boyutu artırılıp azaltmak istenirse +1,+5,-3,-4 gibi değerler kullanılır. <b> : Bu tag kullanıldığında bundan sonraki yazılar koyu (bold) olacaktır. <i> : Bu tag kullanıldığında bundan sonraki yazılar italik (italic) olacaktır. 83
84 Örnek 4. <html> <head> <title> Fontlar </title> </head> <body> <font size="3" color="blue">mavi yazı</font> <font size="5" color="blue">mavi büyük yazı</font> <font size="3" color="blue"> <b>mavi kalın yazı</b> </font> <font size="3" color="blue"> <b><i>mavi kalın ve italik yazı</i></b> </font> </body> </html> 5.4. Başlıklar Başlık tagları adındanda anlaşılacağı gibi başlık yazımında kullanılır. <h1>,<h2>,<h3>,<h4>,<h5> şeklindedir. <html> <head> <title> Başlıklar </title> </head> <body> <h1>başlık1</h1> <h2>başlık2</h2> <h3>başlık3</h3> <h4>başlık4</h4> <h5>başlık5</h5> </body> </html> 84
85 5.5. Paragraflar <p> : Yeni bir paragraf yapmak için kullanılır.</p> şeklinde kapatılmaz. Bu tagla birlikte sadece align parametresi kullanılabilir. align : Önceki bölümlerde anlatıldığı gibi left, center, right değerlerini alabilir ve paragrafın sağa, sola veya ortaya dayalı olmasını sağlar. Align parametresi kullanılmadığı durumlarda paragraf sola dayalı olur. <p> veya <p align= değer > şeklindedir. <html> <head> <title> Paragraflar </title> </head> <body> <p> İlk paragraf sola dayalı <p align="center"> İkinci paragraf ortalı <p align="right"> Üçüncü paragraf sağa dayalı </body> </html> <br> : Yeni bir satır eklemek için kullanılır. </br> şeklinde kapatılmaz. 85
86 5.6. Web sayfalarında resim kullanılması Bir web sayfasında genellikle jpeg, gif formatlı resim dosyaları kullanılmaktadır. Bunun nedeni bu formattaki dosyaların boyutlarının daha küçük olması ve sayfalar görüntülenirken hızlı açılabilmesidir. <img> : Sayfa içerisine bir resim yerleştirmek istenildiğinde kullanılır. Bu tag belli parametrelerle kullanılır. <img src= dosya.adi border= değer align= değer alt= değer weight= değer height= değer > src : Resim dosyasının konumunu belirtir. Eğer resim dosyaları html dosyaları ile aynı klasörde ise sadece resim dosyasının adını yazmak yeterlidir. Fakat başka bir klasör veya URL altında ise o zaman resmin yolunu belirtmek gerekir. HTML dosyaları resim dosyaları ile aynı klasörde ise, bu durumda src = resim.jpg şeklinde yazılmalıdır. Örnek 2. Resim dosyaları HTML dosyalarına göre image isimli bir alt klasörde ise, bu durumda src = image/resim.jpg şeklinde yazılmalıdır. Örnek 3. Resim dosyaları adlı bir URL de ise, bu durumda src= /resim.gif ) şeklinde yazılmalıdır. Örnek 4. <html> <head> <title> Resimlerle Çalışmak </title> </head> <body> <img src="image/logo.jpg"> </body> </html> 86
87 border : Resmin etrafına yerleştirilecek kenarlığın kalınlığını vermek için kullanılır. align : Resmin yatay konumunu belirler. Left, Center, Right değerlerini alabilir. alt : Resmin üzerine fare ile gelindiğinde gösterilecek metni vermek için kullanılır. weight : Resmin genişliği piksel cinsinden girilir. height : Resmin yüksekliği piksel cinsinden girilir. Örnek 5. <html> <head> <title> Resimlerle Çalışmak </title> </head> <body> <img src="image/logo.jpg" border="4" alt="ankara Üniversitesi" align="right"> </body> </html> 5.7. Bağlantılar (Linkler) Web sayfaları arasında gezinti yapılabilmesi için sayfaların içerisine linkler yerleştirilir. Başka bir sayfaya veya sayfa içerisindeki bir başka konuma linklerle ulaşılabilir. 87
88 <a> </a> : Link vermek için bu tag kullanılmaktadır. Bu tagda birtakım parametreler kullanılır. Bu parametrelerle hangi sayfaya link verildiği link verilen sayfanın nerede açılacağı bilgileri verilir.<a> tagı </a> ile kapatılır. <a href= değer target= değer > Sayfada Görünecek Açıklama </a> href : Hangi sayfaya link verileceğini belirler. Link verilecek dosya çalışma klasörünüzle aynı konumda ise dosyanın adını vermek yeterlidir. Fakat farklı bir konumda ise yolu belirtilmelidir. target : Bu parametre linke basıldığında sonucun nerede görüntüleneceğini belirler. Eğer kullanılmazsa linke basıldığında aynı sayfa üzerinde görüntüleme yapılır. Target parametresi en çok Frame lerle birlikte kullanılır. Fakat bu konu daha ileride işleneceğinden şimdilik target parametresinin _blank değerinden bahsedilecektir. _blank değeri linkin sonucunun yeni bir browser penceresinde açılmasını sağlar. Eğer istenirse sayfada kullanılan bir linkin nereye bağlanacağına dair bir açıklama yerleştirilebilir. Örneğin adresine link verilirse bu linke açıklama olarak Ankara Üniveristesi yazılabilir. <html> <head><title> Linkler </title></head> <body> <a href=" target="_blank">ankara Üniversitesi</a></body> </html> Sayfadaki linke tıklandığında Ankara Üniversitesi sayfası yeni bir pencerede görüntülenecektir. Ankara Üniversitesi açıklaması yerine <img> tagını kullanarak sayfanızdaki bir resmede link verilebilir. Örnek 2. <a href= ><img src= image/ankara.gif > </a> 88
89 Bu örnekte resmin üzerine tıklandığında Ankara Üniversitesi sayfası aynı pencerede açılacaktır Listeler Web sayfalarında Word de olduğu gibi metinler maddeler halinde listelenebilir. Bu listeleme iki şekilde yapılabilir Sıralanmamış liste (Unordered List) Bu tipteki listelerde liste elemanları başlarında bir daire görüntülenerek listelenir. <ul> <li> Liste elemanı 1 <li> Liste elemanı 2 <li> Liste elemanı 3 <li> Liste elemanı 4 </ul> <html> <head> <title> Sırasız Listeler </title> </head> <body> <ul> <li> Kastamonu <li> Adana <li> Yozgat <li> Kayseri <li> Ankara <ul> </body> </html> 89
90 Sıralanmış liste (Ordered List) Bu tipteki listelerde her liste elemanının başına sıra numarası gelir <ol> <li> Liste elemanı 1 <li> Liste elemanı 2 <li> Liste elemanı 3 <li> Liste elemanı 4 </ol> <html> <head> <title> Sıralı Listeler </title> </head> <body> <ol> <li> Kastamonu <li> Adana <li> Yozgat <li> Kayseri <li> Ankara </ol> </body> </html> 90
91 5.9. Formlar Formlar normal programlama dillerinde varolan metin kutusu (Edit), Onay Kutusu (Check Box), Açılır Kutu (Combo Box),... gibi nesnelerin HTML sayfalarında kullanılmalarını sağlar. Formların kullanılmasındaki amaç form üzerinden girilen bilgilerin bir veri tabanına, bir adresine veya bir ziyaretçi defterine (guest book) gönderilmesini sağlamaktır. Örneğin bir web sayfasından mail adresi aldığında doldurulan formdaki bilgiler ilgili web sayfasını bir veri tabanına göndermektedir veya bazı sayfalarda rastlanılan anket sorularına cevap verirken kullanılan nesneler formlara örnek verilebilir. <form> </form> : Form içerisindeki nesnelerin kullanılabilmesi için <form></form> tagı kullanılmalıdır. <form method= değer action= değer name= değer > </form> method : Formun hangi yöntemle karşı tarafa gönderileceğini belirler. İki değeri vardır. Bunlar get ve post dur. Eğer Get yöntemini kullanırsanız formu karşı tarafa gönderirken, gönderilen bilgiler, adres satırında açıkça görüntülenecektir. Post yöntemini kullandığınızda formu karşı tarafa gönderirken, gönderilen bilgiler, adres satırında görüntülenmez. Bu iki yöntem arasındaki farkı şöyle düşünebilirsiniz. Kullanıcı adı ve şifre girdiğiniz bir web sayfasını karşı tarafa gönderirken girilen bilgilerin adres satırında görünmesi durumunda (get yöntemi) şifre başkaları tarafından okunabilir. Fakat post yöntemini kullanılırsa girilen bilgiler karşı tarafa yine gönderilir. Fakat adres satırında sadece sayfanın URL adresi görünür. action : Formun hangi adrese gönderileceğini belirler. name : Formun adını belirler. 91
92 Form nesneleri <input> : Form nesnelerinin bir çoğu <form> tagının içersinde kullanılan <input> taglarıyla oluşturulur. <input type= değer name= değer > type : Type parametresi kullanılacak nesnenin tipini belirler. Bu tipler aşağıdaki gibidir. name : Nesnenin adını belirler Düz metin girişi (Plain Text Entry) : Düz metin kutusudur. <input type= text value= değer maxlength= değer size= değer > value : Metin kutusu içerisine varsayılan olarak değer atanmasını sağlar. maxlength : Metin kutusu içerisine yazılabilecek karakter sayısını belirler. size : Metin kutusunun görüntüdeki uzunluğunu belirler. <html> <head> <title> Plain Text Entry </title> </head> <body> <form name="bilgiler" method="get"> Adınız :<input type="text" name="ad"> <br> Soyadınız :<input type="text" name="soyad"> </form> </body> </html> 92
93 Şifre girişi (Password Entry) : Metin kutusu görünümündedir fakat bu alan içerisine bilgi girişi yapılırken yazılan karakterler asteriks * karakterine dönüşür. Adındanda anlaşılacağı gibi şifre alanlı formlarda kullanılır. <input type= password maxlength= değer size= değer > Parametreleri metin kutusundaki işlevleri aynen yerine getirir. <html> <head> <title> Password </title> </head> <body> <form name="bilgiler" method="get"> Şifre :<input type="password" name="sifre" maxlength="4"> </form> </body> </html> 93
94 Yazı alanı (Text Area) : Bir açıklama yada mail içeriği gibi uzun metinleri yazmak için kullanılır. Fakat diğerlerinde olduğu gibi <input> tagıyla yazılmaz, onun yerine, <textarea> tagı kullanılır. <textarea rows= değer cols= değer > Metin </textarea> rows: Görüntülenecek karakter yüksekliğini belirler. cols : Görüntülenecek karakter genişliğini belirler. <html> <head> <title> Text Area </title> </head> <body> <form name="bilgiler" method="get"> Açıklama : <textarea weight=50 height=10>açıklama yazınız </textarea> </form> </body> </html> Seçim kutusu (Select Box) : Görsel programlama dillerindeki combo box (açılır kutu) nesnesine karşılık gelir. Kullanıcıya önceden belirlenmiş birkaç değerden bir tanesini seçtirmek için kullanılır. <select> </select> : Seçim kutusu yaratmak için kullanılır. <select> tagı tek başına kullanılmaz. Bu tagın içerisinde <option> tagı kullanılmaktadır. <option> : <select> tagının içerisinde kullanılır ve görevi menü elemanlarını belirlemektir. </option> şeklinde kapatılmaz. <select> <option> Menü elemanı 1 <option selected> Menü elemanı 2 </select> 94
95 selected : Eğer <option> tagında selected parametresi kullanılmışsa,form ekrana görüntülendiğinde, bu menü elemanının seçili (varsayılan) olarak görüntülenmesi anlamına gelir. <html> <head> <title> Select Box </title> </head> <body> <form name="bilgiler"> <select name="liste"> <option> Adana <option selected> Adıyaman <option> Afyon <option> Ağrı </select> </form> </body> </html> Çoklu seçim kutusu (Multiple Select Box) : Seçim kutusuyla aynı işe yarar fakat tek farkı birden fazla seçenek işaretlenebilir. <select size= değer multiple> <option> Seçenek 1 <option selected> Seçenek 2 </select> size : Aynı anda kaç seçeneğin ekranda gösterileceğini belirler. multiple : Seçim kutusunda birden fazla seçeneğin işaretlenebilmesini sağlar. <html> <head> <title> Select Box </title> </head> <body> <form name="bilgiler"> <select name="liste" multiple> 95
96 <option> Adana <option selected> Adıyaman <option> Afyon <option> Ağrı </select> </form> </body> </html> Onay kutusu (Check Box) : Kullanıcıdan herhangi bir soru için onay istemek için kullanılır. Ekranda onaylanabilecek tek kutucuk görüntülenir. <input type= checkbox > veya <input type= checkbox checked> checked : Form ekrana geldiğinde onay kutusunun işaretli olarak gelmesini sağlar. <html> <head> <title> Check Box </title> </head> <body> <form name="bilgiler"> <input type="checkbox" name="onay" checked> HTML biliyorum </form> </body> </html> 96
97 Seçenek düğmesi (Radio Button) : Seçenek düğmesi seçenekler arasından sadece bir tanesinin seçilmesini sağlar. <input type= radio > veya <input type= radio checked> checked : Form ekrana geldiğinde o seçeneğin işaretli olarak gelmesini sağlar. <html> <head> <title> Radio </title> </head> <body> <form name="bilgiler"> <input type="radio" name="onay" checked> Evli <input type="radio" name="onay" > Bekar </form> </body> </html> 97
98 Komut düğmesi (Button) : Yapılan formları doldurulduktan sonra karşı tarafa gönderebilmek için veya da içi doldurulmuş bir formu temizlemek için komut düğmeleri kullanılır. <input type= submit value= değer > veya <input type= reset value= değer > submit : Form bilgilerinin karşı tarafa yollanmasını sağlar. reset : Form bilgilerinin karşı tarafa yollanmadan temizlenmesini sağlar. value : Komut düğmesinin ekranda görüntülenecek etiketini belirler. <html> <head> <title> Butonlar </title> </head> <body> <form name="bilgiler"> Form Gönderilsin mi? <br> <input type="submit" value="gönder"> <input type="reset" value="temizle" > </form> </body> </html> Tablolar (Tables) Web sayfaları içerisine yazılar yazarken veya resimler yerleştirirken tablolardan yararlanılır. Eğer tablolar kullanılmazsa istenilen yere istenilen nesneyi yerleştirmek çok zordur. Bu yüzden web sayfalarının birçoğu tablolardan yararlanılarak oluşturulmuştur. Tablolar Excel de olduğu gibi satır, sütun ve hücre kavramlarından oluşmaktadır. <table> </table> : Bir tablo oluşturulmak istendiğinde kullanılır. Bundan sonraki satır ve sütun tagları <table> tagının içerisinde yer alır. <table background= değer align= değer valign= değer border= değer bordercolor= değer > veya <table bgcolor= değer align= değer valign= değer border= değer bordercolor= değer > 98
99 background : Tablonun arka planına yerleştirilecek resmi belirler. align : Tablonun yatay konumunu belirler (Left, Center, Right). valign : Tablonun dikey konumunu belirler. (Top, Middle, Bottom) border : Tablonun kenar çizgi kalınlığını belirler. bordercolor : Kenarlık rengini belirler. cellspacing : İki hücre arasındaki boşluğu belirler. cellpadding : Tablo ile hücre arasındaki boşluğu belirler. width : Tablonun genişliğini belirler. height : Tablonun yüksekliğini belirler Satır ve sütun tagları <th> </th> : Bir tabloya başlık satırı yapmak için kullanılır. <tr> </tr> : Bir tablo için ilk önce satırlar yaratılmalıdır. <tr> tagı yeni bir satır anlamına gelmektedir. <td> </td> : Yeni bir sütun oluşturmak için kullanılır.<tr> tagı kapatılmadan kullanılan her <td> tagı yeni bir sütun anlamına gelmektedir. <table> <tr> <td align= değer background= değer bgcolor= değer width= değer height= değer > Değer </td> </tr>.... </table> align : Sütun içerisindeki tagların yatay konumunu belirler. background : Hücre içerisine yerleştirilecek resmi belirler. bgcolor : Eğer resim kullanılmazsa hücrenin arka plan rengini belirler. width : Hücrenin genişliğini belirler. height : Hücrenin yüksekliğini belirler. bordercolor : Kenarlık rengini belirler. colspan : İstenirse bir hücre tekrar sütunlara ayrılabilir. Hücrenin kaç sütun olacağını belirler. rowspan : İstenirse bir hücre tekrar sütunlara ayrılabilir. Hücrenin kaç satır olacağını belirler. 99
100 <html> <head> <title> Tablolar </title> </head> <body> <table border="2"> <th>adı</th> <th>soyadı</th> <tr> <td>ali</td> <td>akın</td> </tr> <tr> <td>mesut</td> <td>yeşil</td> </tr> <tr> <td>cenk</td> <td>demir</td> </tr> <tr> <td>fuat</td> <td>soyalp</td> </tr> <table> </body> </html> Çerçeveler (Frames) Frameler web sayfasını birden fazla parçaya ayırmak ve her bir parçanın içerisine ayrı sayfalar açmak için kullanılır. Bu işlem, sayfayı ziyaret eden kişilerin ziyaretini kolaylaştırmak için kullanılabilir. Şöyle ki; Sayfa üç kısma ayrıldığında parçalardan bir tanesini başlık, bir tanesini menü, bir tanesini de içerik için kullanılabilir. <frameset> </frameset> : <frameset> tagı <body> tagının yerine kullanılır ve body tagı Frame li bir sayfada kullanılmaz. 100
101 <frameset cols= değer rows= değer border= değer bordercolor= değer framespacing= değer > cols : Sayfada kaç dikey çerçeve olacağı ölçü verilerek belirlenir. Ölçü verme işlemi için iki yöntem vardır. 1.cols= 100,200,* : Burada sayfa üç sütuna ayrılmıştır. İlk sütun 100 piksel, ikinci sütun 200 piksel ve üçüncü sütun sayfanın geride kalan boyutu kadar anlamına gelir. 2.cols= %20,%80 : Burada sayfa iki sütuna ayrılmıştır ilk sütun sayfa boyutunun %20 si, ikinci sütun ise sayfa boyutunun %80 i kadardır. rows : Sayfada kaç yatay çerçeve olacağı ölçü verilerek belirlenir. Ölçü verme işlemleri cols parametresindeki ile aynıdır. Bu ayarlamalardan sonra sayfadaki Frame lerin içine html sayfaları yerleştirilir. <frame> : Bu tag ile ölçüsü verilen Frame i oluşturur. Cols ve Rows ile belirlenen her ölçü için bir <frame> tagı kullanılmalıdır. <frame src= değer name= değer scrolling= değer border= değer frameborder= değer bordercolor= değer noresize> src : frame içerisine yüklenecek sayfa adını belirler. name : frame e verilecek ismi belirler. Bağlantılar (link vermek) kısmında anlatılan target parametresine değer olarak burada kullandığımız ismi vererek bir link yaratırsak linkin sonucu o frame içerisinde açılır. scrolling : Frame in kenarında kaydırma çubuklarının olup olmayacağını belirler. Yes, No, Auto değerlerini alır. border : Kenarlık çizgisinin kalınlığını belirler. frameborder : Çerçevenin kenarlığının olup olmayacağını belirler. Yes, No, Auto değerlerini alır. bordercolor : Kenarlık rengini belirler. noresize : Çerçevelerin boyutlandırılamaz olduğunu belirler. <html> <head> <title> Çerçeveler </title> </head> <frameset cols="150,*"> <frame src="sol.html" name="_left"> <frameset rows="100,*"> <frame src="ust.html" name="_top"> <frame src="sag.html" name="_main"> </frameset> </frameset> </html> 101
102 5.12. HTML kaynakları Web sayfalarının temeli olan HTML dili hakkındaki bilgilere yine İnternetten ulaşılabilir. Birçok web sitesinde (Türkçe,İngilizce...) HTML ile ilgili ayrıntılı bilgilere arama motorları (search engines) aracılığıyla ulaşmak mümkündür. HTML dilini öğrendikten sonra web tasarımını kolaylaştırıcı araçlar kullanarak daha kaliteli ve kolay tasarımlar gerçekleştirebilmek için bazı programlar mevcuttur. Bunlardan sıkça kullanılanlar : Microsoft Front Page ( Netscape Composer ( Macromedia Dreamweaver ( CuteHTML ( 102
103 6. PHP ile MySQL Veritabanı Etikleşimi PHP için şimdiye kadar anlatılan konular, bundan sonra anlatılacak işlere yardımcı olacak komutları içermektedir. Bu kısımda anlatılacak konular HTML kısmında anlatılan formlarla da ilgili olduğundan öncelikle o kısmı tekrar gözden geçirilmelidir. İnternette üzerinde birçok sayfada form üzerinden bilgi girişi yapılmaktadır. Örneğin bir mail okuma sayfasından kullanıcı adı ve şifre girilen sayfa, bir arama motorunda bir konuyu ararken kullanılan sayfalar formlara örnek verilebilir. Bu tipte sayfalar genelde bir veritabanından bilgi sorgularlar ve sorgulamanın sonucunda yeni sonuçlar döndürürler. Bu kısımda bir veritabanına bir kayıtın nasıl ekleneceği, sorgulama yapılacağı, silineceği ve düzeltileceği anlatılacaktır. PHP bir script dili olduğu için sürükle bırak mantığıyla çalışan nesneleri yoktur. Bu yüzden HTML nesneleri kullanılır. HTML formlarında metin kutusu, onay kutusu, buton gibi nesneler vardır. Bu nesneler form nesneleri olarak kullanılacak ve gerekli bilgi giriş işlemleri yapılacaktır. HTML Formlar için iki yöntem vardır. GET : Client(İstemci) tarafından gönderilen bilgiler web browserın adres satırında görüntülenir. <html> <FORM ACTION=" formyolla.php" METHOD="GET"> Adınız : <input type= "text" name="ad" ></br> Soyadınız : <input type= "text" name="soyad"></br> <input type="submit" value="gönder"> </FORM> </html> Bu örnek getform.html adıyla kaydedilmeli ve web browser'ın adres satırında yazılarak çağrılmalıdır. İlgili alanları doldurduktan sonra Gönder butonuna basılır. Adres satırında, formda girilen bilgiler karmaşık bir şekilde görülmektedir..../formyolla.php?ad="muhittin"soyad="altınkaya"... Burada <Form> tagının action parametresiyle çağrılan php dosyasının adı, input type ile tanımlanan nesnelerin adları ve browserdan girilen değerler görülmektedir. Action parametresiyle gönderilen dosya adından sonra, "?" daha sonra ilk nesnenin "name" parametresiyle verilmiş adı, değeri ve sonraki nesne adlarını ve değerlerini birleştirmek için kullanılan "" işaretleri görülür. POST : Client(İstemci) tarafından gönderilen bilgiler browserın adres satırında görüntülenmeden yollanır. 103
104 Örnek 2. <html> <FORM ACTION=" formyolla.php" METHOD="POST"> Adınız : <input type= "text" name="ad" ></br> Soyadınız : <input type= "text" name="soyad"></br> <input type="submit" value="gönder"> </FORM> </html> Bu örnek postform.html adıyla kaydedilmeli ve web browser'ın adres satırında yazılarak çağrılmalıdır. İlgili alanları doldurduktan sonra Gönder butonuna basılır. Bu örnekte sadece çağrılan sayfanın adresi görünmektedir (Değişkenler ve değerleri görünmez). " şeklinde adres satırı görünür. Yukarıdaki örnekler incelediğinde FORM tagının ACTION parametresinde çağırılacak yeni PHP dosyasının adı yer almaktadır. Veritabanı üzerinde işlem yaparken PHP nin MySQL için gerekli olan fonksiyonlarını kullanılacaktır. Bu fonksiyonlardan en gereklileri örnekler içerisinde kullanılmıştır. PHP ile yazılacak kodlarda bir veritabanı işlemi yapılıyorsa, zorunlu olarak sırasıyla şunları yapılmalıdır. 1- MySQL bağlantısı gerçekleştirilmelidir, 2- MySQL sunucusundaki kullanılacak veritabanı seçilmelidir, 3- Bir SQL (Structure Query Language) ifadesi yazılmalıdır, 4- Bu SQL ifadesini çalıştırılmalıdır, 5- SQL işleminin sonucuna göre işlemler tamamlanmalıdır, 6- Bağlantı kapatılmalıdır. Buradaki altı adımın her birinde kullanılan komutlar aşağıda verilmiştir MySQL sunucusuna bağlantı mysql_connect(<sunucu_adi>,<kullanici_adi>,<kullanici_sifre>); Bağlantı parametreleri yazılarak bu ifade bir değişkene aktarılır. $baglan = mysql_connect ("localhost", "root", "ankara"); 104
105 Veritabanı seçimi mysql_select_db(<veritabanı_adi>,<baglantı_adı>); $sec = mysql_select_db("magaza",$baglan); if ($sec) { print "Veritabanı Seçildi"; } else { print "Veritabanı Seçilemedi"; } SQL ifadesi yazılması MySQL sunucu yönetim kısmında anlatılan SQL komutları ile SQL ifadeleri yazılır. degisken = "sql ifadesi"; $sql="select count(*) from magaza"; SQL ifadesinin çalıştırılması Oluşturulan SQL ifadesinin hangi baglanti için çalıştırılacağı belirtilerek bir değişkene atanır. degisken= mysql_query(<sql_ifadesi>,<baglanti_adi>); $sorgu= mysql_query($sql,$baglan); SQL sonucu üzerinde işlemler Burada dönen sonuçlar MySQL sunucu yönetiminde alınan SQL sonuçları gibi ekrana yazdırılmazlar. PHP komutları ile bunlar üzerinde işlemler yapılır. Update, Insert ve Delete işlemleri geriye sonuç döndürmezler. Sadece Select ifadelerinde geriye sonuçlar döner. Bu sonuçlar üzerinde işlem yapmak için aşağıdaki iki fonksiyondan yararlanılır. mysql_num_field(<calıstırılan_sorgu_adı>) Bu komut SQL ifadesinde seçilen bilgi alanlarının sayısını bulmak için kullanılır. mysql_fetch_row(<calıstırılan_sorgu_adı>) Bu komut SQL ifadesi çalıştırıldıktan sonra dönen sonuçlar içerisinden bir tanesini çağırmak için kullanılır. Bu komut ikinci kez çalıştırılır ise bir sonraki kayıt çağrılır. Sonuç, alan sayısı kadar elemanlı bir dizi oluşturularak atılır. 105
106 $baglan = mysql_connect ("localhost", "root", ""); $sec = mysql_select_db("magaza",$baglan); if ($sec) { print "Veritabanı Seçildi"; } else { print "Veritabanı Seçilemedi"; return; } $sql="select musteri_no,adi,soyadi,dogum_tarihi from musteri"; $sorgu= mysql_query($sql,$baglan); $alan_sayisi = mysql_num_fields($sorgu); //sonuc 4 $i=0; while ($satir = mysql_fetch_row($sorgu)) { $i++; for ($s=1;$s<$alan_sayisi;$s++) { $dizi[$i][$s] = $satir[$s]; } } for($i=1;$i<=count($dizi);$i++) { print $dizi[$i][1].$dizi[$i][2].$dizi[$i][3]."<br>"; } mysql_close($baglan); MySQL bağlantısını kapatma Bir PHP uygulamasında veritabanı ile yapılacak işlemler tamamlandıktan sonra veritabanı bağlantısı kapatılmalıdır. Çünkü her veritabanına yapılacak bağlantı sayısı sınırlıdır. Bağlantı sayısını aşmamak için işi biten kullanıcının bağlantısı aşağıdaki komut ile kapatılır. mysql_close(<baglanti_adi>) mysql_close($baglan); 106
107 6.2. Uygulamalar Uygulama 1. Aşağıdaki uygulama ile Firmadaki kullanıcı internet üzerinden müşteri bilgilerini girecektir. Uygulama iki kısımdan oluşacaktır. 1.Kullanıcı arayüzünün HTML olarak hazırlanması (dosya adı musterigir.html) <html> <head> <title>e-mağaza Müşteri Sipariş Takip Otomasyonu</title> <meta http-equiv="content-type" content="text/html; charset="> </head> <body bgcolor="#ffffff" text="#000000"> <form name="" method="get" action="musteri.php" enctype="multipart/formdata"> <table border="0"> <tr bgcolor="#ffcccc"> <td colspan="6"> <div align="center"><b>müşteri Bilgi Girişi</b></div> </td> </tr> <tr bgcolor="#ccffff"> <td colspan="6">nbsp;</td> </tr> <tr bgcolor="#ccffff"> <td width="169">müşteri No :</td> <td colspan="5" width="147"> <input type="text" name="xmusteri_no" maxlength="5" size="10"> </td> </tr> <tr bgcolor="#ccffff"> <td width="169">adı :</td> <td colspan="5" width="147"> <input type="text" name="xadi"> </td> </tr> <tr bgcolor="#ccffff"> <td width="169">soyadı :</td> <td colspan="5" width="147"> <input type="text" name="xsoyadi"> </td> </tr> <tr bgcolor="#ccffff"> <td width="169">dogum Tarihi :</td> <td colspan="5" width="147"> <input type="text" name="xdogum_tarihi" value="01/01/1900"> </td> </tr> <tr bgcolor="#ccffff"> <td width="169">cinsiyeti :</td> <td colspan="5" width="147"> <input type="radio" name="xcinsiyeti" value="e"> Erkek <input type="radio" name="xcinsiyeti" value="k"> Kadın </td> </tr> 107
108 <tr bgcolor="#ccffff"> <td width="169">adresi :</td> <td colspan="5" width="147"> <input type="text" name="xadresi" maxlength="50"> </td> </tr> <tr bgcolor="#ccffff"> <td width="169">kredi Kart No :</td> <td colspan="5" width="147"> <input type="text" name="xkartno" maxlength="16"> </td> </tr> <tr bgcolor="#ffcccc"> <td colspan="6"> <div align="center"> <input type="submit" name="xgiris" value="kaydet"> <input type="reset" name="xtemizle" value="temizle"> </div> </td> </tr> </table> </form> </body> </html> 2.Kullanıcı arayüzünden girilen bilgilerin veritabanına kaydedilmesi (dosya adı musteri.php) $baglan = mysql_connect ("localhost", "root", "ankara"); $sec = mysql_select_db("magaza",$baglan); $xdogum_tarihi=tarihe_cevir($xdogum_tarihi); 108
109 $sql="insert into musteri (musteri_no,adi,soyadi,dogum_tarihi,cinsiyeti,adres,kart_no) values ($xmusteri_no,'$xadi','$xsoyadi','$xdogum_tarihi','$xcinsiyeti','$xadres',' $xkart_no')"; $sorgu= mysql_query($sql,$baglan); if ($sorgu) print "Kayıt başarıyla girilmiştir"; else print "Lütfen girdiğiniz bilgileri kontrol ediniz"; mysql_close($baglan); function tarihe_cevir($xtarih) { $xsonuc = substr($xtarih,6,4)."-".substr($xtarih,3,2)."- ".substr($xtarih,0,2); return $xsonuc; } Uygulama 2. Aşağıdaki uygulama ile Firmadaki kullanıcı internet üzerinden Müşteri bilgilerini arama, düzeltme veya silme işlemlerini yapabilecektir. Uygulama üç kısımdan oluşacaktır. 1.Kullanıcı arayüzünün HTML olarak hazırlanması (dosya adı musteriara.html) <html> <head> <title>e-mağaza Müşteri Sipariş Takip Otomasyonu</title> <meta http-equiv="content-type" content="text/html; charset="> </head> <body bgcolor="#ffffff" text="#000000"> <form name="" method="get" action="musteribul.php" enctype="multipart/formdata"> <table border="0"> <tr bgcolor="#ffcccc"> <td colspan="2"> <div align="center"><b>müşteri Bilgi Girişi</b></div> </td> </tr> <tr bgcolor="#ccffff"> <td colspan="2">nbsp;</td> </tr> <tr bgcolor="#ccffff"> <td width="169">müşteri No :</td> <td width="147"> <input type="text" name="xmusteri_no" maxlength="5" size="10"> </td> </tr> <tr bgcolor="#ffcccc"> <td colspan="2"> <div align="center"> 109
110 <input type="submit" name="xara" value="bul"> <input type="reset" name="xtemizle" value="temizle"> </div> </td> </tr> </table> </form> </body> </html> 2. Bul düğmesine basıldıktan sonra müşteri bilgilerinin görüntülenmesi için gerekli PHP kodunun yazılması (dosya adı musteribul.php) $baglan = mysql_connect ("localhost", "root", "ankara"); $sec = mysql_select_db("magaza",$baglan); $sql="select musteri_no,adi,soyadi,dogum_tarihi,cinsiyeti,adres,kart_no from musteri where musteri_no = '$xmusteri_no'"; $sorgu= mysql_query($sql,$baglan); $alan_sayisi = mysql_num_fields($sorgu); $i=0; $satir = mysql_fetch_row($sorgu); $satir[3]=tarihe_cevir($satir[3]); <html> <head> <title>e-mağaza Müşteri Sipariş Takip Otomasyonu</title> </head> <body> <form method="post" action="mdegistir_sil.php"> 110
111 <table border="0"> <tr bgcolor="#99ccff"> <td colspan="2"> <div align="center"><b>müşteri Arama Sonuçları</b></div> </td> </tr> <tr> <td>müşteri No :</td> <td> <input type="text" name="xmusteri_no" value==$satir[0];> </td> </tr> <tr> <td>adı:</td> <td> <input type="text" name="xadi" value==$satir[1];> </td> </tr> <tr> <td>soyadı :</td> <td> <input type="text" name="xsoyadi" value= print "'".($satir[2])."'"; > </td> </tr> <tr> <td>doğum Tarihi:</td> <td> <input type="text" name="xdogum_tarihi" value==$satir[3];> </td> </tr> <tr> <td>cinsiyeti:</td> <td> if ($satir[4] == "E") { <input type="radio" name="xcinsiyeti" value="e" checked> Erkek <input type="radio" name="xcinsiyeti" value="k"> Kadın } else { <input type="radio" name="xcinsiyeti" value="e" > Erkek <input type="radio" name="xcinsiyeti" value="k" checked> Kadın } </td> </tr> <tr> <td>adresi :</td> <td> <input type="text" name="xadres" value==$satir[5];> </td> </tr> <tr> <td>kredi Kart No:</td> <td> <input type="text" name="xkart_no" value==$satir[6];> </td> </tr> <tr bgcolor="#99ccff"> 111
112 <td colspan="2"> <div align="center"> <input type="submit" name="xislem" value="duzelt"> <input type="submit" name="xislem" value="sil"> </div> </td> </tr> </table> </form> </body> </html> function tarihe_cevir($xtarih) { $xsonuc = substr($xtarih,8)."/".substr($xtarih,5,2)."/".substr($xtarih,0,4); return $xsonuc; } mysql_close($baglan); 3. Düzelt veya sil düğmesine basıldıktan sonra kaydın düzeltilmesi veya silinmesi için gerekli PHP kodlarının yazılması (dosya adı mdegistir_sil.php) $baglan = mysql_connect ("localhost", "root", "ankara"); $sec = mysql_select_db("magaza",$baglan); 112
113 if ($xislem=="duzelt") { $xdogum_tarihi = tarihe_cevir($xdogum_tarihi); $sql="update musteri set adi = '$xadi', soyadi= '$xsoyadi', dogum_tarihi = '$xdogum_tarihi', cinsiyeti = '$xcinsiyeti', adres = '$xadres', kart_no = '$xkart_no' where musteri_no = '$xmusteri_no'"; } else if ($xislem=="sil") { $sql="delete from musteri where musteri_no='$xmusteri_no'"; } $sorgu= mysql_query($sql,$baglan); if ($sorgu) print "$xislem"." İşlemi başarıyla yapılmıştır"; else print "$xislem"." İşlemi yapılmamıştır"; function tarihe_cevir($xtarih) { $xsonuc = substr($xtarih,6,4)."-".substr($xtarih,3,2)."- ".substr($xtarih,0,2); return $xsonuc; } mysql_close($baglan); Uygulama 3. Aşağıdaki uygulama ile Firmadaki kullanıcı internet üzerinden magazada yer alan ürün bilgilerini girecektir. Uygulama iki kısımdan oluşacaktır. 1.Kullanıcı arayüzünün HTML olarak hazırlanması (dosya adı urungir.html) <html> <head> <title>ürün Bilgileri Girişi</title> </head> <body> <form method="post" action="urunkaydet.php"> <table border="0"> <tr bgcolor="#99ccff"> <td colspan="2"> <div align="center"><b>ürün Bilgileri</b></div> </td> </tr> <tr> <td>ürün Kodu :</td> <td> <input type="text" name="xurun_kodu"> 113
114 </td> </tr> <tr> <td>ürün Markası :</td> <td> <input type="text" name="xurun_markasi"> </td> </tr> <tr> <td>ürün Türü :</td> <td> <input type="text" name="xurun_turu"> </td> </tr> <tr> <td>ürün Fiyatı :</td> <td> <input type="text" name="xurun_fiyati"> </td> </tr> <tr bgcolor="#99ccff"> <td colspan="2"> <div align="center"> <input type="submit" name="xkaydet" value="kaydet"> <input type="reset" name="xtemizle" value="temizle"> </div> </td> </tr> </table> </form> </body> </html> Ürün bilgileri doldurulup Kaydet düğmesine basıldıktan sonra bu bilgilerin veritabanına kaydedilmesi için PHP uygulaması aşağıdaki gibi yazılmalıdır. 114
115 2.Kullanıcı arayüzünden girilen bilgilerin veritabanına kaydedilmesi (dosya adı urunkaydet.php) $baglan = mysql_connect ("localhost", "root", "ankara"); $sec = mysql_select_db("magaza",$baglan); $sql="insert into urun (urun_kodu,urun_markasi,urun_turu,urun_fiyati) values ('$xurun_kodu','$xurun_markasi','$xurun_turu',$xurun_fiyati)"; $sorgu= mysql_query($sql,$baglan); if ($sorgu) print "Kayıt başarıyla girilmiştir"; else print "Lütfen girdiğiniz bilgileri kontrol ediniz"; mysql_close($baglan); Uygulama 4. Aşağıdaki uygulama ile Firmadaki kullanıcı internet üzerinden magazada yer alan ürün bilgilerini arama, düzeltme veya silme işlemlerini yapabilecektir. Uygulama üç kısımdan oluşacaktır. 1.Kullanıcı arayüzünün HTML olarak hazırlanması (dosya adı urunara.html) <html> <head> <title>ürün Bilgileri Girişi</title> <meta http-equiv="content-type" content="text/html; charset="> </head> <body bgcolor="#ffffff" text="#000000"> <form name="form1" method="post" action="urunbul.php"> <table border="0"> <tr bgcolor="#99ccff"> <td colspan="2"> <div align="center"><b>ürün Arama</b></div> </td> </tr> <tr> <td>ürün Kodu :</td> <td> <input type="text" name="xurun_kodu"> </td> </tr> <tr bgcolor="#99ccff"> <td colspan="2"> <div align="center"> <input type="submit" name="xbul" value="bul"> </div> </td> </tr> 115
116 </table> </form> </body> </html> 2.Kullanıcı arayüzünden girilen bilgilerin veritabanında aranması ve görüntülenmesi (dosya adı urunbul.php) $baglan = mysql_connect ("localhost", "root", "ankara"); $sec = mysql_select_db("magaza",$baglan); $sql="select * from urun where urun_kodu = '$xurun_kodu'"; $sorgu= mysql_query($sql,$baglan); $alan_sayisi = mysql_num_fields($sorgu); $i=0; $satir = mysql_fetch_row($sorgu); <html> <head> <title>ürün Arama Sonuçları</title> </head> <body> <form method="post" action="degistir_sil.php"> <table border="0"> <tr bgcolor="#99ccff"> <td colspan="2"> <div align="center"><b>ürün Arama Sonuçları</b></div> </td> </tr> <tr> <td>ürün Kodu :</td> 116
117 <td> <input type="text" name="xurun_kodu" value==$satir[0];> </td> </tr> <tr> <td>ürün Markası :</td> <td> <input type="text" name="xurun_markasi" value==$satir[1];> </td> </tr> <tr> <td>ürün Türü :</td> <td> <input type="text" name="xurun_turu" value= print "'".($satir[2])."'"; > </td> </tr> <tr> <td>ürün Fiyatı :</td> <td> <input type="text" name="xurun_fiyati" value==$satir[3];> </td> </tr> <tr bgcolor="#99ccff"> <td colspan="2"> <div align="center"> <input type="submit" name="xislem" value="duzelt"> <input type="submit" name="xislem" value="sil"> </div> </td> </tr> </table> </form> </body> </html> mysql_close($baglan); 117
118 3. Bu penceredeki seçime göre veritabanından kaydın silinmesi veya güncellenmesi (degistir_sil.php) $baglan = mysql_connect ("localhost", "root", "ankara"); $sec = mysql_select_db("magaza",$baglan); if ($xislem=="duzelt") { $sql="update urun set urun_kodu = '$xurun_kodu', urun_markasi = '$xurun_markasi', urun_turu = '$xurun_turu', urun_fiyati = $xurun_fiyati where urun_kodu='$xurun_kodu'"; } else if ($xislem=="sil") { $sql="delete from urun where urun_kodu='$xurun_kodu'"; } $sorgu= mysql_query($sql,$baglan); if ($sorgu) print "$xislem"." İşlemi başarıyla yapılmıştır"; else print "$xislem"." İşlemi yapılmamıştır"; mysql_close($baglan); Uygulama 5. Bu kısımda müşterilerin internetten sipariş vermeleri ve bu siparişleri takip edebilmeleri sağlanacaktır. 1. Müşterilerin seçim yapabilmesi için menünün hazırlanması (dosya adı index.html) <html> <head> <title>e-mağaza Müşteri Sipariş Takip Otomasyonu</title> <meta http-equiv="content-type" content="text/html; charset="> </head> <body bgcolor="#ffffff" text="#000000"> <table border="0"> <tr> <td bgcolor="#ffccff"> <div align="center"><b>e-mağaza Müşteri Sipariş Takip Otomasyonu</b></div> </td> </tr> <tr> <td bgcolor="#ffffcc"> <div align="center"><a href="siparis.php?xsayfa=siparisver">yeni Sipariş 118
119 Ver</a></div> </td> </tr> <tr> <td bgcolor="#ffffcc"> <div align="center"><a href="urun.php">sipariş Görüntüle</a></div> </td> </tr> <tr> <td bgcolor="#ffffcc"> <div align="center"><a href="siparis.php?xsayfa=urungoster">ürünleri Görüntüle</a></div> </td> </tr> </table> </body> </html> 2. Yeni siparişlerin girileceği formun hazırlanması (siparis.php) switch ($xsayfa) { case ("siparisver"): { include("siparisver.html"); break; } } include edilen siparisver.html dosyası aşağıdaki gibi olmalıdır. <html> <head> <title>e-mağaza Müşteri Sipariş Takip Otomasyonu</title> </head> <body bgcolor="#ffffff" text="#000000"> <form name="" method="post" action="siparis.php"> 119
120 <table border="0"> <tr> <td bgcolor="#ffccff" colspan="3"> <div align="center"><b>e-mağaza Müşteri Sipariş Takip Otomasyonu</b></div> </td> </tr> <tr> <td bgcolor="#ffffcc" width="169"> <div align="left">müşteri No :</div> </td> <td bgcolor="#ffffcc" width="215" colspan="2"> <input type="text" name="xmusteri_no" maxlength="5" size="10"> </td> </tr> <tr> <td bgcolor="#ffffcc" width="169">ürün :</td> <td bgcolor="#ffffcc" width="106"> <input type="text" name="xurun_kodu" size="10" maxlength="5"> </td> <td bgcolor="#ffffcc" width="107"><a href="urun.php" target="_blank">ürün Listesi </a></td> </tr> <tr> <td bgcolor="#ffffcc" width="169">sipariş Tarihi :</td> <td bgcolor="#ffffcc" width="215" colspan="2">$bugun = date("d.m.y H:i:s"); print $bugun;</td> </tr> <tr> <td bgcolor="#ffffcc" width="169">miktar :</td> <td bgcolor="#ffffcc" width="215" colspan="2"> <input type="text" name="xmiktar" maxlength="5" size="10" value="0"> </td> </tr> <tr> <td bgcolor="#ffffcc" colspan="3"> <input type="submit" name="xonay" value="sipariş Ver"> <input type="reset" name="xiptal" value="temizle"> <input type="hidden" name="xsayfa" value="siparisonay"> </td> </tr> </table> </form> </body> </html> 120
121 Yukarıdaki pencerede bilgi girişi yapılırken ürün kodları için Ürün Listesi linkine basılacaktır. 2.1.Ürün Listesinin görüntüleneceği sayfanın hazırlanması (dosya adı urun.php) $baglan = mysql_connect ("localhost", "root", "ankara"); $sec = mysql_select_db("magaza",$baglan); $sql="select * from urun order by urun_markasi,urun_turu"; $sorgu= mysql_query($sql,$baglan); $alan_sayisi = mysql_num_fields($sorgu); $i=0; $satir = mysql_fetch_row($sorgu); <html> <head> <title>e-mağaza Müşteri Sipariş Takip Otomasyonu</title> </head> <body bgcolor="#ffffff" text="#000000"> <table border="0"> <tr> <td bgcolor="#ffccff" colspan="4"> <div align="center"><b>e-mağaza Müşteri Sipariş Takip Otomasyonu</b></div> </td> </tr> <tr> <td bgcolor="#ffffcc"><b>ürün Kodu</b></td> 121
122 <td bgcolor="#ffffcc"><b>marka</b></td> <td bgcolor="#ffffcc"><b>türü</b></td> <td bgcolor="#ffffcc"><b>fiyatı</b></td> </tr> while ($satir = mysql_fetch_row($sorgu)) { print "<tr><td bgcolor=#ffffcc>".$satir[0]."</td>"; print "<td bgcolor=#ffffcc>".$satir[1]."</td>"; print "<td bgcolor=#ffffcc>".$satir[2]."</td>"; print "<td bgcolor=#ffffcc>".$satir[3]."</td></tr>"; } </table> </body> </html> mysql_close($baglan); 3. Siparişin veritabanına kaydedilmesi için gerekli php kodlarının eklenmesi (siparis.php) $baglan = mysql_connect ("localhost", "root", "ankara"); $sec = mysql_select_db("magaza",$baglan); switch ($xsayfa) { case ("siparisver"): { include("siparisver.html"); break; } 122
123 case ("siparisonay"): { $sql="update urun set urun_kodu = '$xurun_kodu'. urun_markasi = '$xurun_markasi', urun_turu = '$xurun_turu', urun_fiyati = $xurun_fiyati where urun_kodu='$xurun_kodu'"; $sorgu= mysql_query($sql,$baglan); if ($sorgu) print "Sipariş kaydı başarıyla girilmiştir"; else print "Sipariş kaydedilemedi!"; break; } } mysql_close($baglan); 4.Siparişleri görüntülenecek müşterinin numarasının girileceği formun hazırlanması ve siparis.php dosyasına eklenecek PHP kodu aşağıdaki gibi olmalıdır. 4.1 Eklenecek PHP kodu case ("siparisgoster"): { include("musterinogir.html"); break; } 4.2 Müşterinin numarasının girileceği HTML sayfası <html> <head> <title>e-mağaza Müşteri Sipariş Takip Otomasyonu</title> </head> <body bgcolor="#ffffff" text="#000000"> <form name="" method="post" action="siparis.php"> <table border="0"> <tr> <td bgcolor="#ffccff" colspan="3"> <div align="center"><b>e-mağaza Müşteri Sipariş Takip Otomasyonu</b></div> </td> </tr> <tr> <td bgcolor="#ffffcc" width="169"> <div align="left">müşteri No :</div> </td> <td bgcolor="#ffffcc" width="215" colspan="2"> <input type="text" name="xmusteri_no" maxlength="5" size="10"> </td> </tr> <tr> <td bgcolor="#ffffcc" colspan="3"> <div align="center"> <input type="submit" name="xonay" value="siparişleri Göster"> <input type="reset" name="xiptal" value="temizle"> <input type="hidden" name="xsayfa" value="siparisgosteronay"> 123
124 </div> </td> </tr> </table> </form> </body> </html> 4.3 Girilen müşteriye ait siparişlerin görüntülenmesi için siparis.php dosyasına eklenen kısım aşağıdaki gibi olmalıdır. case ("siparisgosteronay"): { $sql_musteri="select concat(adi,' ',soyadi) from musteri where musteri_no = '$xmusteri_no'"; $sql="select s.siparis_tarihi,u.urun_markasi,u.urun_turu,s.fiyat,s.miktar,s.tutar from siparis s,urun u where s.urun_kodu = u.urun_kodu and s.musteri_no = '$xmusteri_no'"; $sorgu_musteri=mysql_query($sql_musteri,$baglan); $sonuc_musteri=mysql_fetch_row($sorgu_musteri); $musteri_adi=$sonuc_musteri[0]; $sorgu= mysql_query($sql,$baglan); <html> <head> <title>e-mağaza Müşteri Sipariş Takip Otomasyonu</title> <meta http-equiv="content-type" content="text/html; charset="> </head> <body bgcolor="#ffffff" text="#000000"> <form name="" method="post" action="siparis.php"> <table border="0"> <tr> <td bgcolor="#ffccff" colspan="6"> <div align="center"><b>e-mağaza Müşteri Sipariş Takip Otomasyonu</b></div> </td> 124
125 </tr> <tr> <td bgcolor="#ffffcc" colspan="6">=$musteri_adi;</td> </tr> <tr> <td bgcolor="#ffffcc" width="169">sipariş Tarihi</td> <td bgcolor="#ffffcc" width="52">marka</td> <td bgcolor="#ffffcc" width="52">türü</td> <td bgcolor="#ffffcc" width="106">fiyat</td> <td bgcolor="#ffffcc" width="106">miktar</td> <td bgcolor="#ffffcc" width="107">tutar</td> </tr> while ($satir = mysql_fetch_row($sorgu)) { print "<tr><td bgcolor=#ffffcc>".$satir[0]."</td>"; print "<td bgcolor=#ffffcc>".$satir[1]."</td>"; print "<td bgcolor=#ffffcc>".$satir[2]."</td>"; print "<td bgcolor=#ffffcc>".$satir[3]."</td>"; print "<td bgcolor=#ffffcc>".$satir[4]."</td>"; print "<td bgcolor=#ffffcc>".$satir[5]."</td></tr>"; } </table> </form> </body> </html> if ($sorgu) print "Sipariş kayıtları başarıyla listelenmiştir"; else print "Sipariş kaydı bulunamadı!"; break; } } 125
126 5. Ürünlerin listesini görüntülemek için ilave bir şey yapmaya gerek olmayacak, çünkü ürünlerin listesi için 2.1 kısmındaki urun.php dosyası kullanılmaktadır. Burada internet üzerinden bir veritabanına yapılabilecek işlemlerle ilgili küçük bir uygulama yapılmaya çalışılmıştır. Buradaki örneklerden yola çıkarak Müşterilerin siparişlerini düzeltme, silme ve şifre kontrolü gibi ilaveler yapılabilir. Kaynaklar 1- Mustafa Akgül, Bilkent Üniv., Sunucu Araçları ve Yönetimi, İnet-tr Doruk Fişek, 3- Ulakbim, 4- Gelecek Linux, 5- PHP Kullanım Klavuzu, 6- Y. Demircan, M. Altınkaya, MySQL ve PHP Programlamaya Giriş, A.Ü.F.F. yayınları 126
SQL e GİRİŞ. Çağlar Ülküderner [email protected]
SQL e GİRİŞ Çağlar Ülküderner [email protected] Database yaratmanın zorlukları? Ah o data structure dersi.. Eskiden bir kaç text yada binary dosya üzerinde herşeyi yapmaya çalışırdık. Fonksiyonlar
Tablolar Arası İlşikiler ve Alan Özellikleri Siparis.musteri_no musteri.musteri_no Siparis.urun_kodu musteri.urun_kodu
SQL'DE VERİ İŞLEME KOMUTLARI SQL'de verileri işlemek için kullanılan komutlara DML (Data Manipulation Language Veri İşleme Dili) denilmektedir. Bu komutlar ile oluşturulan ifadeler tablolara kayıt eklemek,
Mysql Veritabanı Komutları
Mysql Veritabanı Komutları Mysql Veri Tabanı Komutları Hazırlayan : M. Başar ACAROĞLU Kaynaklar: http://www.hrzafer.com/sql-dersleri http://www.w3schools.com/sql/default.asp Veri Tabanı Nedir? Mysql Veritabanı
Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011
Veritabanına Giriş Oğuzhan Ceylan 19 Eylül 2011 Outline Veritabanı MYSQL Mysql Sorgu Komutları Bir veritabanı yaratmak ve kullanmak Veritabanı Veritabanı Verittabanı hangi alanlarda kullanılıyor. Web sitesi
Tablolar Arası İlşikiler ve Alan Özellikleri. Şekil 1. Magaza veritabanının tabloları ve tablolar arasındaki ilişkiler
SQL'de Veri İşleme Komutları SQL'de verileri işlemek için kullanılan komutlara DML (Data Manipulation Language Veri İşleme Dili) denilmektedir. Bu komutlar ile oluşturulan ifadeler tablolara kayıt eklemek,
VERİTABANI Veritabanı Yönetimi
VERİTABANI Veritabanı Yönetimi YAPILANDIRILMIŞ SORGULAMA DİLİ (SQL) Veritabanı yönetimi, veritabanının yapısal özelliklerini belirtmek ve değiştirmek, veritabanına kullanıcı erişimlerini ve yetkilerini
İNTERNET PROGRAMCILIĞI 2 11. HAFTA. MYSQL ile VERİTABANI İŞLEMLERİ - 1. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Veritabanı Oluşturma, Silme
İNTERNET PROGRAMCILIĞI 2 11. HAFTA İçindekiler Veritabanı Oluşturma, Silme MYSQL ile VERİTABANI İŞLEMLERİ - 1 Tablo Oluşturma, Silme Tabloya Bilgi Girme Veritabanı Sorgulamaları Hedefler Mysql komutları
5 SQL- Yapısal Sorgulama Dili. Veritabanı 1
5 SQL- Yapısal Sorgulama Dili Veritabanı 1 SQL- Yapısal Sorgulama Dili SQL ifadeleri yapısal olarak üç gruba ayrılır. Veri Tanımlama Dili (DDL - Data Definition Language) Veri İşleme Dili (DML - Data Manipulation
Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.
18 SQL SORGU DİLİ SQL (Structured Query Language) yapısal sorgu dili, veritabanı yönetim sistemlerinin standart programlama dili olarak bilinmektedir. SQL dilinin Access içinde sorgu pencerelerinde veya
VERİ TABANI YÖNETİM SİSTEMLERİ I
BÖLÜM 8 8. TEMEL SQL KOMUTLARI-II 8.1. SELECT (Seç) Komutu Veri tabanındaki tablo veya tablolardan istenilen özellikteki verileri seçip listeleme için kullanılan komuttur. Genel kullanımı aşağıdaki gibidir.
ÖĞRENME-ÖĞRETME YÖNTEM VE TEKNİKLERİ. gösterip yaptırma, uygulamalı çalışma. Anlatım, soru-cevap, gösterip yaptırma, uygulamalı çalışma.
KASIM EKİM EYLÜL AY 02.11.2009 06.11.2009 26.10.2009 0.10.2009 19.10.2009 2.10.2009 12.10.2009 16.10.2009 05.10.2009 09.10.2009 28.09.2009 02.10.2009 24.09.2009 25.09.2009 09.11.2009 1.11.2009 MODÜL: İNTERNET
Bölüm 4: DDL Veri Tanımlama Dili
Bölüm 4: DDL Veri Tanımlama Dili -43- Dr. Serkan DİŞLİTAŞ DDL (Data Definition Language Veri Tanımlama Dili : Bu kategorideki SQL komutları ile veritabanları, tablo, görünüm ve indekslerin yaratılması,
1.PROGRAMLAMAYA GİRİŞ
1.PROGRAMLAMAYA GİRİŞ Bilindiği gibi internet üzerindeki statik web sayfaları ziyaretçinin interaktif olarak web sayfasını kullanmasına olanak vermemektedir. Bu yüzden etkileşimli web sayfaları oluşturmak
SQL'e Giriş. SELECT Deyimi. SQL Komutları. Yardımcı Deyimler
SQL'e Giriş SQL komutları kullanılarak aşağıdaki işlemler yapılabilir: Veritabanı nesnelerinin oluşturulması ve bu nesnelerle ilgili işlemlerin yapılması Bilgilerin istenilen koşullara göre görüntülenmesi
İnternet Programcılığı
1 PHP le Ver tabanı İşlemler Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz. 1.1 Veritabanı Nedir? Veritabanı
SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'
Bu Derste Öğrenecekleriniz: 1- Veri Tabanı Adı Değiştirme 2- Nesnelerin Adını Değiştirme a. Tablo Adı Değiştirme b. Alan Adı Değiştirme c. Constraint (Kısıtlama) Adı Değiştirme 3- Tablo Düzenleme Komutları
8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon
ORACLE GİRİŞ Oracle ile SQL Server ın karşılaştıralım. 1 Oracleda veritabanı yerine kullanıcı oluşturulur. Kullanıcılar veritabanı gibi davranır. 2 Tablo oluşturma, değiştirme ve silme kodları aynı. 3
Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1
Web Formlar ve Sayfalar Arasında Bilgi Gönderme BATML İnternet Programcılığı 1 Bazı web sitelerinde sayfalar arasında bilgi veya değişken göndermek gerekebilir. Gönderilen bu bilgi kullanıcı adı ve şifre
Bölüm 10: PHP ile Veritabanı Uygulamaları
Bölüm 10: PHP ile Veritabanı Uygulamaları -231- Öğr.Gör. Serkan DİŞLİTAŞ 10.1. PHP PHP, platformdan bağımsız sunucu taraflı çalışan betik bir web programlama dilidir. PHP programlama dili ile MySQL, MSSQL,
Kets DocPlace LOGO Entegrasyonu
Kets DocPlace LOGO Entegrasyonu Kets DocPlace Kurulumu Öncesinde Yapılması Gereken İşlemler Windows 7, Windows 8, Windows Server 2008 R2, Windows Server 2012 veya daha yeni işletim sistemlerinde Programlar
SQL Komutları (2) Uzm. Murat YAZICI
SQL Komutları (2) Uzm. Murat YAZICI Sıralama Sıralama işlemi için SELECT ifadesinde ORDER BY kullanılır. Bu ifadede ASC kelimesi kullanılırsa sıralama küçükten büyüğe doğru (A-Z), DESC kullanılırsa büyükten
Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı
Data Programming SQL Language Elbistan Meslek Yüksek Okulu 2015 2016 Bahar Yarıyılı Öğr.Gör. Murat KEÇECĠOĞLU 15 Mar 2016 1 SQL deyimleri veritabanları üzerinde çeşitli işlemleri yerine getirirler. Veritabanından
ACCESS PLATFORMUNDA SQL
ACCESS PLATFORMUNDA SQL (STRUCTURED QUERY LANGUAGE) KODLAMA ÖRNEKLERİ DISTINCT : Bir alanda birbirinin aynı kayıtlar bulunabilir. Öğrenciler tablosundaki aynı isimde öğrencilerin bulunması durumunda aynı
Oracle da kullanılan veri tipleri:
ORACLE A GİRİŞ Oracle ile SQL Server ı karşılaştıralım, 1 Oracle da veritabanı yerine kullanıcı oluşturulur. Kullanıcılar veritabanı gibi davranır. 2 Tablo oluşturma, yapısını değiştirme, silme kodları
Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz.
1 PHP ile Veritabanı İşlemleri Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz. 1.1 Veritabanı Nedir? Veritabanı
DESTEK DOKÜMANI. Ürün : Tiger Enterprise/ Tiger Plus/ Go Plus/Go Bölüm : Kurulum İşlemleri
LOGO PROGRAM KURULUMU VE AYARLARI Logo programlarının yüklemesi için kullanılacak,setup dosyaları ftp://download.logo.com.tr/ adresinden indirilerek yapılır. Örneğin Kobi ürünleri için; ftp://download.logo.com.tr/windows/kobi/guncel/go_plus/klasöründen
Veritabanı. SQL (Structured Query Language)
Veritabanı SQL (Structured Query Language) SQL (Structured Query Language) SQL, ilişkisel veritabanlarındaki bilgileri sorgulamak için kullanılan dildir. SQL, bütün kullanıcıların ve uygulamaların veritabanına
Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir?
1) I. Tablo Oluşturma II. Veri Güncelleme III. Veri Silme IV. Veri Ekleme V. Tablo Silme Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir? a) I, IV ve V b) II, III ve IV
DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.
DAO İLE SQL KOMUTLARI Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım. SQL-1 SELECT En basit SQL cümleciği oluşturmak için SELECT sözcüğü
Veritabanına Uygulanması
Add, Alter Drop, Alter Change, Alter Sql komutları ve açıklamaları CREATE CREATE TABLE Üzerinde çalışma yapılan veritabanı içerisinde yeni bir tablonun oluşturulmasını sağlar. CREATE TABLE tablo_adı (alan_adı1
İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri
İNTERNET PROGRAMLAMA 2 A S P. N E T Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri VERİTABANI BAĞLANTISI Site içindeki bilgilerin saklanması / düzenlenmesi ve kullanıcı etkileşiminin sağlanabilmesi
İNTERNET PROGRAMCILIĞI - II
0 İÇİNDEKİLER Bölüm 1 PHP İle Web Programlamaya Giriş 1 Bölüm 2 PHP Kodlama Standartları 5 Bölüm 3 PHP Değişken Kullanımı 17 Bölüm 4 IF Yapısı 32 Bölüm 5 Döngüler ve Diziler 64 1 BÖLÜM 1 PHP İLE WEB PROGRAMLAMAYA
SQL e Giriş. Uzm. Murat YAZICI
SQL e Giriş Uzm. Murat YAZICI SQL (Structured Query Language) - SQL Türkçe de Yapısal Sorgulama Dili anlamına gelmektedir ve ilişkisel veritabanlarında çok geniş bir kullanım alanına sahiptir. - SQL ile
VERİTABANI ve YÖNETİMİ
VERİTABANI ve YÖNETİMİ Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü 2 BÖLÜM -7- VERİLERİ GRUPLAYARAK ANALİZ ETMEK 3 Genel Bakış Grup fonksiyonlarının tanımlanması, Gruplama işlemlerini, Gruplama
SORGULAR. Öğr.Gör.Volkan Altıntaş
SORGULAR Öğr.Gör.Volkan Altıntaş SORGULAR VE ÇEŞİTLERİ Seçme Sorguları: En sık kullanılan sorgu türüdür. Seçme sorguları, bilgileri veri sayfası görünümü nde gösteren veri tabanı nesnesi türüdür. Sorgu,
Veri Tabanı-I 5.Hafta
Veri Tabanı-I 5.Hafta DataBase Oluşturma 1 DATABASE Kolon,özellik,alanColumn,attributes,fields) Sunucu Tablo numarası adı soyadı 0913109001 Ali Can 0913109002 Nuri Koç Database 0913109003 Fatma Kara Satır,Kayıt
Ağ Üzerinde MATLAB kurulum rehberi (Sunucu makine)
Ağ Üzerinde MATLAB kurulum rehberi (Sunucu makine) İçindekiler Tablosu Dosyaların Bilgisayara İndirilmesi... 3 Dosyaların Bilgisayara Yüklenmesi... 5 1. İnternet Üzerinden Kurulum 5 1.1. Lisans Dosyasının
VERİ TABANI YÖNETİM SİSTEMLERİ I
BÖLÜM 7 7. TEMEL SQL KOMUTLARI-I SQL (Structured Query Language) kendisi bir programlama dili olmamasına rağmen bir çok kişi tarafından programlama dili olarak bilinir. SQL herhangi bir veri tabanı ortamında
Web Servis-Web Sitesi Bağlantısı
Web Servis-Web Sitesi Bağlantısı MCKS İthalatçı web servisleri internet üzerinden güvenli şekilde erişime açılmıştır. Erişime ait ağ bağlantısı aşağıda şematik olarak gösterilmiştir. Şekil - 1: MCKS-ithalatçı
Aşağıdaki tabloyu inceleyin. Sorgulama işlemlerini bu tabloya göre yapacağız.
Bu Derste Öğrenecekleriniz: 1- Basit Sorgulamalar a. Tablodan tüm alanları sorgulama b. Tablodan alanları belirterek sorgulama c. Tekrarlı satırları önleme d. Belirli sayıda veya oranda sorgulama yapma
İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI
İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI 1) Aşağıdaki seçeneklerin hangisinde PHP kod yazımı doğru olarak verilmiştir? A) B) C).. D) 2) PHP ile hazırlanmış
PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011
PHP I E. Fatih Yetkin 26 Eylül 2011 Outline Temel Tanımlar HTML e Giriş PHP ye Giriş MySQL ve PHP Temel Tanımlar Web Sunucu Nedir? Teknik detaylar bir kenara bırakılacak olursa, hazırlanan web sayfasını
SORGULAR VE ÇEŞİTLERİ II
Ünite 8 SORGULAR VE ÇEŞİTLERİ II Öğr. Gör. Kemal ÖZCAN Bu ünitede, Sorgular ve Çeşitleri konusu ele alınacaktır. Yapılacaklar Burada yazılan SQL ifadeleri MS SQL SERVER, ORACLE ve MySQL veritabanı sistemlerinin
3. Hafta Tablo İşlemleri BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri. 1.2. Kısıtlamalar (Constraints)
Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri 1.1. Tablo Oluşturma 1.2. Tablo Oluşturmada Kısıtlamalar Constraints 1.3. Tablo Silme a. NULL, NOT NULL b. PRIMARY KEY c. UNIQUE d. FOREIGN KEY e. CHECK f.
SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'
Bu Derste Öğrenecekleriniz: 1- Veri Tabanı Adı Değiştirme 2- Nesnelerin Adını Değiştirme a. Tablo Adı Değiştirme b. Alan Adı Değiştirme c. Constraint (Kısıtlama) Adı Değiştirme 3- Tablo Düzenleme Komutları
Internet Programming II. Elbistan Meslek Yüksek Okulu 2014 2015 Bahar Yarıyılı
Internet Programming II Elbistan Meslek Yüksek Okulu 2014 2015 Bahar Yarıyılı Öğr. Gör. Murat KEÇECĠOĞLU 11-14 May. 2014 Form Form İşlemleri Tarayıcıdan bilgi alarak işlem gerçekleştirme FORM elemanları
ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER
VERİTABANI SORGULARI İÇİNDEKİLER Select İfadesi Insert İfadesi Update İfadesi Delete İfadesi Verileri Sıralamak Verileri Gruplandırmak Veriler Üzerinde Arama Yapmak NESNE TABANLI PROGRAMLAMA I Uzm. Orhan
İLERİ VERİTABANI SİSTEMLERİ SUAT ÜSTKAN
1 AHMET YESEVİ ÜNİVERSİTESİ İLERİ VERİTABANI SİSTEMLERİ ORACLE VERİTABANI KURULUMU VE PL/SQL DEYİMLERİ SUAT ÜSTKAN 102173019 BİLGİSAYAR MÜHENDİSLİĞİ YÜKSEK LİSANS ARALIK 2010 2 İçindekiler 1. Oracle Database
08221 Veri Tabanı II. Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Hafta IV. Öğr. Gör. Murat KEÇECĠOĞLU
08221 Veri Tabanı II Elbistan Meslek Yüksek Okulu 2014 2015 GÜZ Yarıyılı Hafta IV Öğr. Gör. Murat KEÇECĠOĞLU T-SQL KOMUTLARI Devamı DISTINCT: Birbirinin ayni olan satirlarin listelenmemesi için bu ifade
Laboratuvar 2 Tek Kayıt Fonksiyonları
Laboratuvar 2 Tek Kayıt Fonksiyonları Fonksiyonlar sıfır veya daha fazla bağımsız değişken alan ve sonuçta sadece bir değer döndüren programlardır. Oracle ile birlikte birkaç hazır fonksiyon gelmektedir.
Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.
VERİ BÜTÜNLÜĞÜ VTYS lerde veri bütünlüğünü sağlamanın iki temel yolu vardır; Tanımlanabilir veri bütünlüğü ve prosedürel veri bütünlüğü. Tanımlanabilir veri bütünlüğü, tanımlanan nesnelerin kendi özellikleri
3. Hafta Tablo İşlemleri BPR255 Veritabanı Yönetim. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri
Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri 1.1. Tablo Oluşturma 1.2. Tablo Oluşturmada Kısıtlamalar Constraints 1.3. Tablo Silme a. NULL, NOT NULL b. PRIMARY KEY c. UNIQUE d. FOREIGN KEY e. CHECK f.
BÖLÜM- 9: KULLANICI ERİŞİMLERİNİ YÖNETMEK
BÖLÜM- 9: KULLANICI ERİŞİMLERİNİ YÖNETMEK Sistem yetkileri Nesne yetkileri Tablolar uzerinde verilebilecek yetkiler Roller Roller ve yetkiler aras.ndaki farklar KULLANICI ERİŞİMLERİ Kullanıcılar bir Username
INTERNET INFORMATION SERVICES 6.0 DA WEB SAYFASI YAYINLAMAK
INTERNET INFORMATION SERVICES 6.0 DA WEB SAYFASI YAYINLAMAK INTERNET INFORMATION SERVICES 6.0 da (IIS 6.0) Web Sayfası yayınlamak için ilk olarak IIS 6.0 ın kurulu olması gereklidir. IIS Windows ta default
VERİ TABANI YÖNETİM SİSTEMLERİ I
BÖLÜM 6 6. SQL VERİ İŞLEME DİLİ SQL insanların veritabanı sistemleri ile konuşmasını sağlayan popüler bir dildir. Bu dil tüm veritabanı programlarında kullanılabilmektedir. Bu dil sayesinde, bir veritabanından
SQL Uyarı Programı Kurulum ve Kullanımı
SQL Uyarı Programı Kurulum ve Kullanımı Kurulum 1. SQL Uyarı.zip dosyası açılır. 2. SQL Uyarı.exe programı çalıştırılır. 3. Üstteki ekran açılır ok. Butonuna basılır. 4. Ayarlar ekranı seçilir. 4.1 Server
VERİ TABANI YÖNETİM SİSTEMLERİ-II
VERİ TABANI YÖNETİM SİSTEMLERİ-II 3. MİCROSOFT SQL SERVER ARAYÜZ HİTİT ÜNİVERSİTESİ SUNGURLU MESLEK YÜKSEKOKULU BİLGİSAYAR TEKNOLOJİLERİ BÖLÜMÜ BİLGİSAYAR PROGRAMCILIĞI / 2. SINIF-GÜZ DÖNEMİ SQL Server
Veritabanı Dersi. Teoriden Pratiğe. Çağıltay N.E., Tokdemir G. Veritabanı Sistemleri Dersi -Bölüm XXV: Web'den Erişim Çağıltay, N., Tokdemir, G.
Veritabanı Dersi Teoriden Pratiğe Çağıltay N.E., Tokdemir G. Veritabanı Sistemleri Dersi -Bölüm XXV: Web'den Erişim Çağıltay, N., Tokdemir, G. BÖLÜM 25 Web den Erişim Ortak Geçit Arayüzü Bazı Web Kavramları
Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.
Script Statik Sayfa Dinamik Sayfa Dinamik Web Sitelerinin Avantajları İçerik Yönetim Sistemi PHP Nedir? Avantajları Dezavantajları Script HTML kodları arasına yerleştirilen küçük kodlardır. Web sayfalarında
Data Programming SQL Language
MySQL Console Data Programming SQL Language Elbistan Meslek Yüksek Okulu 2016 2017 Bahar Yarıyılı Öğr. Gör. Murat KEÇECĠOĞLU MySQL komut satırında dikkat edilmesi gereken kurallar Ģunlardır: Komut satırında
Oracle Database 11g: Introduction to SQL
Oracle Database 11g: Introduction to SQL Mehmet Salih DEVECI GTECH-Kıdemli Veritabanı Yöneticisi [email protected] BÖLÜM- 1: SQL E GİRİŞ SELECT ifadesinin kabiliyetlerinin ortaya çıkarılması
YAPISAL SORGULAMA DİLİ. BARIŞ ARIBURNU barisariburnu.com
YAPISAL SORGULAMA DİLİ BARIŞ ARIBURNU barisariburnu.com [email protected] SQL, insanların veritabanı sistemleri ile konuşmasını sağlayan popüler bir dildir. SQL, tüm veritabanı programlarında kullanılabilir.
VERİTABANI. SQL (Structured Query Language)
VERİTABANI SQL (Structured Query Language) SQL'de Gruplama Bir tablonun satırları gruplara ayrılarak fonksiyonların bunlara uygulanması mümkündür. Gruplara ayırmak için SELECT deyimi içerisinde GROUP BY
VERİTABANI Veritabanı Sorgulama
VERİTABANI Veritabanı Sorgulama VERİ SORGULAMA DİLİ (DATA QUERY LANGUAGE) Veritabanı platformunda veri sorgulamak için geliştirilmiş en temel araç SQL (Structured Query Language)'dir. SQL'in veritabanı
Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.
Bu Derste Öğrenecekleriniz: 1- Birden Fazla Tablodan Sorgulama 2- Tablo Birleştirme işlemleri (JOIN) a. INNER JOIN b. OUTER JOIN i. LEFT OUTER JOIN ii. RIGHT OUTER JOIN iii. FULL OUTER JOIN 3- Tablo Ekleme
Çok tablolu sorgulamalar
Çok tablolu sorgulamalar Eğer birden fazla tabloda yer alan verilerin tek bir sorgu ile görüntülenmesi istenirse FROM kısmında ilgili tablolar araya virgül konularak yazılmalı, WHERE kısmında ise o tabloları
Veritabanı Uygulamaları Tasarımı
Veritabanı Uygulamaları Tasarımı Veri Tabanı Veritabanı yada ingilizce database kavramı, verilerin belirli bir düzene göre depolandığı sistemlere verilen genel bir isimdir. Günümüzde özel veya kamu kuruluşların
Internet Programming II
Internet Programming II Elbistan Meslek Yüksek Okulu 2016 2017 Bahar Yarıyılı Öğr.Gör. Murat KEÇECĠOĞLU 1 Fonksiyonlar Değişken Kontrol Fonksiyonları isset() Fonksiyonu Parametre olarak aldığı değişken
ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1 1. FORMLAR
ÖĞRENME FAALİYETİ 1 AMAÇ ÖĞRENME FAALİYETİ 1 Uygun ortam sağlandığında web sayfaları için formlar oluşturabileceksiniz. ARAŞTIRMA Web sayfalarında formların kullanım amaçlarını ve nasıl kullanıldığını
Veri Tabanı Tasarım ve Yönetimi
SAKARYA ÜNİVERSİTESİ Veri Tabanı Tasarım ve Yönetimi Hafta 5 Prof. Dr. Ümit KOCABIÇAK Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir. "Uzaktan Öğretim" tekniğine uygun
1. VERİ TABANI KAVRAMLARI VE VERİ TABANI OLUŞTUMA
BÖLÜM15 D- VERİ TABANI PROGRAMI 1. VERİ TABANI KAVRAMLARI VE VERİ TABANI OLUŞTUMA 1.1. Veri Tabanı Kavramları Veritabanı (DataBase) : En genel tanımıyla, kullanım amacına uygun olarak düzenlenmiş veriler
Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı
Internet Programming II Elbistan Meslek Yüksek Okulu 2015 2016 Bahar Yarıyılı Öğr. Gör. Murat KEÇECĠOĞLU 23 May. 2016 Form Form İşlemleri Tarayıcıdan bilgi alarak işlem gerçekleştirme FORM elemanları yardımıyla
Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language)
Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language) Konular Yapısal SQL Komutları Gruplama İşlemi SQL Fonksiyonları Kaynaklar 2 SQL (Structured Query Language) SQL Carlos
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java Kodlarına Yorum Satırı Eklemek Java Paket Kavramı Java Kütüphane Kavramı Konsoldan Veri Çıkışı ve JOPtionPane Kütüphanesi JOptionPane Kütüphanesi Kullanarak
Internet Programming II
Internet Programming II Elbistan Meslek Yüksek Okulu 2015 2016 Bahar Yarıyılı 16 May. 2016 Öğr.Gör. Murat KEÇECĠOĞLU 1 Fonksiyonlar Değişken Kontrol Fonksiyonları isset() Fonksiyonu Parametre olarak aldığı
1. Mutabakat.zip dosyası açılır. 2. Mutabakat klasörü içindeki Mutabakat.exe dosyası çalıştırılır.
BA&BS MUTABAKAT PROGRAMI Kurulumu 1. Mutabakat.zip dosyası açılır. 2. Mutabakat klasörü içindeki Mutabakat.exe dosyası çalıştırılır. 3. Server ayarlarının yapılacağı pencere açılır. 3.1 Server Adı\instance
SQL Kod ile Tablo Oluşturma
SQL Kod ile Tablo Oluşturma Aşağıdaki SQL kodları Veri tabanı hazırlama programında yazılıp çalıştırıldığı zaman PERSONEL adında bir tablo oluşturulur ve bu tablonun sütunları Personel_no, Adı, Soyadı
çindekiler 01. Kurulum
çindekiler 01. Kurulum 1 Niçin PHP Kullanmal y z? 1 Gerekli Programlar n Temin Edilmesi 2 PHP yi Temin Edelim 3 APACHE in Temin Edilmesi 3 MySQL in Temin Edilmesi 3 PHPMyAdmin in Temin Edilmesi 4 PHPed
Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.
Bu Derste Öğrenecekleriniz: 1- Sorgulama Yaparken Gruplama (GROUP BY) 2- Gruplamada Koşul Kullanımı (HAVING) 3- Sorgulama Yaparken Sıralama (ORDER BY) 4- Sorgulamalarda İşlem Yapma 5- Güncellemelerde İşlem
UZAKTAN EĞİTİM MERKEZİ
ÜNİTE 2 VERİ TABANI İÇİNDEKİLER Veri Tabanı Veri Tabanı İle İlgili Temel Kavramlar Tablo Alan Sorgu Veri Tabanı Yapısı BAYBURT ÜNİVERSİTESİ UZAKTAN EĞİTİM MERKEZİ BİLGİSAYAR II HEDEFLER Veri tabanı kavramını
13 Aralık 2007. Đlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL. Đlgili Modül/ler : Raporlar. Kullanıcı Tanımlı Raporlar Bölümünden Yapabildiklerimiz
13 Aralık 2007 Đlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL Đlgili Modül/ler : Raporlar KULLANICI TANIMLI RAPORLAR Kullanıcı Tanımlı Raporlar Bölümünden Yapabildiklerimiz Kendi isteklerinize özel rapor tasarımları
PHP 1. Hafta 1. Sunum
PHP 1. Hafta 1. Sunum PHP101: PHP nedir? Bu dersten sonra bilecekleriniz PHP nedir? PHP ye neden ihtiyaç vardır? PHP nin gelişimi HTML, HTTP ve JS nedir? PHP yle alakası nedir? PHP nin uygulama alanları
-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.
T-SQL KODLARİ İÇERİSİNE AÇIKLAMA EKLEME Bir veya daha fazla satırın çalıştırılmasını Önlemek için veya /*... */" ifadeleri kullanılır. -- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak
Veri Tabanı Programlamaya Giriş
Veri Tabanı Programlamaya Giriş Kitap özeti Veri Tabanı Programlamaya Giriş SQL insanların veritabanı sistemleri ile konuşmasını sağlayan popüler bir dildir. Bu dil sayesinde, bir veritabanından kayıtları
Veri Tabanı SQL Server ve Management Studio kurulum linkleri: https://www.microsoft.com/en-us/download/details.aspx?id=42299
Veri Tabanı 1 1. SQL Server ve Management Studio kurulum linkleri: https://www.microsoft.com/en-us/download/details.aspx?id=42299 2. SQL Management Studio açılış ekranı: Server Type: reporting, analysis
Aşağıdaki tabloyu inceleyin. Yeni kayıt girme, var olan bir kaydı silme veya güncelleme işlemlerini bu tabloya göre yapacağız.
Bu Derste Öğrenecekleriniz: 1- Tabloya Veri (Yeni Kayıt) Ekleme 2- Kayıt Silme 3- Kayıt Güncelleme Aşağıdaki tabloyu inceleyin. Yeni kayıt girme, var olan bir kaydı silme veya güncelleme işlemlerini bu
FAKS SUNUCU EĞİTİM DÖKÜMANI
FAKS SUNUCU EĞİTİM DÖKÜMANI 1. Faks Tanımlama 1.1. Uygulamalar Santral Yönetimi Faxlar Fax Ayarları Ekranı açılır. 1.2. Yeni bir faks tanımlamak için Navigasyon Çubuğundaki Ekle düğmesi tıklanarak yeni
SQL (Structured Query Language)
SQL (Structured Query Language) Neden SQL? SQL çok yüksek seviyeli bir dildir. İngilizce bilen herkes bu dili kolayca öğrenebilir. Programlama dillerine göre öğrenilmesi çok daha kolaydır. Çünkü programlama
SQL Query and Table Application
SQL Query and Table Application Elbistan Meslek Yüksek Okulu 2012 2013 Bahar Yarıyılı Öğr. Gör. Murat KEÇECİOĞLU 24-25 Nis. 2013 Sorgulama İşlemleri SQL de sorgulama işlemleri SELECT deyimi yardımıyla
MAC İşletim Sistemine Sahip Makineler İçin Elektronik İmza Kurulumu
MAC İşletim Sistemine Sahip Makineler İçin Elektronik İmza Kurulumu MAC İşletim Sistemine Sahip Makineler İçin Elektronik İmza Kurulumu nda, aşağıdaki adımlar sırası ile takip edilmelidir. 1 - MAC İçin
Network üzerinde MATLAB kurulması
Network üzerinde MATLAB kurulması MATLAB&Simulink www.figes.com.tr Bir network üzerinde MATLAB ın kurulmasına başlanmadan önce bir network lisansı açılması ve bunun için de kurulum yapılacak sunucunun
Veri Tabanı Yönetim Sistemleri Bölüm - 6
Veri Tabanı Yönetim Sistemleri Bölüm - 6 İçerik Fonksiyonlar Tek Satır Fonksiyonlar Karakter Fonksiyonlar Sayısal Fonksiyonlar Tarih ve Saat Fonksiyonları Dönüştürücü Fonksiyonlar Çoklu Satır Fonksiyonlar
CHAPTER 9. DHCP Server
1 CHAPTER 9 DHCP Server 2 9.1 DHCP nedir? Bildiğiniz gibi bir ağda bulunan bilgisayarın birbirleri ile iletişim işinde bulunabilmeleri ve yine bu ağdaki internet bağlantısından faydalanabilmeleri için
KULLANICI KILAVUZU: UEA FİX KULLANICILARININ SSLVPN ERİŞİMİ İMKB İÇİNDEKİLER
KULLANICI KILAVUZU: UEA FİX KULLANICILARININ SSLVPN ERİŞİMİ İMKB Tarih: 29/01/2013 Versiyon Tarih Açıklama 1.0 29-01-13 İlk yazımı İÇİNDEKİLER 1. AMAÇ... 1-2 2. SSLVPN BAĞLANTI ADIMLARI... 2-2 2.1 Linux
Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu 2012 2013 Bahar Yarıyılı. 26 Şub. 2013 Öğr. Gör.
Ders Tanıtım Sunumu Internet Programming II Elbistan Meslek Yüksek Okulu 2012 2013 Bahar Yarıyılı 26 Şub. 2013 Öğr. Gör. Murat KEÇECİOĞLU PHP Nedir? Platformdan bağımsız (işletim Sistemi) dinamik web sayfaları
Web Tasarımının Temelleri
1. Hafta Web Tasarımının Temelleri Öğr. Gör. Murat YAZICI www.muratyazici.com Artvin Çoruh Üniversitesi, Artvin Meslek Yüksekokulu www.artvin.edu.tr Temel Kavramlar İnternet HTML WWW HTTP, HTTPS FTP Web
Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme
Veritabanı Tasarımı Kullanıcı Erişimini Kontrol Etme Konular Nesne ayrıcalıkları ve sistem ayrıcalıkları arasındaki farkı karşılaştırma Bir kullanıcının bir veritabanınaerişimini etkinleştirmek için gerekli
SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.
SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır. Bu dersimizde biz Microsoft SQL Server veritabanı sistemini kullanmayı öğreneceğiz. SQL Nedir? SQL Structured Query Language
