You are on page 1of 293

ANK RA NIVERSITESI

EN FAKLTESI
Progress Programla a

vi Web Programla a <PHP)

1. BASK!

Um. Yahya DMRCAN Muhittin ALINKAYA


A.O.F.F. Dner Sermaye Yay nlar No:63

Progress Programlama ve Web Uygulamalar

Uzm. Yahya Demircan


demircan@ankara.edu.tr

Muhittin ALTINKAYA
akaya@ankara.edu.tr

Ankara, 2002

A..F.F. Dner Sermaye I letmesi Yay nlar No:63

nsz Tm dnyada yayg nlaan bilgisayar teknolojisi, lkemizde de vazgeilmez u ralarn arasna girmi tir. evremize bakt mzda, hastaneler, al veri merkezleri, okullar, bankalar gibi i yerlerinde bilgiler birer hazine deeri tamaktadr. Bu bilgilerin gvenli bir ortamda tutulmas ve gerekti inde bilgilere eri ilmesi vazgeilmez olmaktadr. Gelien teknoloji sayesinde bu bilgilerin, insanl n hizmetine sunulma gereksinimi do maktadr. amz teknolojisinde, bilgiye en kolay eri im yolu internet sayesinde olmaktad r. Bu kitap size an teknolojisini yakalamak iin bir frsat sunmaktadr. Kitapta bilgilerin depolanmas ve bilgiye eri imin kolay yntemleri anlatlmaktadr, arayz Bilgileriniz iin veri bankas ve bu bilgiler iin oluturma yntemleri ele al nmtr. Veritaban ve kullanc lara arayz oluturmak iin "Progress Software" yaz lm kullanlmtr. Veritabann internet ortam na aarak, internet kullan clannn bilgileri sorgulama veya bilgi giri i gibi ilemleri gerekletirmesi de mmkn olacaktr. Web arayz olu turma i lemleri iin, temel HTML komutlar ile beraber, PHP komutlann n kullanlmas yntemi ele alnmtr.

iindekiler
PROGRESS PROGRAMLAM A

PROGRESS'E GIRI Progress'in Bilgisayara Kurulmas Ksa yol Progress'te kullan lan dosyalar VERTABANI TASARIMI VE TANIMI Data Dictionary rnek Veritaban Yaps Tablo Oluturma Alan Oluturma indeks Oluturma Progress'de Veri leme Sql ile Veri leme 4GL ile Veri leme Kullanc Arayznde Veri Ileme 4GL KOMUTLARI Deiken Tipleri ve Tanmlama Geici Tablo (Temp-table) Operatrler Grntleme Komutlan Message Display artl Deyimler If Deyimi Case Deyimi Do To Deyimi Do While Deyimi Repeat Deyimi For Ecah Deyimi Leave Komutu Find Deyimi Update Komutu Progress'te A klama Satn Run Deyimi Connect Komutu

1-1 1-2 1-10 1-14 2-1 2-1 2-4 2-6 2-8 2-10 2-14 2-14 2-18 2-20 3-1 3-2 3-4 3-5 3-8 3-8 3-10 3-11 3-11 3-13 3-15 3-16 3-17 3-18 3-21 3-21 3-23 3-24 3-25 3-25

Connected Komutu FONKSYONLAR Nmerik Fonksiyonlar Karakter Fonksiyonlar Tarih Fonksiyonlar SQL (STRUCTURED QUERY LANGUAGE) SQL Fonksiyonlar Sorgulama arts z Kayt Sorgulama Tek Kayt Sorgulama Sorgu Sonucu Dnen Kaytlar Sralama artl Kayt Sorgulama Bo veya Dolu Alanlara Gre Sorgu Tam Olmayan Bilgiye Gre Sorgu ki Tabloyu Beraber Sorgulama Kaytlar Gruplama Kayt Girme Kayt Gncelleme Kayt Silme SQL Veritaban Komutlar Tablo Oluturma Tablo Ad Deitirme Tabloya Alan Ekleme Tablodan Alan Silme Tabloda Alan Adlar Dei tirme Tabloda Alan Gncelleme Tablo Silme USER INTERFACE BULDER (UIB) Window Trigger Button Section Editor Fill-in Radio-set Text Combo-box Toggle-box Db-fields

3-27 4-1 4-1 4-5 4-13 5-1 5-2 5-3 5-3 5-5 5-6 5-7 5-8 5-9 5-10 5-10 5-11 5-11 5-11 5-11 5-11 5-12 5-12 5-13 5-13 5-13 5-14 6-1 6-2 6-3 6-4 6-8 6-9 6-14 6-19 6-20 6-29 6-31

Browse Sorgu Image Function (Kullanc Tanml) Procedure (Kullan c Tanml) Nesnelerin zellkikleri Rapor Hazrlama WEB UYGULAMALARI HTML ( Hyper Text Markup Language ) Html Nedir - Nasl Hazrlanr 9 Yazm Kurallar HTML Dilinde Kullanlan Taglar Genel Parametreler <body> Tagnn Parametreleri Yaz Biimlendirme Taglan Balklar Paragraflar Web Sayfalarnda Resim Kullanlmas Balantlar (Linkler) Listeler Formlar Form Nesneleri Tablolar (Tables) Satr ve Stun Taglan ereveler (Frame'ler) PHP (Personal Home Page) Tarihe PHP Nedir ? PHP Gereksinimleri Apache Server Kurulumu PHP Kurulumu Progress Veritaban Kurulumu ODBC Driver Kurulumu PHP Yazm Kurallar HTML ve PHP Kodlarn iie Kullanma PHP Kodlarn Tek Bana Kullanma

6-41 6-45 6-47 6-49 6-54 6-58 6-60

7-1 7-1 7-1 7-2 7-4 7-9 7-9 7-11 7-12 7-13 7-16 7-18 7-21 7-22 7-32 7-33 7-36 8-1 8-1 8-1 8-2 8-3 8-9 8-13 8-13 8-17 8-20 8-21

zel Karakterler Dei kenler ve Veri Trleri Veri Trleri Deikenler Sabitler lemciler (Operatrler) Atama Operatr Aritmetik Operatrler ki String'i Birle tirme (Concotenation) Birleik Atama i lemleri Karlatrma Operatrleri Mantksal Operatrler PHP Dilinde ilemlerin ncelik S ras Diziler (Array) Dizi Deikenler ilikili Diziler Dizilerde Kullanlan Fonksiyonlar PHP' de Kontrol Yap lan if Kontrol Yap s switch Kontrol Yap s while Dngs do while Dngs for Dngs Fonksiyonlar String Fonksiyonlar Tarih ve Saat Fonksiyonlan Dosya Fonksiyonlan Kullanc Tanml Fonksiyonlar Bir Fonksiyonun a nlmas Global ve Static Deikenler PHP ile Veritaban Etkileimleri rnek Uygulama PHP Kaynaklar

8-22 8-22 8-22 8-23 8-27 8-28 8-28 8-28 8-28 8-29 8-32 8-32 8-32 8-33 8-33 8-34 8-36 8-38 8-38 8-40 8-42 8-43 8-44 8-44 8-48 8-51 8-53 8-53 8-54 8-55 8-57 8-61 8-94

Progress'e Giri

PROGRESS'e G R Veritaban, birok bilginin ayn ortamda tutulmas , bu bilgilere hzl eriimi, bilgi tekrarnn nlenmesi, monoton olarak yap lacak i lemlerin doru ve hzl yaplmasn, ayn bilgileri birden fazla ki inin ayn anda kullanmas n ve gvenli i Salar. Progress ile bilgilerin tutulmas, bilgi girileri ve bu bilgiler nda raporlar (ekran, dosya ve ka da kt olarak) almak mmkndr. Bilgilerin tutulmas , veritaban tasanm ve tanm iin Data Dictionary, Bilgi giri, gncelleme ve silme iin User Interface Builder (UIB) ve Procedure Editor, Raporlar iin Report Builder ve procedure editor (komutlarla) kullan lr. UIB de obje (nesne) kavramlanna (grafik ekrana) 4GL komutlar n da ekleyerek progress ile programlar daha kullan l ve son kullamcya ynelik olacakt r. Bu kitap ders nota olarak haz rlanmtr. Bundan dolay fazla aynntya girmeden, progress'i kullanmay, program yazmay ve veritabanlarnn ortak dili olan SQL (Structured Query Language) Yap sal Sorgu Dili basit dzeyde anlatlacaktr.

1-1

P oress Prograrnigma

Progress'in Bilgisayara Kurulmas Progress'in Windows' a (windows 95/Windows 98/NT/windows 2000) kurulmas i lemleri ayn ad mlarla gerekle tirilmektedir. Bilgisayar nz n zellikleri, windows i letim sisteminin al abilmesi iin gerekli zellikler yeterlidir. Progress yaz lm iin harddiskde 250-300 mb civarnda bo alan gerekmektedir. Progress cd' sini cd-rom srcsne tak ld anda otomatik kurma i lemi balayacakt r. lk olarak aa daki pencere gelecektir, bu pencerede
r ih4;

Installing PROGRESS
Wekome

Wolcome theSPROG RESS tr stallatiori Ut lty.

kurma i lemini devam ettirmek iin "Next" butonuna bas lmaldr. kinci a amada rnn serial ve kontrol numaralar aadaki ekranda olduu gibi girilir ve "Accept" onaylama butonuna bas lr.

1-2

Progress'e Giri

Serial & Contral Ntantrora

Entar,..tha

5,36ol

and Control NOrnlorars Control:N urobers t><SASS IT O FV.D FM;1 Y7

erialt,lumber 1002903193

Product(s) to be installed

< 1.ack

L:tout >

Accept butonuna basld anda seri numaras ile kontrol numaras nn doru olduuna ilikin "Product(s) to be installed" penceresinde "Provision Plus" rn kacaktr. Next butonuna baslarak seilen bu rnn kurma ileminde bir sonraki ad ma geilir.
Setral &

Controt Nurnb,,A,

Prod or,

be ib.:.telled;

Pr.:Nisors Plus

Bir sonraki admda rnn kurulaca "Destination Directory" dizin ismi "c: \Program Files\PROGRESS" varsay lan olarak gelmektedir. Bu dizin deitirilmek istenirse "Browse" butonuna bas larak yeni bir dizin seme imkan doan

1-3

Progress Progra nlama

Cheese Destination And Working Path Directories Setup edil install the PROGRESS product(s) in the listed D and Working directories. Select a Working directory for the log and application files. Click on Brovise to select another path.

E3
e,stination

Destinatton Directory

C:Wrogram FilesWROGRESS
Working Directory

C:WROGRESSWIRK

< Eack

>

Progress de yaplan uygulamalar iin "Working Directory" al ma dizini belirlenmelidir. Varsaylan olarak "c:\PROGRESS \WRK" dizinini deitirmek iinde hemen yan ndaki "Browse" butonuna bas lmaldr. alma dizinleri her uygulama iin daha sonra da de itirilebilmektedir (Baknz Ksa yol oluturma blmne). Dizin seimleri yap ldktan sonra "next" butonuna basarak bir sonraki ad ma geilir. Setup Type penceresinden "typical" en az gerekli (desktop, data

~k<", iTv.p rHA

ctup you

Prograrn veill ba r stall i ,v th s he most componer4s. Re,crc rnended 8,4 n .,

C ornplet'e

Progrart,

be 4 4 , alled with ALL corr,aeenls.

'rs

4, 41' ch ,4,4 e , be install R 4op nn and,,If, r 4,-K41-4,Gd

di..r but,..el c ,,,,poner4,-;acre,44 s n4c.h r ,s. in4taf1,4 s Qn ar.I cordigu at on duc:urner4.,r c

Space H equ r,d_ 51, 4;Ce~ilat le,

245208 K 3090200 K < .Q4ck. ),e, > Cancel

dictionary, report builder gibi) bileenlerin yklenmesi seilerek "next" dmesine baslr.

1 -4

Progress'e Giri

Bir sonraki ad m olan Progress bile enlerinin Ba lat mensnde programlar seene inde hangi dizin isminde yer alaca aa daki ekran gelecektir. Bu ekranda istenilen de i iklik (nerilen ayn kalmas ) yap larak bir sonraki ad m iin "Next" butonuna bas lr.
Program Folder

Aa daki pencerede yer alan listeden "Turkish" seilerek "Next" butonuna bas lr
Language Choice

Se!ed !iHe Lar ouages yola eant t in>k nll deselect th lanquege yel: d

_ _ 1 Chinese (Tradt onal) J apanese


Korcan Chnese (S mple) ornanien

1-5

Progress Program] ama

Trke karakterleri iin "1254 Turkish Basic" seilir, tarih biimi iin Date Format listesinden "dmy" gn/ay/y l biim seilir. Number Format listesinden saylann biimi seilerek "next" butonuna bas lr.
International Settings

Select the desired settings that wi0 be used to modify your startuppf file. Character Set, Collation, and Case 11254 Turkish Basic Date Format:

Number Format:

xY

11234.56 (comma, period)

< ack

Canel

Buraya kadar ku la i leminde seimi yap lan ayarlar a adaki ekran gelecektir, devam etmek iin "Next" butonuna bas lr.
Summar.) of the options you have selected.

Space Reguired: Space Available: Destination Path: Working Directory: Insiall Type: Folder Name: Default Language:

252184 K 3889768 K C:Wrogram FileskPROG C:WROGRESS\WRK Typical PROGRESS Turkish

Next >

Cancel

1-6

Progress'e Giri

Artk progress'in kurulma i lemi ayarlarn seimi sonunda devam edecektir. Bu ad mda baz bilgi pencereleri gelecektir.
Installing Files
Installing: Workshop (m) Installing Pile: code asp

En son aamada "finish" butonunun bulunduu pencere gelecektir. Son butonuna basarak kurul= i lemi sona erecektir.
Commit Shared Files
Some files could not be updated because they are currentLy in use b_y other programs on the system. Files in use will be updated the next time you restart your system

C Yes, I want to restart rny computer now. Id I v,ilFrestart my computer tater

Yukar da ki ekranda bilgisayann ayarlar nn yaplabilmesi iin restart "kapanp tekrar a lmas" ilemi sorulmaktadr. Bu pencerede Yes kutucuu iaretlenerek "Ok" butonuna bas larak bilgisayarn kapanp tekrar almas salanr. Eer ki progress'i yukar daki admlardan herhangi birinde kunnaktan vazgeilmi olabilir. Kurma ilemin tekrar balanabilmesi iin cd-rom src (muhtemel D) de bulunan Progress cd'sinde yer alan setup.exe dosyasna fare ile ift tklanmaldr.

1-7

Progress Programla=

j?Prog ess_91 (El


Dosya Dzen Grnm Yard m 2] Pmmer: Pmmkd
.14 Primo!

.JA1 Pmtur 2] Probuild Proclass 2] Proctri

Setup 2] S etup.lid 21S etup.tab Smpapp S qlcom 'S S qljdbc S qlodbc 2] Ika Loli T ranman 12) Ubtools 2:]Vistrans r

[2] Pmpol Pmpor Pmprs

A Profiler %tes
r,21: %tim : kr.11 Proxy

A Pmrom
PITNS Pmsch

1A Pmsla
Pmspa

r4 R eadme
A R ptbldr
Lri r -

DA R eadme. pro

A Pmsrb
Pmswe

sR

pteng

,tji V i t r i a I
.."1 Wscmn ::J, : . 2IWsrt 2n:1 Wssd

Setup : :L71 Setup 59 51(9

A
4

Prrtal Pmtch

; 1. nesne se i

Doru bir ekilde kurulmu olan Progress yaz lma ulamak iin bilgisayarnzn "Ba lat" butonundan Programlar dizinine, oradan da Progress dizini seilirse a a daki gibi progress'in yklenen bile enleri grntlenecektir.

1-8

Progress'e Giri

Ortokbiges A
Yeni Office Belgesi

-- Programlar

Balang Donablar

,6yarlai

Internet Mail Internet Nem Mictosoft ifti ictosoft Excel M crosoft N et s M eeting Micreoft,ttleok, Point Desktop

pj? mieuxoftwo,d
MS -D0.5 Kornu s istemi

Prov Genetotot, Release N Uninstal!

Bileenlerden baz lar ; AppBuilder oluturma) Client Data Dictionary Desktop eriilebilir) : User Interface Builder (Kullan c ara yz : Procedure editor (komut editr) : Veritaban yaratma, veritaban tasanm bileeni : Progress masast (Bile enlere k sa yoldan

Bileenler ba lat mensnden ula lp kullanlaca gibi "ksa yol" olu turularak ta kullan labilir. Desktop bile enine ksa yol olu tua ilemi "k sa yol olu turma" ba l altnda anlat lacaktr.

1-9

Progress Programlama

Progress'i bilgisayarm za kurduktan sonra, kolay olmas asndan masastne bir k sa yol olu turulmal dr.

Ksa yol: Masastnde iken mouse'un sa tuuna tklanr, yeni (new) seene inden ksa yol (shortcut) seilir, gelen pencerede komut sat n alannda c:\dlc\bin\prowin32.exe yazlarak "ileri" butonuna bas larak devam edilirse ksa yol oluturulmu olur.
Kisayol Olusta
K sayolunu olu turmak istedi iniz C 'denin konumunu ve ad n yaz n veya GOzat' t klatarak Odeyi aray n. Kornut ;at n:

C: 1. DLC \bio\rowin32.exCinzat

Burada prowin32.exe dosyas progress'i bilgisayarnwa kurduunuz dizinden "Gzat" butonuna basarak bulmanzda yarar vardr.

Prowin32.exe isminde oluan ksa yol zerine Mouse getirerek sa tuuna bashr ve alan listenin en altnda yer alan zellikler seilir ve aadaki ekran getirilir,

1-10

Progress'e Giri

ve webspee , Genel K sayol progress ve webspeed kursu

Hedef tUrii: Hedef konumu: Hedef:

Uygulama bin

1C: dlc91a bin \prowin32.exe -p _desk.pl

Ba lama yeri: Ksayol tu u:

IC: \uygulama
frok

Simge D e'gi tir.

Hedef satn c:\DLC\bin\prowin32.exe p _desk.p Balama yeri c: \uygulama olarak dzeltilir. -p prowin32.exe uygulamas altrldnda bu uygulama ile birlikte istenilen program direk al tnlabilir. p parametresi yanna yazlacak progress uygulamas olmaldr. rnek olarak yapt nz "deneme.p" ad ndaki bir uygulaman z progress almaya baladnda direk altrmak istiyorsanz ksa yolunuzun hedef sat n; c:\DLC\bin\prowin32.exe p deneme.p eklinde olmaldr. _desk.p uygulamas progress'in desktop penceresi (Bkz. Veritaban Tanm ve Tasarm blm) olduu iin ilk olarak bunun a lmas iin

Progress Programiarna

yaz lmtr. E er prowin32.exe sonuna hibir ey yaz lmaz ise progress'in komut yazma editr olan "procedure editor" a lacaktr.
Pocedwe E dito - Untitled-1
u

xt

Ldit . S earc

B uff er

omple boluQptions Help

L 3
';

PROGRESS
Progress Yazl mn, Desktop (Masast) uygulamas

Ksa yolun hedef sat r ve balama yeri uygun ekilde (e: \uygulama) yazlarak "Tamam" butonuna bas lr. Burada "uygulama" ifadesi hard diskinizde (HD) yer alan bir klasr olmal dr. Uygun bir klasr hard diskinizde oluturup balama yeri olarak o klasr gsterebilirsiniz. Uygulama klasr veritaban nn ve yaptmz uygulamalarn (dosyalarn) saklanaca yer olacakt r. Eer veritaban nz oluturdunuz programlar kapattnz tekrar bu k sa yolu altrdnz zaman veritaban na balarmanz isteyecektir. Bu balanma safhasm her defasnda yapmak istenmiyorsa ksa yolun zelliinin deitirilmesi gerekmektedir.

1-12

Progress'e Giri

progress ve webspeed kursu tizellikleri Genel K sayol

progfess ve webspeed kursu

Hedef tr Hedef konumu: Hedef;

Uygulama bin

Ic9la \. bin prowin32.ete -p _desk.p -db ogrenci.db -1

Balama yeri: Kisayal tuu:

IC: \uygulama
ok ormal pencere

Hedef Bul...

S in- ge D eeditir

Hedef satn c:\DLC\hin\prowin32.exe -p _desk.p -db ogrenci.db --1 eklinde olmaldr. -db db-name :ba lamlanacak veritabannn ad (-db ogrenci.db) -1 :Server olmayan bilgisayarlarda veritaban m bir kullancl olarak a demektir. yle bir ey anlalmasn 2 kii balanacaksa -2 olacak diye bir kural yoktur. 2 veya daha fazla ki i ayn veritabann kullanacaksa veritabanmn bir servera (ana makina, sunucu) kurulmal dr. Servera kurulan veritaban ok kiinin balanmas iin farkl yntemle a lr. Server iin progress'in farkl kurulumlan vardr.

1-13

Progress Programla a

Progress'te kullan lan dosyalar:

Database (veritaban )

uzants .db database ile ilgili yap larn tutulduu dosya .dl Verilerin tutuldu u dosyalar database'i koruma amal .b1 dosya .p editrde yaz lm kod ieren program dosyas .w UIB uygulamalar de oluturulmu

Before image

Procedure editr

Window

Include

kullanc tamml ktphane programlar .r .p ve .w olarak haz rlanm programlarn, derlenmi alan program dosyalan

Derlenmi dosya

Bir database olu turulduunda *.db,*.d1,*.b1 dosyalan oluur. Database'in kullanlabilmesi iin bu dosya mutlaka olmaldr. rnein b 1 dosyas silinmi ise, baka bir veritaban nn veya ayn veritabannn nceki bl dosyas yedekten al nsa dahi veritaban na bir daha balant kurulamaz. Bu nedenle bu dosya beraber muhafaza edilmelidir.

1-14

Verit , barn l'asar rm ve Tanm

1- VERTABANI TASARIMI VE TANIMI

Oluturulan k sa yol zerinde mouse'un sol tu u ile ift t klat larak program al trl r. Daha ncede bahsedildi i gibi prowin32.exe sonuna yazlan "p _desk.p" ifadesi ile k sa yol altrldnda Progress desktop penceresi ekrana gelir.

Data Dictionary

Procedure Editor

User Interface Builder

Progress Desktop penceresinde yer alan 6 simgeden, n a klayalm, bu simgelere tools mensnden de ulamak mmkndr.
Data Dictionary:

Veritabammzn tasarmn ve tanmnn yaplaca simgedir (veritabamnn yapsna buradan baklabilir). Burada yap labilen i lemler; yeni veritabarn (database) yaratma, tablolar (tables) olu turma, bilgi alanlar (fields) olu turma ve tablolara indexler olu turma i lemleri yaplabi lmektedir.
Dictionary Startup

Data Dictionary butonuna bas ld anda, ekrana gelen "Dictionary Startup" penceresinde; varolan veritaban na balant (Connect to an 2-1

Progress Programlama

Existing Database), yeni bir veritaban yaratma (Create a New Database) ve hibir veritaban n semeden devam (Continue with No Database) seenekleri sunulur, burada yeni bir veritaban yaratma (Create a New Database) seimi yap larak "OK" butonuna bas lr.

Create Database penceresinde veritabanm n ismi "ogrenci" olarak girilir, Start with: An Empty Database : Bo veritaban . A copy of the Sports Dat. : Spor veritaban mn kopyasn oluturur. A copy of Some Other Dat.: Di er veritaban (isim verebilece iniz) seilerek kopyas n oluturur. Burada bo veritaban seilerek "Ok" butonuna bas ldnda ogrenci veritaban oluturulmutur. Oluturulan "ogrenci" veritaban na o anda ba lanlmas iin "Connect Database" ekran nda "Ok" tuuna baslarak balant kurulur.

2-2

Vernabam Tasarm ve Tanm

Physical Name. ogrenci Logical Name:1 Database Type: PROGRESS

Files...

OK
Cancel fielp

Qptons >>

Balant kurulduktan sonra Data Dictionary penceresi gelecektir. Burada imdilik iki liste yer almaktad r. Birincisi veritabanlanmn, di eri tablolarn listesidir (Data Dictionary ba lkl pencere). O zaman yeni bir kavram daha ortaya kmaktadr o da tablo kavram dr. Veritaban en az bir tablodan olu maldr. Dersimizin daha iyi anlalmas iin, fakltenin renci ileri ile aklayalm; renci leri'nde rencilerin zlk bilgileri .(ozluk) Numaras, ad, soyad, doum tarihi, snf gibi bilgiler Okutulacak ders bilgileri (ders) Dersin kodu, ad, kredisi, dersi veren retim eleman rencilerin, okutulan derslerden semi olduu ders bilgileri (notlar) rencinin numaras, dersin kodu, dnemi, ubesi, vize, final, basan notu gibi bilgiler tutulmaldr. Bilgi tutulmas iin 3 tane yap oluturulmutur. Bu yaplara tablo denilmektedir. 3 tablo yerine tek tabloda da bilgiler tutulabilirdi. Fakat bilgi tekrarnn nlenmesi, bilgilere hzl eriim gibi nedenlerden dolay birka tablo yap s tercih edilmelidir. Tek tablo olsa idi yle bir yap olmalyd ;
Numara 91050099 91050099 92050002 Ad Yahya Yahya Banu Soyad Demircan Demircan Demirel D.Kodu A308 A211 A308 D.ad Progress 8.A G.Astronomi Progress 8 Vize 30 50 45 final 60 70 80

2-3

Pro g ress Pro ,, ramlama

92050002 92050002 93050005

Banu Banu Muhittin

Demirel Demirel Altnkaya

A2I I A308 A308

G.Ast. Progress Progress 8.

50 40 50

90 80 80

Bu tabloya bakl rsa., ayn dersi alan renciler iin ders isimleri tekrar tekrar girilmi , ders isimleri farkl girilmi , bir renci 20 ders alacaksa her defas nda rencinin ad soyad bilgileri girilmek zorunda kal nmtr, bu bilgiler yanl girilmi ve bilgiler tekrar edilmi tir. Bunun yerine, mant k lsnde en kk tablolar halinde bilgiler tutulursa veritaban mantna uyulmu olacak, kullanc larn da daha az i ve daha do ru al lmas salanacaktr.

rnek Veritaban yaps :


ok saydaki tablolarn birbiriyle almas olayna ilikili (balant l) veritaban denilmektedir. ili kili alabilmesi iin tablolarn ortak bilgi alanlarndan olumas gerekir. Oluturaca mz tablolar;
Tablo: Ozluk
Bilgi Alan Ad (Field Name ) Alan Tipi(Data Type) Biimi(Format)

Ogr_No Adi Soyadi Sinifi D Tarihi Cinsiyeti lIce_Kodu Flarc_Kredi Adres Tablo :Ders
Bilgi Alan Ad (Field Name )

char char char inte date char char logi char[3]

X(8) X(15) X(15) 9 99/99/9999 X(1) X(4) yes/no X(30)

Alan Tipi(Data Type)

Biimi(Format)

Kodu Ders Adi Kredi Sicil_No Donem Tablo: Notlar


Bilgi Alan Ad (Field Name )

Char Char Decimal-2 Char Char

X(6) X(30) >9,9 X(5) 9999-99/9

Alan Tipi(Data Type)

Biimi(Format)

Ogr_No

Char

X(8

2-4

Veritabam Tasar m ve Tan m

Kodu Donem Sube Vize Final Basari Tablo :Ilce

Char Char Char Integer Integer lnteger

X(6 9999-99/9 X(1) 9 9 9

Bilgi Alan Ad (Field Name )


Ilce Kodu I1ce Adi Tablo :Ogretmen

Alan Tipi(Data Type)


Char Char

Biimi(Format)
X(4) X(25)

Bilgi Alan Ad (Field Name )


Sicil No Ogretmen_Adi Ogretmen_Soyadi Unvan

Alan Tipi(Data Tepe)


Char Char Char Char

Burada bilgi girilecek yerlere alan (field) denilmektedir, bilginin e idine alan tipi (data type), ne kadar yer ve nas l girilmesi gerekti i ise biimi (boyut) olarak tan mlanmaktadr. Bu tablolara gerekli di er alanlar da eklenebilir. Alan tipleri : Character, integer, decimal, logical, date ve di erlerdir. Biim (Boyut) ise bir alan n, character (klavyede yer alan btn i aretler harf, say, simge), integer (say), decimal (ondalkl say) gibi tiplerden oluuyorsa o alana girilecek bilginin karakter say s ve girili biimini gsterir.
Ozluk lablosu Ogr_no Ilce kodu
-

Ders l'ablosu Kodu Donemi SicilNo `so la Tablosu

Ogr no Kodu Donemi


Ilce fablosu

Ilce_kodu

Oarctn n Tablosu Sicil No

2-5

Progress Programlarna

Dikkat edilirse be tablo da birbirleriyle ayn olan alanlar iermektedir. Ozluk ile Notlar tablolar , rencinin numaras (ogr_no) ile ba lantl , Ders ile Notlar tablolar da, dersin kodu ve donemi ile ba lantl hale getirilmitir. Ozluk tablosu, Ilce tablosuyla Ilce kodu, Ders tablosu Ogretmen tablosunda Sicil_No bilgi alan yla ili kilendirilmi tir. Balant kurulabilmesi iin alan isimlerinin ayn ve ierdi i bilginin de ayn olmas gerekmektedir. ieri i ayn , fakat alan ismi farkl olduu taktirde balant kurmakta glk ekilmektedir. Ayn olduunda Progress ilikiyi otomatik kuruyor, farkl olduunda bunu 4GL kodlanyla ilikilendirilmesi gerekmektedir. Tablo Olu turma: Artk tablolar ve tablolar oluturan alanlarn tanmlanmasna geilebilir. Data Dictionary ekran nda,
kM Data Dictionary Database E dit Create View Options Tools He
Veritabam (Databases) butonu Tablo (Tables) butonu

Databases
genel

Tables (no tables)

Varolan veritabant (Databases) listesi

Varolan tablolar listesi

Create T abla...

Butonlardan hangisi seili ise (Tables seili) ekran n altnda yer alan (Create Table, Table Properties ve Delete Table) buton da yukar da seili simgelerle ilgili i leri yapar. Tablo butonu seili oldu undan; Yeni

2-6

Veritaban Tasarm ve Tanm

Tablo (Create Table), Tablo zellikleri (Table Properties) ve Tablo sil (Delete Table) butonlar yer al r. Burada yeni tablo butonuna bas lmak suretiyle ozluk tablosunu oluturmaya balanrsa, karnza aadaki ekran kacaktr.

Create Table

Table Name: 11 Arca: ISchema Area

O tionat
Durup File: Table F'ROGRESS Hidden

Labell? D escription: ,

R eplic.ation:: .
.7 7

DE: Link: nla DataServei klan;e: n/a Owner: nia T riciers..

Rec'bid SiZe:

V4dation _I S tring

OK:

reate

Cancel

Help

Bu pencerede sadece Table Name alan na ozluk yazp Ok butonuna baslrsa, tablo olu turulmu olur ve direkt a adaki Bilgi Alan oluturma penceresi gelir. Bu pencereden hemen alanlar tanmlamaya geilebilir veya vazge (Cancel) tu una baslarak klr. imdi vazge butonuna basarak alan olu turma penceresinden kalm. Data Dictionary

2-7

Progress Programlirma

ekran nda yer alan butonlara ilave olarak fields ve indexes butonlar gelmektedir.
frt4 Data Dictionary Database Edit Create View Qptions Tools Help
-n

1).- tabases
ogrenci

Tables
jOzluk

ndex Oluturma butonu

Bilgi Alan (Field) Oluturma butonu

Create Table

Table Properties...

Delete Table

Alan Oluturma: Yukandaki pencerede "Field" butonuna bas lrsa Data Dictionary penceresinde Create Field, Fields Properties ve Delete Field butonlan yer alacaktr. Bu butonlardan Create Field butonuna bas lrsa aadaki Bilgi alan oluturma penceresi gelecektir.

2-8

Veritaban Tasarm

Ve

Tanm

Create Field for Table ozluk


Field Name: Data Type: 1CHA.RACT ER
fional

Copy Field...

Example

17 Column Label: ?
Label.
Inifial Value:

Qrdet 14:11 o
DesciQtion:

1tandatory

r-

reale_

Cancel

Bu pencerede Ozluk tablosunun alanlann oluturmaya balayalm. Yukandaki pencerede; Field Name Ogr_no Data Type Character Format x(8) Label : renci No (daha sonra formlar da kullan lmak zere) Column label : renci No (Listeleme, browse ekranlannda kullanma zere) alanlarn doldurup Create butonuna basarak, adi alan nn tanmna geilebilir veya Ok butonuyla (saklayp) klabilir. Tekrar alan olu turmak iin Create Field butonu kullan lr. Bu ekilde ozluk tablosunun btn alanlar tanmlanr. Ayn ekilde ders, notlar, ilce ve ogretrnen tablolann n ve bu tablolara ait alanlann tan m yaplabilir.

2-9

Pr<wress ProL -amlan a

Veritaban nda bilgiye h zl eri ebilmek iin verilerin sral olmas gerekir. Bu s ralan a da veritaban m indeksleyerek sa lan r. ili kili veritaban nda mutlaka verilerin index'li olmas gerekir. 'indeks olu turma ndex, Data Dictionary penceresinde yer alan "indexes" butonuna basarak olu turulur. Bu butona bas ld anda Data Dictionary penceresi aadaki ekilde grntlenir.
PRI Data Dictionary
Database Edit Create View Options Tools Hdp

Bu pencerede tane liste grntlenir. Veritabanlar (Databases) listesi, tablolar (Tables) listesi ve indeksler (Indexes) listesi yer al r. Burada indexler listesinde varsay lan (default) olarak (varsay lan indeksi olarak) bir indeks yer al r, bu default indeks her tabloda olu turulan kaytlar "Kayt srasnda" kayt numaralarna gre sral ve her kay t numarasna gre kaytlar birer tanedir. nce hangi tabloya index olu turulacaksa tablolar listesinden o tablo seilir. ndex yarat (Create ndex) butonuna bas lr ve aadaki pencere

2-10

Veritaban Tasarnm ve Tan m

ekrana gelir. ncelikle Ozluk tablosunu seerek indeks yarat butonuna baslsn,
Index Name: Area: Schema Are, Description:1

r- Primary 17 Active
Sele t field toadd.to index:. Adi S oyadi S nfi D Tarihi Cinsiyeti lIce_Kodu Harc_Kedi Adres

Unigue

Wordlndex New I ndex's Fields

r- -.4breviated

Create Intlex for Tat le ozluk

lndex Name: logrno_idx D escription:

Primary

17 Active

k-J U t-,ig:ue
New Index's

Abbreviated

Select field In add to index:

1 soyadi
dogum_tarihi d_yeri S inifi cinsiyet

c.

Ascendina C Descendinq

OK

Create

Cancei

H elp

2-1 1

.Progress Programlau a

Bu pencerede; Index_Name Primary Active Unique Ascending/Descending

:Olu turulacak indekse bir isim verilir, :Birincil indeks demektir (bir tabloda bir tane olabilir) :indeksin devaml a k olmas :Seilen alanlar ieren bilginin tek olmas :Artan veya azalan s rada olaca n ifade eder.

Sralamam z rencinin numaras na gre yapaca mza gre soldaki listeden ogr_no zerine ift t klayarak veya "Add" butonuna basarak sadaki listeye tanr. renci numaras her renci iin tek oldu undan Unique i aretlenir, (uygulaman n kullan lmasda ayn numaraya ait bir renci eklenmeye al ldnda Progress otomatik olarak uyanr, bu numaraya ait ba ka kayt var mesaj n ngilizce verecektir). Ok butonuna basarak ozluk tablosunun indeksi olu turulmu olacaktr. Ders tablosunda da kodu ve donemi bilgi alanlar na gre (Primary, unique, active) indeks olu turulur. Notlar tablosuna da ogr no, kodu ve donemi sa tarafa tanmal ve indeks (Primary, unique, active) olu turulmaldr. Burada numaras , kodu ve donemi ayn olan kayt olmamaldr. Bunu rnekle a klayalm; 91050099 nolu renci 1999-00/2 dneminde A308 dersini bir kez alabilir, aada iki kez alm grnyor, Ogr No 91050099 91050099 92050002 Kodu Donemi A308 1999-00/2 A308 1999-00/2 A308 1999-00/2

indeks tan mma gre numaras , kodu ve dnemi ayn olan iki kayt olamaz, burada ilk iki kayt ayn , indeks oluturdurked unique

2-12

Veritabam Tasar m ve Tan m

i aretlenirse ayn olan kaytlar veritaban na kaydedilemez, ama i aretlenmezse benzeri iki kayd n olmas muhtemeldir. Ogretmen tablosu Sicil No alan na gre (Primary, unique), lce tablosu da Ilee_kodutna gre (Primary, unique) olacak ekilde indekslenmelidir. Tablolar aras nda iliki kurulabilmesi iin tablolann ayn alanlara gre indeksli olmas yararl olacak ve h zl eriim salayacaktr. Buraya kadar yap lanlar bir veritaban oluturma, veritaban na ait tablolar, bilgi alanlarn ve indeksleri olu turma aamasyd. Bu ilemler bir kez yapld ve artk oluturulan veritabanna bilgilerin girilmesi ilemleri kalmtr. Progress de veri giri i, gncelleme ve veri silme i lemleri iin Veri ileme Blmne bak nz.

2-13

Pro.,:n -ess Prograrnlarna

PROGRESS'llE VERI LEME Progress de tablolara veri girme, varolan veriyi gncelleme ve veri silme i lemleri 3 deiik yolla yapmak mmkndr. -SQL -Procedurc Editor (PE) -Kullanc Ara Yz (UIB ) UIB deki i lemler asl nda PE deki komutlarla yap lmaktadr. Bu sebeple UIB ilemlerini tekrarlamaya gerek yoktur (Bkz: UIB blm). SQL ile veri ileme SQL komutlar Progress'tc komutlann yaz laca yer olan Procedure Editor'de yazlarak kullanlr. SQL de ilk kez bir kay t oluturarak veri girileeekse bu i lemi insert komutu ile yap lmaktadr. a) Kayt Girme: INSERT INTO <tablo-adi> [(alan-adil [,alan-ad 2...])] VALUES (de eri [,de er2,...]) Bu ekilde uygulanan komut neticesinde her defas nda bir kayt girmeye yarar. Alan adlar yazlmad takdirde Values dan sonraki yaz larak deerler tablodaki s rada yaz lmak zorundadr. zlk tablosunda yer almayan a adaki kaytlar insert komutu ile nas l girileceini yazalm, Numaras 99050070 92050065 94050081 Ad Ahmet Tolga Berfin Soyad Can Demircan Demircan Sn f 1 4 3 Doum Tarihi Cinsiyeti 01/08/1975 E E 05/12/1972 30/08/1988 K

2- l 4

Veritabam Tasar m ve Tan m

rnek 1:
Procedure Editor - Untitledl
File Edil Search Bubi Corrpile Tods Options Help
TIMPT TMO ozluk Cogr_no,adi,soyadi,sinifi,dtarihi,cinsiyeti)

VALUES ("99050070","Ahzet","Can" , /'.',"E").

Procedure Editor'de yaz larak F2 tuuna baslarak bu kamuda bir kayt girilmi oldu. Bu ilemi dier iki kayt iinde tekrar yazmak gereklidir. rnek 2: Burada alan adlarn yazmadan yeni kayt girilecekse, ozluk tablosundaki bilgi alan srasna gre btn alanlarn deerlerinin girilmesi gerekmektedir. E er bir kayt eklenecek ve baz bilgiler girilmeyecekse o alanlar mutlaka belirtilmelidir. Bu mekte hem btn bilgileri girilen veya baz alanlar (adres bilgisi) girilmeyen eklinde iki durumda yazlabilir;
Procedure Editor - Untitiedi
Sile Edit Search Buffer ComPle Too s Ptlons Heip_NOOM.
INSERT nn ozluk VALUES ("92050065","Tolga","Demircan",4,O5/1Z/172,"E", "3800",YES,"Lale sk.","Dikmen","Ahkara") * Tan 4 / INSERT INTO ozluk VALUES ("92050065","Tolga","Deuircan",4,U/172 "3800",YES,"","",""} ",

2-15

Progress Progran lama

Dikkat edilirse komutlarnn z Procedure Editor penceresinde yazlmaktadr. Bu noktadan sonra yaz lacak komutlar m z aynen yukarda olduu gibi Procedure Editor de yazmal sruz. rnek 3: Bu rnekte bilinli olarak baz alanlara bilgileri girerek yeni kay t oluturalm. Girilmeyen bilgiler ise daha sonra bilginin gncellenmesi (update edilmesi) olacaktr. Sadece numara, ad ve soyad n tabloya kaydedecek sql komutu, INSERT INTO ozluk (Ogr_No,adi,soyadi) VALUES ("94050081","Berfin","Demircan") eklinde olacaktr. b) Kayt Gncelleme (Update): Tabloda var olan bir kayd dzeltme (gncelleme) yap labilmesi iin Update komutundan yararlan hr. UPDATE <tablo-ad> SET alan-ad l = deerl [,alan-ad2 = deer2, [WHERE koul]

Burada Where ifadesi kullan lmaz ise tablodaki btn kaytlar gncellenir, ko ul yazlrsa o koula uygun kaytlar gncellenir. Ko ul ksmna dikkat edilmesi gereklidir, nk istenmeyen sonular dourabilir. Bir kaytta dzeltme yapaca nz yere btn kaytlarm ieriklerini de itirebilirsiniz. rnek 1: Tablomuzdaki Berfin Demircan' n doum tarihi ve cinsiyetini kayt girerken unutulmutu, imdi bu bilgilerini de girelim. Bu dzeltme (gncelleme) i lemini koul ksmn koymadan yazarsak, UPDATE ozluk SET cinsiyeti = "K",d_tarihi = date("30/08/1999").

2-16

Veritaban Tasarm ve 'Fan rn

eklinde olacakt r. Bu yaz m yanl al acak ve ozluk tablosundaki btn rencilerin cinsiyetini "K" ve do um tarihini de "30/08/1999" olarak deitirecektir. Bu komut al masna ramen yanl sonular verecektir ve kesinlikle istenmeyen bir durumdur. Bu gncellemenin dorusu aadaki gibi olacakt r. UPDATE ozluk SET cinsiyeti = "K",d_tarihi = date("30/08/1999") WHERE adi = "Berfn" and soyadi = "Demircan". c) Kayt Silme: Tabloda bulanan kaytlar silmek iin delete komutundan yararlan lr. Burada silmekten anla lmas gereken, o kaydn tamamen ortadan kaldrlmas, yoksa bilgi alanlarnn ierisindeki bilginin silinmesi deildir. Delete ifadesinde yer alan Where ifadesi kullan lmaz ise tablodaki btn kaytlar silinir. istenilen kay tlarn silinmesi iin, where ifadesi ile ko ul kullanlarak kayt silinir. Update deyiminde olduu gibi where ifadesi nemlidir. Bu silme i leminin geri dn Progress veri tabannda mmkn deildir. DELETE FROM <tablo-ad > [WHERE koul] rnek 1: Ozluk tablosunda yer alan 94050081 numaral renciyi silelim, DELETE FROM ozluk WHERE Ogr_No = "94050081" rnek 2: Ozluk tablosundaki ad Hlya ve snf 4 olan kaytlarn silinmesi iin, DELETE FROM ozluk WHERE adi = "Hlya" AND sinifi = 4 komutu ile verilen artlara uygun ka kay t varsa tm silinmi olur.

2-17

P rogre ss P ro gram la rna

4GL ile veri ileme: Progress'e ait komutlar ile veri i leme i lemleri yaplmaktadr. a) Kayt Girme: Progress'e ait komutlarla veri giri i iki admla yaplmaktadr. lk adm tabloya bo bir kayt amak, ikinci ad mda veriler tabloya alan adlar ve deerler yazlarak kaydedilir. ilk ad m yaplrsa tabloya bo kayt alr, fakat ikinci adm yap lmaz ise tabloda bir bo kayt kalr. CREATE <tablo-ad>. alan-adil = deerl. [alan-ad2 = deer2. ...] rnek 1: Yukardaki rnekler burada girilseydi, CREATE ozlk . Ozluk.Ogr_No = "99050070". Ozluk.adi = "Ahmet". Ozluk.soyadi = "Can". Ozluk.sinifi = 1. Ozluk.d_tarihi = date("01/08/1975"). Ozluk.cinsiyeti Create ile bo kayt oluturulmaz da di er ilemler yaplrsa, Ozluk.Ogr_No Ozluk.adi Ozluk.soyadi Ozluk.sinif Ozluk.d tarihi Ozluk.cinsiyeti = "99050070". = "Ahmet". = "Can". = 1. = date("01/08/1975"). = "E".

o anda tabloda hangi kayt zerindeyseniz o kayd gncellemi olursunuz.

2-18

Veritabam Tasar m ve Tan m

h) Kayt Gncelleme:

Hangi kayt gncellenecek ise ncelikle o kayda fnd deyimi ile konumlanmalsmz (Bkz Find deyimi). Varolan kaytlarn nceki de erlerini grerek zerinde de iiklik yaplabilir veya grmeden gncellenebilir. UPDATE tablo-ad .alan-ad l [tablo-ad.alan-ad2 ...J. eklinde nceki de erler nce ekranda grntlenir, istenirse gncellenir. rnek 1: FIND FIRST ozluk WHERE ozluk.Ogr_No = "99050070". IF AVAILABLE ozluk THEN UPDATE ozluk.adi ozluk.soyadi ozluk.cinsiyeti. Ekrana nceki bilgiler grntlenir, klavyeden yeni bilgiler girilerek otomatik dzeltme yap lm olur. rnek 2: Grmeden gncelleme yapmak istenirse, FIND FIRST ozluk WHERE ozluk.Ogr_No = "99050070". IF AVAILABLE ozluk THEN DO: ozluk.adi = "Ahmet Ali". Ozluk.soyadi = "Cansever". END. eklinde F2 (RUN) tuuna baslarak uygulama al tnlr, gncelleme yaplm olur. c) Kayt Silme: Kayt silinmesi iin delete komutundan yararlan lr. ncelikle silinecek kayt find deyimi ile bulunmal ve konumlanlmaldr (Bkz. Find deyimi). Konumlanlmaz ise delete komutu o anda hangi kayt zerindeyse (en son uygulanan fnd komutu hangi kaytta ise) o kayd silecektir. E er 2-19

Progrcss Prograrnlama

tabloda bulunan btn kay tlar silinecekse bu bir for each dngs iine yaz lacak, delete komutu ile mmkn olacakt r. DELETE <tablo-ad >. rnek 1: FIND FIRST ozluk WHERE ozluk.Ogr_No = "99050070". IF AVAILABLE ozluk TREN DELETE ozluk. 99050070 'nolu renci tabloda var ise silinmi olacak. rnek 2: FIND FIRST ozluk WHERE ozluk.Ogr_No = "990555580". 1F AVAILABLE ozluk THEN DELETE ozluk. ELSE MESSAGE "Byle Bir kay t Bulunamad.". rnek 3: FOR EACH ozluk: DELETE ozluk. END. Ozluk tablosundaki kaytlarn tamam silinmi olacakt r. rnek 4: Ozluk tablosundaki erkek renciler silinmek istenirse FOR EACH ozluk WHERE cinsiyeti = "E": DELETE ozluk. END.

4-Kullan c ara yz (UIB )

UIB deki i lemler aslnda PE deki komutlarla yap lmaktadr. Bu sebeple UIB i lemlerini tekrarlamaya gerek yoktur (Bkz: UIB blm).

2-20

4G1, Komutlar

2- 4GL KOMUTLARI Programlama dillerinin komutlannn kendine zg kullanmlar vardr. Progress'te de programlama diline verilen isim "4GL" dir. 4GL komutlan iki yerde kullan labilmektedir. Birincisi Procedure Editor (PE), di eri ise nesne tabanl olan User Interface Builder (UIB, kullan c ara yz oluturma) ksmdr. 4GL komutlann progress'in kod editr olan Procedure Editor de kullanmaya ba layalm. Daha sonra bu komutlann ayns UIB da kullamlacaktr. Procedure Editor (PE) desktop'da ikinci simge idi. Bu simgeye (butona) bas lrsa PE alacaktr. eitli programlama dillerinde olduu gibi Progress'te de baz yazm kurallan vardr. rnein Pascal da her satr mutlaka ";" ile biter, dbase ve basic de her komut tek sat ra yazlabilir, veya Basic de tek sat rda yazlacaksa her komut aras na ";" konulmaldr gibi. Progress'te her komut veya i lem sonunda "." (nokta) konulmal , noktadan sonra yazmaya devam edilebilir, fakat grnt a sndan alt satrlarda yazmaya devam edilir. Tabloda bilgi alanlan yazlrken bilgi alann (field'in) hangi tabloya ait olduu da tablo ile alan arasna "." (nokta) konularak belirtilir. rnek; ogr no bilgi alan iin, hangi tabloya ait ise, ozluk.ogr_no veya notlar.ogr_no eklinde belirtilmelidir. Bu belirtilmedi i taktirde bazen bu bilgi alannn hangi tabloya ait olduuna dair karklk kar ve Progress tarafindan "yazm hatas" olarak bildirilir. Progress'te kullan lan ifadelerde ksaltmalar yap labilmektedir. Define yerine def, variable yerine var gibi. Bu k saltmalarda dikkat edilmesi gereken, ayn harf saysna ait baka bir ifade olmamal dr. rnein; Kemal ve Kemalettin ad nda iki kii olduunu dnlrse, Burada ksaltma olarak Kem kullan lamaz, nk iki isimde Kem ile balyor. Gnlk hayatta baz somut kavramlann veya maddelerin bir yerlerde tutulmas gerekir. Musluktan akan suyu bir bardakta tutmak, bir boyay boya kutusuna koymak, bir evrak bir klasrde tutmak gibi bir ok rnek s ralanabilir. Burada su iin su kovas , boya iin boya kovas gerekmektedir. Demek ki, bir kap var birde iine konulan madde var.

3-1

Progress Program lama

Bilgisayar ortam nda da i ler bundan farkl deildir. Kap'a kar lk deiken, iine konulan maddeye kar lkta deer vardr. Yazm kural olarak bir de iken iine bir deer atanacaksa, deiken = deer eklinde yaz lmaldr. deer = de iken eklinde bir yazm olamaz (kovaya su konulacaksa, suyun zerine kovay geirerek suyu kovaya koyabilir misiniz ?) deikenimiz adi olsun, deerimizde Yahya olsun, bu de eri bu deikenin iine koymak i lemi, adi = "Yahya" eklinde olacaktr (trnak " " kullanmna daha sonra de inilecektir). Bilgilerin (de erlerin) tutulmas iki yolla mmkndr. Birincisi tabloda (alanlar ile), ikincisi de bilgisayann hafzasnda (deikenler ile) tutulabilir, tabloda bilgiler kal c olurken, bilgisayann hafzasnda ise program sona erince (program durdu unda) bilgiler kaybolur. Kal c tablolar olduu gibi hafza tablolan da vard r. Bunlara geici tablo (temptable) denilmektedir. Her nas l olursa olsun bilginin tutulabilmesi iin, de ikenin veya geici tablolann (temp table) tan ml olmas gereklidir. Deiken Tipleri ve Tanmlama: Verilerin bilgisayann hafzasnda tutulabilmesi iin ncelikle yerinin tutulaca deikeni tanmlamak gerekir. Bu da, DEFINE VARIABLE LIKE "alan"> deiken_ad AS <"deiken tipi" I Extent n Format Label Init eklinde bir ifade ile tanmlanr. Dei ken_ad : bilginin tutulaca hafza deikeninin ad,

3-2

3 C,

4GI , K o nutlan

De i ken Ti i zellikleri:
Dei ken Tipi A klama Harfler, rakamlar ve zel karakterlerden olu ur -ii- rakamlardan oluan tam say lar Ilk de er ,, hibir ey 0 Varsay lan Display biimi (Format verilmez ise) X(8) 8 karakter ->,>,9 En Fazla Uzunluk ~32000 karakter

Character

Integer

10 hane 50 hane (40 hane tam, 10 hane kesir k sm) 10 hane gg/aa/yyyy

Decimal

+/- Ondal kl say lar

-,9,99

Date Logical

Tarih bilgisi rakamlardan olu ur Mant ksal veri yes/no,true/false

? hibir ey No

99/99/99 gg/aa/yy Yes/no

LIKE Alan adi. alan ismi), Extent n

: ayn tipte olan baka bir tablonun alan ismi (tablo LIKE ozluk.ogr_no gibi : dizi tanmnda (n tamsay olmaldr), extent 5 gibi, n=3, extent n eklinde kullanlamaz : girilerek bilginin biimini/uzunlu u : deikenin ekranda grnecek etiketini : deikenin ilk deerini atamada kullan lr

Format Label Init

rnek 1: DEF VAR xadi AS CHAR. xadi deikeni tanmlanm olup, iinde hibir de er yer almamaktadr. rnek 2: DEF VAR xadi AS CHAR INIT "Yahya". xadi deikeni tanmlanm olup, ilk deer olarak "Yahya" de eri atanmtr. rnek 3: DEF VAR xadi AS CHAR FORMAT "x(5)" INIT "Ethem". xadi deikeni tanmlanm olup, ilk deer olarak "Ethem" de eri atanm tr, bu deikenin uzunluu 5 karakter olarak belirtilmi tir.

3-3

Progress Progmmlarna

rnek 4: DEF VAR xadi AS CHAR FORMAT "x(5)" INIT "Ethem" LABEL "Adm z:". xadi dei keni tan mlanm olup, ilk deer olarak "Ethem" de eri atanm t r, bu de i kenin uzunlu u 5 karakter olarak belirtilmi tir, di.splay deyimi ile grntleme yap lrsa bu de ikenin etiketi "Adnz:" olarak belirtilmi tir. rnek 5: DEF VAR xadi LIKE ozluk.adi. xara, ozluk.adi alan n n her turlu zelli ini alr (format, label, init zelliklerini kapsar). rnek 6: DEF VAR xsayi AS INT EXTENT 3. Burada xsayi[1],xsayi[2],xsayi[3] eklinde bir dizi de iken oluturulur. Bu de i kenlerin ieri i0 (s firdr). rnek 7: DEE VAR xsayi AS int EXTENT 3 INIT [10,25,30]. lk deer olarak srayla, xsayi[1] = 10 , xsayi[2] = 25 , xsayi[3] = 30 atamas yaplm olur. Geici Tablo (Temp-Table) DEFINE TEMP-TABLE temp-table-adi [LIKE table-name] [FIELD field-name {{AS data-typc} {LIKE field} }]... [INDEX index-name [IS [UNIQUE] [PRIMARY] [WORD-INDEX] ] {index-field [ASCENDINGDESCENDING]},..]... eklinde tanm yap lmal dr. Geici tablolarda i lemler yeritabam tablolarndaki gibi aynen geerlidir, sadece bilgiler program sona girdiinde kaybolur ve bu tablolar zerinde SQL komutlar geerli deildir rnek 1: DEF TEMP-TABLE xozluk FIELDS ogr_no AS CHAR FORMAT "x(8)"

3-4

4GT, Komutlan

FIELDS adi AS CIIAR FORMAT "x(12)" FIELDS soyadi LIKE ozluk.soyadi. kullanm : FOR EACH xozluk: MESSAGE ogr_no adi soyadi. END. eklindedir, ama u anda xozluk tablosunda hi kay t olmad iin rnek kullammda ekrana bir ey gelmeyecektir. Daha ncede bahsedildi i gibi deikenler extent ifadesiyle dizi de iken olarak tanmlanabilmekteydi. Fakat bu tan mlamada dizinin ka elemanl olaca mutlaka say olarak belirtilmekteydi. Ka de ere sahip olacan nceden kestirilemeyen veriler oldu u zaman de iken kullamlamayaeaktr, bunun yerine geici tablo kullan lmaldr. rne in klavyeden say s belirli olmayan de erler girilecekse buna en uygun olan geici tablo (temp-table) kullanmakt r. rnek 2: DEF TEMP-TABLE xhafza FIELDS ogr_no AS CHAR FIELDS yasi AS int INDEX numara IS UNIQUE ogr_no DESC. xhafiza geici tablosu iki alandan olu makta, ogr_no alanna gre azalan srada index olu turulmakta ve bu indexsin ad da "numara" olarak belirtilmitir. IS UNIQUE ifadesiyle ogr_no ya girilecek renci numaralann n tek olmas salanr. Geici tabloda verilerle i lem "Veri ileme" blmnde gerek tablolar zerinde i lemler ile ayn dr. Program durduunda veriler kaybolacakt r.. Operatrler: Saysal ( +, /, * ) : Bu operatrler matematiksel i lemlerde kullanlmaktadr. Bunlardan sadece "+" operatr string ifadelerin bir birine eklenmesinde

3-5

Progress Programlama

kullan lmaktad r. kullamlamazlar.

Di erleri "-,/,*" operatrleri string ifadelerde

rnek 1: DEF VAR sayi as int. Sayi = 3 + 5. Sayi = sayi + 1. rnek 2: DEF VAR xara AS CHAR. xara = "Sena" + "Demircan". Kyaslama ( <, >. <=, >=, Kktr Byktr Eit <= Kk e it Byk e it Farkl

Deiken veya de erlerin bir biriyle k yaslama yaplaca zaman kullanl r. Kyaslama operatrlerinin sa nda veya solunda de iken ile deerler kyaslanabilir. Ayr ca "=" operatr bir de iken veya bilgi alanna deer veya de ikenin ieri ini atama da kullanlr. rnek 1: DEF VAR sayi AS INT IN1T 6. IF sayi >= 5 THEN MESSAGE "Sayi de ikeni 5 den byktr.". IF 25 >= sayi THEN MESSAGE "Sayi de ikeni 25 den kktr.". Burada kk e it "<=" ve byk e it ">=" operatrleri kullan lrken nce kk/byk daha sonra e it iareti yaz lr. yle bir yaz m IF sayi => 5 THEN hatal dr.

3-6

4GL Kornutlan

Balalar: NOT olumsuzluk AND ve veya OR rnek 1: DEF VAR sayi AS INT INIT 6. DEF VAR toplam AS INT INIT 3. DEF VAR xadi AS CHAR. IF sayi > 3 AND toplam = 3 THEN MESSAGE "Koul doru". IF sayi > 3 OR xadi = "Yahya" THEN MESSAGE "Koul Doru". rnek 2: DEF VAR sayi AS INT INIT 6. DEF VAR toplam AS INT INIT 3. IF sayi > 2 OR sayi < 7 AND toplam = 2 THEN MESSAGE "Ko ul Doru". ELSE MESSAGE "Ko ul Yanl". F2 ile ahtnlrsa "Ko ul Doru" ifadesi kar. Bu rnek aadaki gibi yazlrsa farkl sonu ortaya kmaktadr. rnek 3: DEF VAR sayi AS INT INIT 6. DEF VAR toplam AS INT INIT 3. IF (sayi > 2 OR sayi < 7) AND toplam = 2 THEN MESSAGE "Ko ul Doru". ELSE MESSAGE "Ko ul Yanl". Bu ekilde altrlrsa "Ko ul Yanl" ifadesi grnecektir. Burada rnek-2 de koulda ncelik sras AND balamda olduu iin parantezlerle ifadeleri yazmakta byk yarar sa layacak ve do ru sonu alnacaktr.

3-7

Progress Programiama

Grntleme Konutlar Message komutu :

MESSAGE "mesaj" [ V1EW-AS ALERT-BOX < ALERT-TYPE>] [BUTTONS < BUTTON-SET> [TITLE "ba lk"]] [UPDATE degisken]. ALERT-TYPE: Ekrana gelecek pencerede yer alacak simge iin (QUESTIONS, WARNING, ERROR, INFORMATION, MESSAGE ) birisi seilebilir. BUTTON-SET: Ekrana gelecek pencereden, mant ksal bir cevap alnacaksa (YES-NO-CANCEL, YES-NO) kullan lr. UPDATE : Bu deyim ile e er buttons pararnetresi kullaml rsa hangi butona bas ld sonucunun tutulaca deikeni belirtir.

Mesaj komutunda yaz lan de iken veya bilgi alanlar n n format, label gibi zellikleri grntlenmez. rnek 1: MESSAGE "merhaba astronomlar". rnek 2: MESSAGE "renci Numaras " ozluk.ogr_no. rnek 2'de ozluk tablosunun ogrno bilgi alan n grntlenmeye al lmaktad r. Bu komutun do ru sonu verebilmesi iin, tabloda ya fnd deyimi ile bir kayt bulunur veya for each dngstiyle ozluk tablosu taranmaldr, aksi halde rnek 2 hata F2'ye bas ldnda alma hatas verecektir. Kayt bulma Find ve tablo sorgulama dngsii olan for each komutlan daha sonra anlat lacaktr. Message Komutu, Procedure editor de (PE) kulland rsa, mesaj PE penceresinin alt nda grntlenir, UIB' de kullan lrsa ekranda ba msz

3-8

4GI, Komltlan

pencere olarak (a adaki rnekte olduu gibi) grntlenir. Tablodaki veriler grntleneeekse en az bir kay t olmas gerekir. rnek 3: MESSAGE "merhaba astronomlar" VIEW-AS ALERT-BOX ERROR. Bu rnek PE de yaz larak altnlrsa ekranda bamsz pencere olarak grntlenir. Title ksm yazlmaz ise alert-box alr. Alert-box'a "error" yaz ld iin title de ayn olur. Yazlan mesaj burada grntlenir.

frierhba astronomlar

Alert-box da "error" yaz ld iin bu simge gelmektedir. rnek 4: MESSAGE "Devam edilsin mi?"

VIEW-AS ALERT-BOX WARNING BUTTONS YES-NO TITLE "Uyan".

D e.,am edilsin mi?

Evet

Hay r

rnek 4 de ise, kullancya soru sorularak, iki butondan birine basmas salanr. Hangi buton bast ise belirli de ildir, nk bir de ikene atlmam tr. Bu rnek aadaki gibi yaz lmas gerekir.

3-9

Progress Prograrniama

rnek 5: DEF VAR xcevap AS LOGICAL. MESSAGE "Devam edilsin mi?" VIEW-AS ALERT-BOX WARNING BUTTONS YES-NO TITLE "Uyan" UPDATE xcevap. MESSAGE "Bas lan d me "xcevap. Bu rnekte ilk sat rda deiken tanmlanarak, hangi butona bas laca bilgisi tutulur, ikinci komut ile mesaj ekrana getirilir ve kullan c "Evet" yada "Hayr" butonuna basarak pencereyi kapat r ve bast dme artk xcevap deikeni iindedir. Bunu renmek iinde nc satrda yazlar ifadeyle renilebilir. Burada dikkat edilmesi gereken bir hususta, message komutu sonunda BUTTONS YES-NO ifadesi yazlmasna karn ekrana "Evet" ve "Hayr" ifadeleri kmaktadr. Bu sonu tamamen bilgisayarnza kurulu olan iletim sisteminin diliyle ilgilidir. E er ki bilgisayannzda ngilizce Windows 95/98 kurulu olas yd iletiler ngilizce olacakt. Display komuta DISPLAY [ "mesaj 1" "mesaj 2" ... ] [ deikenl deiken2 ...] [ alanl alan2

Display komutu mesaj komutundan farkl dr. Mesaj komutunda sadece deiken veya bilgi alanlarnn iindeki bilgiler formats z ve etiketsiz grntlenirken, display komutu bunun tam aksi ynde davranr. Ekrana, deikenin veya bilgi alan nm zelliklerine gre grntlenmesini sa lar. Display komutuyla bir tablodan kayt grntlenecekse, mutlaka find veya for each deyimleri ile tablodan kay t taramas yaplmaldr, aksi halde program al madan hata ile karlalr. rnek 1: DISPLAY "Selam" sayac.

3-10

4GL Komutlar

rnek 2: DISPLAY ozluk.ogr_no. Bu rnek almayacak ve hata mesaj verecektir. Bu rnek a adaki gibi olmaldr. rnek 3: FOR EACH ozluk: DISPLAY ozluk.ogr_no. END. arth Deyimler: Her programda (insann hayatnda) ka nlmaz olan artl deyimlerdir. Programclkta en nemli konu belirli ko ul veya koullara gre programn devamnn nasl olacana karar verilir. Bunun iinde mutlaka artl (koullu) deyimler kullan lr. Bu koulda mutlaka en az iki de iken veya bilgi kyaslama operatrleriyle kar latrlr. Kyaslama operatrlerinin sanda ve solundaki ifadeler mutlaka ayn veri tipinde ve biiminde olmaldr. rnein bir eitliin solundaki deer ile sandaki deerin tipi ve biimi (format) ayn olmad taktirde iki trl hata ile karlalr. Eer veri tipleri ayn deilse program al madan hata verecektir, tip ayn olup biimi (format) ayn deilse program alacak, fakat do ru sonucu vermeyecektir. Ayrntl rnekler iin 5. Konu olan UIB blmnde, Rapor Hazrlama alt blmnde rnek 3 ve 4'de anlat lmtr. If deyimi: IF koul THEN { blok I ifade } [ ELSE { blok I ifade } ] If deyimi mantksal bir karlatrma yaparak, karlatrma sonucu ko ul doru ise then ifadesinden sonraki komutlann, ko ul doru deilse else ifadesinden sonraki kornutlann yap lmasn salar. Blok kullanmadan tek bir komut veya ifade kullan lrsa,

3-11

Progress Programlar m

IF koul THEN ifade] . ELSE ifade2. rnek 1: IF sayac = 1 THEN xara = "ilk". ELSE xara = "son". Blok kullanlrsa, IF koul THEN blokl ELSE blok2 END. rnek 2: IF sayac = 1 TREN DO: xara = "ilk". xsayi = 1. END. ELSE DO: xara = "son". END. Blok ifadesinden kas t, eer birden fazla deyim (komut, ifade) kullanlacaksa bunlann DO: END. Blo u iinde yazlmas gerekmektedir. Aksi durumda hatal sonularla veya program n hata vermesi durumlan meydana gelecektir.. rnek 2'de ELSE ifadesinde tek i lem yapld iin do: end. konulmasna gerek yoktur. Koul doru ise komutl (veya blokl), yanl ise komut2 (veya blok2) uygulanr. Eer, ko ul doru olmadnda bir ey yaplmas istenmiyorsa ELSE yazlmayabilir;

3-12

4GL Komutlan

IF koul THEN komutl. veya IF ko ul THEN blokl koul doru ise komutl veya blokl uygulanr. rnek 3: IF xadi = "Sena" THEN xara = ozluk.adi + "Demircan". rnek 4: IF xadi = "Sena" THEN DO: xara = ozluk.adi + "Demircan". MESSAGE xara. END. MESSAGE "buras her zaman ekrana gelir". rnek 5: IF ozluk.adi = "Sena" THEN DO: IF ozluk.sinifi = 3 AND ozluk.cinsiyeti = "K" THEN DO: MESSAGE ozluk.adi ozluk.soyadi "Astronomdur". xara = ozluk.og_no. END. END. ELSE MESSAGE "Sena adnda bir kayt yok". Case deyimi: Case deyimi if deyimine benzerse de, bu deyimde ELSE k smnn olmamas ve her WHEN ifadeleri eit anlamnda kullanlmaktadr. WHEN ifadeleri sadece OR ba lacyla birletirilebilmektedir.

3-13

Progress Programlama

CASE deiken: WHEN de eri [OR WHEN deger2].. THEN { blok / ifade} } [OTHERWISE { blok / ifade }] END CASE. rnek 1: DEF VAR sayac AS INT. DEF VAR xara AS CHAR. CASE sayac: WHEN 1 THEN MESSAGE "B R". WHEN 2 THEN MESSAGE "KI". WHEN 3 THEN DO: MESSAGE "". xara = END. WHEN 4 OR WHEN 5 THEN MESSAGE "DRT veya BE ". OTHERWISE MESSAGE "sayacn iinde 1, 2, 3, 4 ve 5 yokmu ". END CASE. Case deyiminde sayac de ikeninin deeri ne ise, o ierie uyan bir i lem veya blok iindeki i lemleri yerine getirir. Sayac = 2 olursa ekrana " KI" iletisini verecek, e er sayac = 3 ise ekrana "" iletisini ve xara deikenine (hilik) atamas yaplacaktr (sayac=3 de DO: END. blo u iindeki ifadeler i lem grecektir). Bu rnei (rnek l'i) if deyimiyle yaz lrsa, yle olmalyd, rnek 2: DEF VAR sayac AS INT. DEF VAR xara AS CHAR. IF sayac = 1 THEN MESSAGE "B R". ELSE IF sayac = 2 THEN MESSAGE "IKI". ELSE IF sayac = 3 THEN

3-14

4GI Ko nutlan

DO: MESSAGE "". xara = "". END. ELSE IF sayac = 4 OR sayac = 5 THEN MESSAGE "DRT veya BE ". ELSE MESSAGE "sayac n iinde 1, 2, 3, 4 ve 5 yokmu ". Dikkat edilirse, bu iki rnekte, Case deyiminin kullan ld rnek 1 daha sade ve anlalr olmutur. rnek 3: CASE ozluk.cinsiyeti: WHEN "K" THEN MESSAGE "KIZ". WHEN "E" THEN MESSAGE "ERKEK". END CASE. Eer deiken veya bilgi alannn iindeki bilgi karakter ise WHEN den sonda yazlacak ifade mutlaka `"' (trnak) iinde yazlmaldr.

Do To deyimi: DO deiken = degerl TO deger2 [By deger3] :

--I> END. Burada degisken, degerl den ba layarak deger2'ye, deger3 art m miktar kadar DO End. aras nda dng alacaktr. Artm miktan verilmezse (by deger3 yaz lmazsa) art m miktan otomatik 1 olacaktr. Artm miktar negatif olabilmektedir, ama degerl <deger2 olmal dr, degerl>deger2 olursa dng hi almayacaktr. Burada degerl, deger2 ifadeleri de birer degisken olabilir, ama art m miktan deiken deil sabit say olmaldr.

3-15

Progrcss -Prograrnlatua

rnek 1: DEF VAR sayac AS INT. DO sayac = 1 TO 10: MESSAGE sayac ".turdasnz". END. rnek 2: DEF VAR sayac AS INT. DO sayac = 10 TO 1 BY -1: MESSAGE sayac ".turdas nz". END. rnek 3: DEF VAR sayac AS INT. DO sayac = 2 TO 20 BY 2: MESSAGE sayac ".turdas nz". END. Do While deyimi:
ii>

DO WHILE ko ul:

END. Koul saland, doru olduu (koul sonucu true oldu u) srece dng devam edecektir. rnek 1: DO WHILE TRUE: MESSAGE "Selam". END. Burada koul, true yazlm ve dng sonsuz yani hi durmayacak ve "Selam" mesaj n program kesilinceye kadar yazacakt r. alan program yarda kesmek iin klavyeden Ctrl+C tu lanna baslmaldr.

3-16

4GL Komutlar

rnek 2: DEF VAR denet AS INT. DO WHILE denet<=10: denet = denet + 1. MESSAGE denet. END. denet'in deeri 10'dan kk eit olduu srece dng al sn demektir. Ekrana yazaca deer en son 11 olacaktr. Repeat deyimi : REPEAT [ deiken = deeri TO deer2 [ BY de er3 ]] [WHILE ko ul ] : END. Repeat deyiminin 3 kullan m mevcuttur. ki kullanmyla Do while deyimine bezemektedir. rnek 1: DEF VAR toplam AS INT. REPEAT: toplam = toplam + 1. MESSAGE toplam END. Burada sonsuz bir dng meydana gelmi tir. Srekli artan bir toplam deeri ve onu ekrana gsteren bir program oldu. Bu programa durdurmak iin program krmak (Ctrl+C) gereklidir. Repeat deyiminin sonunun bilinmedii durumlarda kullanlmas gerektii zamanlarda vardr. Bir text dosyadan bilgilerin okunmas gerektiinde bu deyim kullanlr. Progress text dosyada okunacak satr kalmad zaman bu dngy sonlandrr. rnek 2: DEF VAR i AS INT. REPEAT i = 1 TO 10: MESSAGE i. END.

3-17

Progress Programlama

rnek 3: DEF VAR i AS INT. REPEAT i = 1 TO 10 BY 2: MESSAGE i. END. rnek 4: DEF VAR i AS INT. REPEAT i = 10 TO O BY -1 MESSAGE i. END. rnek 5: DEF VAR sayac AS INT. REPEAT WHILE sayac<=10: sayac = sayac + 1. MESSAGE sayac. END. Repeat deyiminin bu kullan m Do while deyimi ile ayn ekilde almaktadr. For each deyimi: Progress de en ok kullan lacak dng olan for each, tablolar zerinde gerekleir. FOR [EACH /FIRST/LAST] < Tablo-Ad > [ WHERE koullar ] [by
4" End.

Tablolar zerinde kaytlar sorgulama amac yla kullanlr. Sorgu srasnda, kaytlar zerinde gncelleme, grntleme ve silme i lemleri iin kullanlabilir. By alan_adi ifadesi de sorgulamay , istediimiz alana gre s ralayabiliriz, varsaylan olarak primary index'e gre s raldr.

3-18

4GI. Kornutlan

rnek 1: FOR EACH ozluk: DISPLAY adi soyadi cinsiyeti. END. Bu rnekte ozluk tablosundaki btn kay tlar batan balayarak (primary index ' e gre) tamam ekrana grntlenecektir. rnek 2: FOR EACH ozluk WHERE cinsiyeti = "E" BY soyadi: MESSAGE adi soyadi. END. Bu rnekte Erkek rencilerin ad ve soyadn, soyad alanna gre alfabetik olarak grntlenmi tir. rnek 3: FOR EACH ozluk WHERE cinsiyeti = "E" AND adi = "YAHYA": DISPLAY adi soyadi d tarihi. END. Cinsiyeti erkek ve ad Yahya olan btn kay tlarn adm, soyadn ve doum tarihlerini grntler. For each ifadesi tek tabloyu sorgulamada veya ili kili iki (veya daha fazla) tabloyu beraber sorgulamada kullan labilir. Ozluk tablosunda yer alan rencilerin notlarm nasl sorgularz? rnek 4: FOR EACH ozluk: FOR EACH notlar WHERE notlar.og_no = ozluk.ogr_no: 2 DISPLAY ozluk.adi ozluk.soyadi notlar.kodu notlar.basari. END. END.

r->

3-19

Progress Programlama

eklinde i ie for each kullan lr, burada ozluk tablosundaki her bir renci iin, ierideki notlar tablosu dngye al n r. Ozluk tablosundan bir renci seilir onun notlar tablosundaki dersleri grntlenir, bitince ozluk deki ikinci renciye geilir, bylece ozluk tablosundaki kay tlar bitinceyc kadar devam eder. 2. dngdeki "WHERE notlar.ogr_no = ozluk.ogr_no" ifadesi iki tablo aras ndaki ilikinin olduu alanlar belirtmektedir. Bu ko ul yaz lmaz ise 1.dng ile 2. dngnn ba ms z al masn yani yanl sonu vermesini Sa lar. Bu mekte, 1 .dngde yani ozluk tablosunda 100 renci olduu kabul edilsin, 2. dng olan notlar tablosunda da, her renci 50 ders ald kabul edilirse, 1. dng i e balaynca bir renci seer ve 2. dngye gelir bu dngde ki ko ula bakarak 50 kez de bu dng tekrarlan r, ilk rencinin dersleri biter ve 1. Dngye gelerek ikinci renciyi seer ve 2. Dngye girer ve bu rencinin de derslerini gsterir ve bu ekilde i lemler tekrar eder. 1. dng 100 kez , 2. dng ise 100x50 = 500 kez dnecektir. liki koulu yazlmaz ise 2. dng her renci iin 500 kez tekrar eder ve sonu 100x500 = 50000 kez dng tekrar eder. Daha genel kullan m ise rnek 5: FOR EACH ozluk, EACH notlar OF ozluk: DISPLAY ozluk.ogr_no notlar.ogr_no notlar.kodu. END. burada ogr_no ya gre ili kili olduu iin direk ili ki kuruluyor, rnek 4'de ise ili kili alan (ierdi i bilgiler ayn olan alanlar) ayrca belirtiliyor. rnek 6: FOR EACH ozluk WHERE sinifi = 3: FOR EACH notlar WHERE notlar.ogr_no = ozluk.ogr_no: DISPLAY ozluk.adi ozluk.soyadi notlar.kodu notlar.basari. END. END.

3-20

4GL Komutlan

3. snfta olan rencilerin ad , soyad , dersin kodu ve ba ar notunu gsterir. rnek 7: FOR EACH ozluk WHERE sinif = 3: FOR EACH notlar WHERE notlar.ogr_no = ozluk.ogr_no AND notlar.kodu = "A308": DISPLAY ozluk.adi ozluk.soyadi notlar.basari. END. END. 3. snfta olan rencilerden "A308" dersini alan rencilerin ad , soyad ve baar notunu gsterir. Leave komutu: Dnglerden artsz veya arta bal olarak kmak iin kullanlr. rnek 1: FOR EACH ozluk: MESSAGE adi. IF adi = "SENA" THEN LEAVE. END. Find deyimi : Tablolar zerinde arama yapmak iin kullan lr. Aranlan kayt bulunur ise o kayt zerine gelir ve bekler. FIND [FIRST / LAST / PREV / NEXT ] < Tablo-Ad > [Where ko ul [No-Error] [ Use-Index Index ad ]. Find deyimi tablo zerinde ko ullu/koulsuz kaytlara erimeyi, eriirken ilk, son, sonraki veya nceki kaytlara eri ilebilmektedir. Sadece eri ilen kay tta bekler, hibir grntleme veya gncelleme yapmaz.

3-21

Progress ProQraminma

rnek 1:

FIND FIRST ozluk. Ozluk tablosundaki ilk (first) kayda konumlanmay Salar, eer ozluk tablosunda hi kay t yok ise bu konut al trldnda Progress hata mesaj ile uyarr (ngilizce olarak), e er bu uyar mesaj istemez ise "noerror" ifadesi komutun sonuna eklenmelidir. rnek 2: FIND FIRST ozluk NO-ERROR. Arama normal koullarda primary index'e gre yap lr, farkl bir arama yap l rken hzl olmas iin nceden olu turulmu indeksler kullanlabilir. Bunu kullanabilmek iin use-index ifadesi kullanlr. rnek 3: FIND FIRST ozluk WHERE ozluk.adi = "SENA" NO-ERROR. rnek 4: FIND FIRST ozluk WHERE ozluk.soyadi = "DEMIRCAN" USE-INDEX soyadidx NO-ERROR. Burada, veritaban oluturulurken soyadi alan na gre indekslenmi ve "soyadidx" bu indekse verilen ad ifade etmektedir. Kayt aranrken no-error ifadesini yazarak uyar mesaj nn kmas engellemi ti, fakat aranan ko ullara uygun kaydn olup olmad bilinmiyordu. Aranan kaydn var olup olmad n ise "if available" deyimiyle kontrol edilir. if available ozluk then kayt var ise if not available ozluk then.... kay t yok ise eklinde if deyimi kullanlr.

3-22

4GL Komutla

rnek 5: IF AVAILABLE ozluk THEN MESSAGE "Kayt Bulundu". ELSE MESSAGE "Kayt Bulunamad". veya IF NOT AVAILABLE ozluk THEN MESSAGE "Kayt Bulunamad". rnek 6: UND FIRST ozluk WHERE ozluk.sinifi = 4 AND ozluk.adi = "ETHEM" NO-ERROR. IF AVAILABLE ozluk THEN MESSAGE "Gerekten ETHEM 4.snfta okuyor". ELSE MESSAGE "ETHEM adnda bir renci yokkk". Update komutu: Update komutu veri i leme blmnde anlatld gibi tablo alanndan farkl olarak klavyeden hafza deikenine kullamcmn bilgi girmesini de salar. rnek 1: DEF VAR sayi AS INT. UPDATE sayi. MESSAGE "Girilen saynn 5 kati = " sayi * 5. Message komutuyla ekrandan bir de er almacaksa da update komutu kullanlr, burada bamsz bir pencere gelecektir. rnek 2: DEF VAR xadi AS INT. MESSAGE "adiniz" UPDATE xadi. Message komutunda ekrana iki buton getirerek (Evet/Hay r) mantksal cevab alnacaksa

3-23

Progress Programlama

rnek 3: DEF VAR xcevap AS LOGICAL. MESSAGE "Devam edilsin mi?" VIEW-AS ALERT-BOX WARNING BUTTONS YES-NO TITLE "Uyar " UPDATE xcevap.

Devam edilsin mi?

Evet

Hayr

Evet/Hayr butonuna bas lrsa xcevap deikeni yes/no (true/false) deerini alacaktr bunu da, if xcevap = yes then veya if xcevap = true then eklinde kontrol etmek mmkndr. Progress'te a klama satr Dier dillerde olduu gibi progress'te de program yaz lrken baz yerlerde programclarn hatrlatc aklamalar yazmas gerekir. Bu a klamalan /* */ arasna alarak belirtir. rnek 1: /* Bu program 1999 y lnda balarru tr.*/ rnek 2: /* Astronomi ve uzay bilimleri blmnde Progress 1999 ylnda retilmeye balamtr*/

3-24

4GI, Komutlan

Run deyimi: Run <procedure ad> [(parametrel,parametre2,...)]. Bu deyim ile bir procedure (Progress uygulamas ) iinden ba ka bir uygulamann al trlmas salanr (Bkz. UIB Procedure Blm). rnek 1: RUN deneme.p Burada deneme.p program daha nceden olu turulup hard diske kaydedilmi olmaldr. deneme.p e er ksa yolda belirtilen klasrde deilse, deneme.p'nin hangi klasrde oldu u belirtilmelidir. rnek 2: RUN c:\belgelerim\deneme.p. Connect komutu: Connect db <dbname> <parametreler>. Veritabann ile balant kurmamza yarar. rnek 1: CONNECT -db c:\uygulama\ogrenci -1. Veritabanna balanmadan tablolara eri im salanamaz. Bu nedenle bir prosedrde hem balant hem de sorgulama olmamal dr. u ekilde bir yap oluturulmaldr. CONNECT -db c:\uygulama\ogrenci 1 NO-ERROR. FOR EACH ozluk: MESSAGE adi. END. Bu ekilde bir kullanm hata meydana getirecektir. Bunu iki paraya blerek kullanmak gerekir

3-25

Progress Programlama

/*basla.p prosedr*/ FOR EACH ozluk: MESSAGE adi. END. eklinde yazarak file (dosya) mensnden save (sakla) seene i seilerek file name (dosya ad) olarak basla.p yaz larak OK dmesine baslr. Ayn ekilde PE iinde aadaki uygulama yazlarak /* baglan.p *I CONNECT -db c:\uygulama\ogrenci 1 NO-ERROR. RUN basla.p. /* Bitti */ Baglan.p prosedr al trlrsa nce ogrenci veritabanna balanlacak daha sonra da basla.p al arak kaytlar grntlenecektir. Eer windowsta masa stne olu turulan ksa yol altrldnda sizin yaptnz uygulamann almas istenirse, Ksa yolda _desk.p yazan ksm aadaki gibi dzenlenirse bu simge al trldnda "baglan.p" uygulamas alacaktr.

3-26

4GL Komullar

prowiri32 QaelGkleri
Genel Kisayol I prowrin31

1E1E3

Hedef tr: Hedef konumu: Hedef:

Uygulama bin clic:91a bin ' s prowin32.exe -p baglan.p

IC:

fialarna yefi: [C. uygulama Kisayol luu: frok

I N ormal pencere

Connected komutu: Connected (dbname). Herhangi bir veritabanma ba l olup olmad test edilebilir. rnek I: IF CONNECTED("ogrenci") = YES THEN MESSAGE "ogrenci.db a k". ELSE MESSAGE "ogrenci.db kapal ".

3-27

Fonksi yonlai -

3 FONKS1YONLAR
-

Progress`de program yaparken o u zaman baz ilemleri yapabilmek iin hazr programlar kullan lr. Bu hazr program paralar na fonksiyon ad verilmektedir. imdi Progress de en ok kullan lan haz r fonksiyonlan incelemeye al alm. Fonksiyonlann o unda bir veya birden fazla de er gnderilir. Bu de erlere parametre ad verilir. Bu parametreler nda fonksiyonlar de er reterek sonucu geri dndrr. rnein bir karakter bilgiyi byk harfe evirecekseniz, fonksiyona kk harflerden olu an metin parametre olarak gnderilir, geriye byk harfe dnm hali gelir. Hazr fonksiyonlarda parametreler say , tarih veya karakter bilgiler olaca gibi, bunlar ieren de ikenlerde parametre olarak verilebilir. Geriye dnen de erler bir de ikene atama yaplabilir. Hazr fonksiyonlar unlardr. NMERK FONKSYONLAR ABS(n) n saysn pozitif deere dntrr.

rnek 1: MESSAGE ABS(-4) . rnek 2: DEF VAR sayi AS INT. sayi = ABS (-4). MESSAGE sayi. ki rnekte de ekranda sonu 4 olarak grntlenir. LOG(m,n) m saysn n tabanna gre logaritmas n alr. rnek 1: MESSAGE LOG(100,10) . rnek 2: DEF VAR sayi AS INT. sayi = LOG (100,10). MESSAGE sayi.

4-1

Progress Prograrr lama

ki rnekte de ekranda sonu 2 olarak grntlenir. MAX(m,n) m ile n deerleri aras ndaki en byk sayy bulur.

rnek 1: MESSAGE MAX(3,2). rnek 2: DEF VAR sayi AS INT. sayi = MAX(3,2). MESSAGE sayi. ki rnekte de ekranda sonu 3 olarak grntlenir. MIN(m,n) m ile n deerleri arasndaki en kk sayy bulur.

rnek 1: MESSAGE MIN(3,2). rnek 2: DEF VAR sayi AS INT. sayi = MIN (3,2). MESSAGE sayi. ki rnekte de ekranda sonu 2 olarak grntlenir. SQRT(m) m deerinin karekkn al r.

rnek 1: MESSAGE SQRT(100). rnek 2: DEF VAR sayi AS INT. sayi = SQRT(100). MESSAGE sayi. ki mekte de ekranda sonu 10 olarak grntlenir.

4-2

Fonksi yonlar

EXP(m,n)

n say sm n n kadar kuvvetini(ss) al r.

rnek 1: MESSAGE EXP(3,2).

rnek 2: DEF VAR sayi AS INT. sayi = EXP(3,2). MESSAGE sayi. ki rnekte de ekranda sonu 9 olarak grntlenir. RANDOM(m,n) retir. m ile n aras nda (m ve n dahil ) rasgele tam say

rnek 1: MESSAGE RANDOM(,9). rnek 2: DEF VAR sayi AS INT. sayi = RANDOM(,9). MESSAGE sayi. ki rnekte de ekranda 1 ile 9 aras nda her altrmada farkl say retilir. ROUND(m ,n) m deerini n say s kadar yuvarlar.

rnek 1: MESSAGE ROUND(5.35,1 ). rnek 2: DEF VAR sayi AS INT. sayi = ROUND(5.35,1). MESSAGE sayi. ki rnekte de ekranda sonu 5.4 olarak grntlenir.

4-3

Progress Programlama

TRUNCATE(m,n) m yi n say s kadar yuvarlamadan al r. rnek 1: MESSAGE TRUNCATE ( 5.35,1 ). rnek 2: DEF VAR sayi AS INT. sayi = TRUNCATE(5.35,1). MESSAGE sayi. ki rnekte de ekranda sonu 5.3 olarak grntlenir. MODULO (m Modulo n) m saysnn n'e blmmden kalan verir. rnek 1: MESSAGE 10 MODULO 3. rnek 2: DEF VAR sayi AS NT. sayi = 10 MODULO 3. MESSAGE sayi. ki rnekte de ekranda sonu 1 olarak grntlenir.

INT(m) int fonksiyonu iki trde i lem yapmaktadr. Eer m parametresi bir karakter de er ieriyorsa (ieri i rakamlardan oluan metin ise) sonucu sayya evirir.
rnek 1: MESSAGE INT("586"). rnek 2: DEF VAR sayi AS INT. sayi =1NT("586") MESSAGE sayi. ki rnekte de ekranda sonu 586 olarak say haline dntrlerek grntlenir.

4-4

Fonks yonlar

Eer m pararnetresi bir ondal kl say ise sonucu tam say ya evirir. rnek 1: MESSAGE IN F(125.5). rnek 2: DEF VAR sayi AS INT. sayi = 1NT(125.5) MESSAGE sayi. ki rnekte de ekranda sonu 125 olarak tam say ya dntrlerek grntlenir.
KARAKTER FONKSYONLAR CHR (n)

n saysnn ascii kodunun karakter kar l.

rnek 1: MESSAGE CHR(65). rnek 2: DEF VAR sayi AS INT. DEF VAR harf AS CHAR. sayi = 65. harf = CHR(sayi). MESSAGE sayi "saysnn karakter kar l " harf. Ekranda sonu A olarak grntlenir.
ASC (m)

m karakterinin ascii kodunu verir.

rnek 1: MESSAGE ASC("A"). rnek 2: DEF VAR sayi AS INT. DEF VAR harf AS CHAR. harf = "B".

4-5

Progress Programlama

sayi = ASC(harf). MESSAGE sayi. Ekranda iki rnek iinde sonu 65 say olarak grntlenir. MATCHES Bir string ifade iinde, dier bir string ifadenin varl aranr. Sonu olarak YES veya NO cevab dnecektir. rnek 1: MESSAGE "Yahya" MATCHES ("*a"). "Yahya" metninin sonunda a oldu undan ekranda YES iletisi grntlenir. rnek 2: MESSAGE "Yahya" MATCHES ("*a*). "Yahya" metninin iinde a olduundan ekranda YES iletisi grntlenir. rnek 3: MESSAGE "Yahya" MATCHES ("a*"). "Yahya" metninin bas nda a olmadndan ekranda NO iletisi grntlenir. rnek 4: DEF VAR xara AS LOGICAL. xara = "yahya" MATCHES "*a*". MESSAGE xara. "Yahya" metninin iinde a oldu undan xara = YES olaca ndan ekranda YES iletisi grntlenir. rnek 5: DEF VAR xara AS LOGICAL. DEF VAR xharf AS CHAR. DEF VAR xisim AS CHAR INIT "Yahya". xharf = "*a".

4-6

Fonksiyonlar

xara = xisim MATCHES xharf. MESSAGE xara. xisim ("Yahya") metninin sonunda xharf ("*a") oldu undan xara = YES olacandan ekranda YES iletisi grntlenir. BEGINS String bir ifade, istenilen stringle balyorsa YES aksi olursa NO deeri dner. MATCHES fonksiyonunun birinci haline benzemekte olup burada * kullan lmamaktadr. rnek 1: MESSAGE "Murat" BEGINS "ya" . "Murat" metni "ya" ile balamadndan ekranda sonu NO grntlenir. rnek 2: MESSAGE "Murat" BEGINS "Mu". "Murat" metni "Mu" ile baladndan ekranda sonu YES grntlenir. rnek 3: DEF VAR xcevap AS LOGICAL. DEF VAR xara AS CHAR. xara = "yah". xcevap = "yahya" BEGINS xara. MESSAGE xcevap. "yahya" metni xara ("yah") ile ba ladndan ekranda sonu YES grntlenir. Dikkate edilirse sadece MATCHES ve BEGINS fonksiyonlar mantksal (YES veya NO) sonu vermektedir.

4-7

"

Progress Programlarr a

if fonksiyonu Mantksal karlat rma deyimi olan if deyiminin burada farkl bir kullanm olacakt r, eer verilen ko ulun do ru veya yanl olmas durumuna gre if deyimi bir fonksiyon grevi grmektedir. IF ko ul THEN ifadel ELSE ifade2. eklinde bir kullan m mevcuttur. Koul do ru ise ifadel, yanl ise ifade2 durumu gerekle ecektir. fadel veya ifade2 k smlannda tekrar if fonksiyonu kullan labilir (i ie ko ul). IF koull THEN ifadel ELSE (IF ko ul2 THEN ifade2 ELSE ifade3) . rnek I: DEF VAR xcinsiyet AS CHAR INIT "K". DEF VAR xsonuc AS CHAR. xsonuc = IF xcinsiyet = "E" THEN "erkek" ELSE "k iz" MESSAGE xsonuc. If fonksiyonu xcinsiyet de ikeninin de eri "K" oldu u iin koula uymayaca iin ekrana "kz" iletisini gsterecektir. STRING ( [saysal ifade] , [">>>9"]) saysal ifadeyi karaktere evirir. rnek I: MESSAGE STRING(555,">9") . rnek 2: DEF VAR xmetin AS CHAR. metin = STRING(555,">>>9") . MESSAGE metin ki rnekte de 555 say sn karaktere dn trerek ekranda "555" metni grntlenir. LENG111(metin) Karakterlerden olu an metnin uzunlu unu say olarak verir.

4-8

Fonks yonlar

rnek 1: MESSAGE LENGHT("Murat"). rnek 2: DEF VAR sayi AS INT. sayi = LENGHT("Murat"). MESSAGE sayi rnek 3: DEF VAR sayi AS INT. DEF VAR xisim AS CHAR. xisim = "yahya". sayi = LENGHT(xisim). MESSAGE sayi rnekte de t rnak iinde yaz lan metnin veya xisim de ikeni iinde bulunan metnin uzunluunu ekranda 5 says olarak grntler. SUBSTRING(metin,m,n) Karakterlerden olu an metinde m'inci karakterden itibaren n tane karakteri al r. rnek 1: MESSAGE SUBSTRING("ASTRONOMI",3,2). rnek 2: DEF VAR xbolum AS CHAR. DEF VAR xalinan AS CHAR. Xbolum = ASTRONOMI". xalinan = SUBSTRING(xbolum,3,2). MESSAGE xalinan. ki rnekte de ekrana sonu olarak "TR" karakterleri grntlenir. TRIM (metinl,metinl) karakterlerden olu an metin! 'den istenilen metin2 karakterini ba tan ve sonundan atar. Metin2 parametresi kullamlmaz ise batan ve sondan bo luklar atar. rnek 1: MESSAGE TRIM("ATA","A").

4-9

Progress Prograrnlama

rnek 2: DEF VAR metin AS CHAR. DEF VAR xat AS CHAR. DEF VAR xsonuc AS CHAR. metin = "ATA". xsonuc = TRIM(metin,xat). MESSAGE xsonuc. 1 ve 2. rnekte de ba tan ve sondan "A" harfi at larak ekranda "T" sonucu grntlenir. rnek 3: MESSAGE TRIM(" yahya de ") rnek 4: DEF VAR xsonuc AS CHAR. xsonuc = TRIM(" yahya de ") . MESSAGE xsonuc. 3 ve 4. rnekte de ba tan ve sondan bo luklar atlarak ekranda "yahya de" sonucu grntlenir. FILL(metin,n) n says kadar metin ifadesinden o althr.

rnek 1: MESSAGE FILL("*",5). rnek 2: DEF VAR xsonuc AS CHAR. xsonuc = FILL("*",5). MESSAGE xsonuc. ki rnekte de "*" karakterinden 5 tane o altlarak ekranda sonu ***** olarak grntlenir. xsonuc de ikeni ierisinde 5 tane * olu ur. INDEX(textl,text2,[say l) Textl in ,iinde text2 ifadesinin ka nc karakterde oldu unu verir. Say parametresi verilirse, o say dan itibaren kontrol edilir ve sonu yine ilk ba tan itibaren konumunu verir.

4-10

Fonksiyonlar

rnek 1: MESSAGE INDEX("ASTRONOM","0"). rnek 2: DEF VAR sayi AS INT. sayi = INDEX ("ASTRONOM","O"). MESSAGE sayi. rnek 3: MESSAGE INDEX ("ASTRONOM","O",5). rnek 4: DEF VAR sayi AS INT. sayi = INDEX ("ASTRONOM","O",5). MESSAGE sayi. Drt rnekte de "O" harfi ba tan balayarak 5 harf olduu sonucu ekranda grntlenir. rnek 5: DEF VAR sayi AS INT. sayi = 1NDEX ("ASTRONOM","0",6). MESSAGE sayi. Bu rnekte 6. harften sonraki ilk "O" harfi 7. harf oldu u iin ekranda 7 grntlenir. rnek 6: DEF VAR sayi AS INT. sayi = INDEX ("ASTRONOM","N",6). MESSAGE sayi. Bu rnekte 6. harften ba layarak ilk "N" harfi 6. harf oldu u iin ekranda 6 grntlenir.

4-11

Prmress Prm s rarr lan a

CAPS(Text) Text ifadeyi byk harfe evirir. rnek 1: MESSAGE CAPS("astronomi"). rnek 2: DEF VAR metin AS CHAR. metin = CAPS("astronomi"). MESSAGE metin. rnek 3: DEF VAR xsonuc AS CHAR. DEF VAR xtext AS CHAR. text = "astronomi". xsonuc = CAPS(text). rnekte de "astronomi" ifadesinin byk harfe dn trerek ekranda sonu "ASTRONOMI" grntlenmektedir. LC(Text)
rnek 1:

Text ifadeyi kk harfe evirir.

MESSAGE LC("ASTRONOMI"). rnek 2: DEF VAR metin AS CHAR. metin = LC("astrONOMI"). MESSAGE metin. ki rnekte de ifadeleri kk harfe dn trerek ekranda sonu "astronomi" grntlenmektedir. Burada nemli bir nokta, CAPS ve LC fonksiyonlar , Trke karakterlerden sadece " ", "I", "i" ve "1" karakterlerini dn trmekte yanllk yapmaktad r. rnek 3: MESSAGE CAPS("iI").

4-12

Fonksiyonlu

Ekranda Ini olarak sonu vermektedir. rnek 4: MESSAGE 1_,C("i dr). Ekranda ii olarak sonu vermektedir. REPLACE (textl,text2,text3) ifadesini koymaktadr. textl deki text2 yerine text3

rnek 1: MESSAGE REPLACE("astroloji","loji","nomi"). rnek 2: DEF VAR metin AS CIIAR. metin = REPLACE("astroloji","loji","nomi"). MESSAGE metin. Iki rnekte de astroloji metninde loji ifadesi yerine nomi koyarak ekranda astronomi haline dn trerek grntlemektedir. Art k metin deikeni astronomi olarak de imitir. TARIH FONKSIYONLAR Tarih fonksiyonlarnn kullanlmasnda sorun kmamas iin bilgisayara Progress kurulurken dil olarak Turkey seilmelidir. Eer Turkey seenei seilmemi ise tarih format ay/gn/yl (mdy) eklinde amerikan format geerli olacandan tarih yazmlanna dikkat edilmesi gereklidir. Progress'in kurulumu esnasnda eer, Turkey seilirse, tarih format da gn/ay/yl (dmy) eklinde belirtilmi se tarihleri Trkiye'de kullan lan tarih biiminde kullan labilir (Bkz. Progress Kurulumu). TODAY Gnn tarihini verir.

rnek 1: MESSAGE today.

4-13

Progress Prograrnlarna

Ekrana today fonksiyonu aksi belirtilmedike sonucu y ln son iki hanesini alarak 25/12/99 eklinde gsterir. rnek 2: MESSAGE STRING(today,"99/99/9999"). Gnn tarihini string fonksiyonuna biim (format) vererek y l drt hane olarak 26/11/2001 eklinde grntlenmesini sa lar. rnek 3: MESSAGE STR1NG(today,"99-99-9999"). Ekrana tarihi aralarda "-" olacak grntler. ekilde 26-11-2001 biiminde

rnek 4: DEF VAR xbugun As CHAR. xbugun = STRING(today,"99.99.9999"). MESSAGE xbugun. Gnn tarihini karaktere evirerek xbugun de ikenine atamr ve ekranda 25.12.1999 eklinde grntlenir. DATE(text) Text ifadesini tarih format na evirir. rnek 1: MESSAGE DATE("25/12/99"). Karakterlerden olu an tarih biimindeki ierik art k 25/12/99 eklinde bir tarih olmutur ve ekrana 25/12/99 eklinde grntlenir. rnek 2: DEF VAR metin AS CHAR. DEF VAR xtarih AS DATE. metin = "25/12/1999". xtarih = date (metin). MESSAGE xtarih.

4-14

Fonksiyonlar

Tarih biiminde karakter olan metin de ikeni tarih biimine evrilerek xtarih deikeni iine konulmaktad r ve ekranda 25/12/99 eklinde grntlenecektir. DAY(tarih) Herhangi bir tarihin gnn verir. Sonuta dnen de er artk tam say trndendir. rnek 1: MESSAGE day(today). Bugn 25/11/2001 ise bu fonksiyon ekrana 25 ifadesini say olarak verecektir. rnek 2: DEF VAR xtarih AS DATE INIT 09/11/2001. MESSAGE DAY(xtarih). Varsaylan 09/11/2001 olan xtarih de ikeninin gnn 9 olarak grntler. MONTH(tarih) Herhangi bir tarihin ay say sn verir.

rnek 1: MESSAGE MONTH(today). Bugn 25/11/2001 ise bu fonksiyon ekrana 11 ifadesini say olarak verecektir. rnek 2: DEF VAR xtarih AS DATE INIT 09/11/2001. MESSAGE MONTH(xtarih). Varsaylan 09/11/2001 olan xtarih de ikeninin ayn 11 olarak grntler.

4-15

Progrcss Prouramla na

YEAR (tarih) Herhangi bir tarihin y ln verir rnek 1: MESSAGE YEAR(today). Eer gnn tarihi 26/11/2001 ise bu fonksiyon y ln 2001 olarak grntleyecektir. rnek 2: DEF VAR xtarih AS DATE INIT 09/11/2001. MESSAGE YEAR(xtarih). Varsaylan! 09/11/2001 olan xtarih de ikeninin yln, 2001 olarak grntler. rnek 3: MESSAGE YEAR(today) + 10. Eer gnn tarihi 26/11/2001 ise, ekrana 2011 say s grntlenecektir. TIME Saati saysal olarak verir (sn say s). Bu fonksiyon gece 00.00 (gnn balangc) itibariyle geen sreyi saniye olarak verir. rnek 1: MESSAGE time. Bu fonksiycnun al trld zaman itibariyle 7505 (sn) say sn verecektir. Bu sonucun al nd tarih 26/11/2001 saat 02.05 civarlanyd . rnek 2 MESSAGE time / 3600. Time fonksiyonundan dnen de er 3600 blnerek saat biriminde bir sonu elde edilir, 2.0807222222 eklinde bir ondal kl say grntlenir. rnek 3: MESSAGE string(time"hh:mm:ss").

4-16

Fonksiyon lar

Time fonksiyonu ile elde edilen say sal sonu string fonksiyonuyla biim verilerek biline saat biimine dn trlmcktedir. Ekranda sonu art k karakter bir biim olarak 02:06:56 eklinde grntlenecektir. WEEKDAY(tarih) Bu fonksiyonla tarihin haftan n kanc gn olduu bilgisi say olarak elde edilir. Elde edilecek say 1 ise pazar, 2 ise pazartesi,...,7 ise cumartesi eklinde olacaktr. rnek 1: MESSAGE WEEKDAY(today). Gnn tarihi 26/11/2001 ise ekranda 2 say s grntlenecektir. Tarih bilgilerinde aritmetik i lemler: rnek 1: MESSAGE today. Gnn tarihi 26/11/2001 olarak grntlenir. rnek 2: MESSAGE today + 10. Gnn tarihine 10 ilave edilerek 06/12/2001 sonucu elde edilmektedir. rnek 3: Message today 10. Gnn tarihine 10 eksilterek 16/12/2001 sonucu elde edilmektedir. Tarihe eklenecek veya kartlacak say o tarihi gn olarak art rmakta veya azaltmaktad r. arpma veya blme i lemleri tarihler zerinde kullan lmamaktadr.

4-17

SQL (Yap sal Sorgu Dili)

4-SQL (STRUCTURED QUERY LANGUAGE) Yapsal Sorgulama Dili olan SQL, ili kisel veritabanlarndaki bilgileri sorgulamak iin standart kullan m olan bir dildir. Standart bir dil olmasna karlk, eitli veritabanlarnda SQL kullanmlar arasnda farkllklar vardr. SQL komutlan ile, tablolara yeni kay t girme, varolan kaytlar sorgulama (arama ve listeleme), varolan bilgileri de itirme ve varolan kaytlar silme ilemleri yaplabilir. zerinde sql komutlann uygulayacamz, rnek olarak ozluk ve notlar tablosundan birka kayt verilsin. Ozluk tablosundaki alan isimleri ve rnek veriler; og_no 88050071 89050020 91050099 adi Muhittin Selda Yahya soyadi Alnkaya Anar Demircan cinsiyeti E K E

Notlar tablosundaki alan isimleri ve rnek veriler; ogr_no kodu donem sube vize 88050071 A308 1998-99/2 A 88050071 A401 1998-99/1 B 89050020 A308 1998-99/2 A 89050020 A307 1998-99/1 A 91050099 A308 1997-98/2 A 91050099 A308 1998-99/2 B 91050099 A401 1998-99/1 A 91050099 A445 A 1997-98/1 91050099 A445 1998-99/1 A

final 45 50 50 80 20 60 80 0 60

basan 60 94 50 40 60 60 80 0 60

60 94 50 45 50 66 94 0 66

Bu noktadan sonraki rnekleri yukar daki deerleri gz nnde tutarak inceleyiniz.

5-1

P rogress P ro gra mla rra

SQL FONKSYONL ARI

SQL'de kullanlan fonksiyonlar vard r, bu fonksiyonlar ekrana sadece tek deer grntlerler. SUM(DISTINCT] alan_adi) fonksiyonu (saysal alanlarda) COUNT(*) COUNT(DISTINCT alan_adi) kaytlarn says MAX([DISTINCT] alan_adi) MIN(DISTINCT] alan_adi) AVG([DISTINCT] alan_adi) Belirtilen alan iin toplam

Toplam kayt says Belirtilen alana gre farkl olan

Belirtilen alanda en byk de er Belirtilen alanda en kk de er Belirtilen alanda ortalama de eri.

DISTINCT parametresi ile belirtilen alanda bulunan bilgilerden ayn olanlanndan sadece birinin seilmesini salar. rnek 1: SELECT COUNT(*) FROM notlar. Sonucunda ekrana gelecek kayt says 9 dur. rnek 2: SELECT COUNT(DISTINCT ogr_no) FROM notlar. Sql ifadesinde ekrana gelecek kay t says 3 olacaktr. rnek 3: SELECT MAX(basari) FROM notlar. En byk basan notunu, ekrana 94 olarak grntler. En byk de er ka tane olursa olsun bir tanesi grntlenir.

5-2

SQL (Yap sal Sorgu Dili)

rnek 4: SELECT COUNT(*) FROM ozluk. Ozluk tablosundaki kay t saysn 3 olarak verecektir. SORGULAMA [ALLDISTINCT] { *Ialan_adi_listesi} [INTO degi ken_listesi ] FROM tablo-ismi [WHERE ko ul] [GROUP BY alan_adil [ , alan_adi2] ...] [HAVING search-condition] [ORDER BY siralamaalanlari] eklinde genel bir ifadesi vard r. SELECT

Buradaki ve genelde bilgisayar dnyas nda yardm (help) menlerinde kullanlan iaretler, seimlik [ {} zorunlu < > zorunlu veya anlamna gelmektedir. artsz kayt sorgulama: Herhangi bir tabloya ait bilgi alanlarmdaki bilgilerin listesini almak iin; SELECT <alan adi [,alan ad l,...]> FROM <tablo ad>. ifadesi kullanlr. rnek 1: SELECT adi, soyadi FROM ozluk.

5-3

Progress Programla ma

Ozluk tablosundaki tm rencilerin adn ve soyad n ekrana grntleyecektir. rnek 2: SELECT vize*10 FROM notlar. Notlar tablosundaki tm rencilerin vize notunu 10 ile arp mn ekrana grntleyecektir. Burada vizelerin 10 ile arp m sadece ekrana grntlenecek tabloda ise de imeyecektir. rnek 3: SELECT SUM(basari) FROM notlar. rencilerin baar notlannn toplamn ekrana verecektir. rnek 4: SELECT adi + soyadi FORMAT "x(25)" FROM ozluk. rencilerin ad ve soyadn bitiik yazan SQL ifadesidir. Bu durumda iki alann birlemesi sonucunda karakter says artaca iin yeni bir format belirtmek gerekir.Karakter alanlarda varsay lan grntleme 8 karakterdi, burada iki bilinin birle mesi yeni bir bilgi alan gibi davranaca ndan format beli tmek gereklidir. rnek 5: SELECT * FROM notlar. Notlar tablosundaki btn bilgi , alanlanmn ieriklerini ekrana grntleyecektir (* joker gibi kullan lmaktadr,"*" ile kullanmda select ile from arasna baka ifade yazlmaz). rnek 6: DEF VAR sayi AS INT SELECT COUNT(*) INTO sayi FROM notlar.

5-4

SQL (Yap sal Sorgu Dili)

eklinde bir kullan mla kayt say s , "sayi" de i keni iine aktanlm olur, bylece elde edilen kay t say s programn devamnda amaca gre kullan labilir. Burada into parametresi kullan ld iin sql sonucunda ekran hibir grnt gelmeyecektir.

rnek 7: DEF VAR ksayisi AS INT. DEF VAR ntoplam AS INT. SELECT COUNT(*),SUM(basari) INTO ksayisi,ntoplam FROM notlar. Kayt says "ksayisi" de ikenine, basan notlann n toplam da "ntoplam" deikeni iine aktanlm olacaktr.

Tek kayt sorgulama:

Herhangi bir tabloya ait kay tlardan birer tanesinin listesini almak iin; SELECT DISTINCT <alan ad [,alan ad l]> FROM <tablo ad>. ifadesi kullanlr. Burada distinct'den sonra yaz lan alanlann ayn olanlardan birer tanesi listelenir. rnek 1: SELECT DISTINCT kodu FROM notlar. Sorgu sonucu listelenecek kay tlar; Kodu A308 A401 A307 A445

5-5

Progress ProLu-arnlarrw,

Bu rnekte notlar tablosunda bir ders, birden fazla olmas na ramen, sadece her dersten bir tanesi grntlenir. rnek 1 SELECT DISTINCT kodu, ogr_no FROM notlar. Sorgu sonucu olarak (rnek kaytlardan) kodu oor no A308 88050071 A401 88050071 A308 89050020 A307 89050020 A308 91050099 A401 91050099 A445 91050099 Notlar tablosunda sadece kodu ve ogr_no alan ndaki kaytlardan ayn olanlardan birer tanesini listelenmi tir. SQL ifadelerini yazarken e er cmle bir sat r ayorsa, daha anlalr olmas asndan alt alta yazarak devam edilebilir. Sorgu sonucu dnen kay tlar sralama: Herhangi bir tablodaki kaytlar herhangi bir alan ad na gre azalan (artan) s rada sralayabilmek iin; SELECT <alan ad > FROM <tablo ad> ORDER BY <alan ad l> [,alan_listesi] DESC I ASC. ifadesi kullanl r (varsaylan olduu iin artan s rada olacaksa ASC kullanlmaz). rnek 1: SELECT ogr_no, adi, soyadi FROM ozluk ORDER BY soyadi DESC.

5-6

SQL (Yap sal Sorgu Dili)

rencilerin numara , ad ve soyadlar n , soyad sral olarak Z'den A'ya sralayarak ekrana grntler. rnek 2: SELECT ogr no, basafi FROM notlar ORDER BY basari DESC. rencinin numara ve ba ar notlar m, baar notuna gre azalan s rada ekran grntler. rnek 3: SELECT ogr_no, basari FROM notlar ORDER BY basari DESC,ogr_no DESC. rencinin numara ve ba ar notlarm, baar notuna gre azalan s rada listelerken notu ayn olanlar da numaras na gre azalan s rada ekranda grntler.
artl kayt sorgulama:

Bir tabloda istenilen arta uygun kaytlarn listesi iin; SELECT <alan_adlari> FROM <tablo ad > WHERE <koullar> ifadesi kullanlr. rnek 1: SELECT adi, soyadi, ogr_no FROM ozluk WHERE soyad = " " . Ozluk tablosundaki soyad bo olan kaytlarn ad,soyad ve numaralarn ekranda grntler. rnek 2: SELECT ogr_no, basan FROM notlar WHERE basan = 100. Notlar tablosundaki baar notu 100 olan rencilerin numaralar n ve baar notlarn listeler.
Bir alan iinde birden fazla de eri salayan kaytlar listelemek iin;

5-7

Progress Programlarna

rnek 4: SELECT adi, soyadi FROM ozluk WHERE soyadi = "demircan" AND soyadi ="demirel". Bir alan iinde, birden fazla de eri salayan kaytlarn listelenmesi, IN ifadesiyle daha kolay ve anla lr yazlabilir. SELECT <alan_adlari> FROM <tablo ad > WHERE <alan ad> IN (deeri, deer2). ifadesi kullanlr. rnek 5: SELECT adi, soyadi FROM ozluk WHERE soyadi IN ("demircan","demirel"). Ozluk tablosunda soyad demircan ve demirel olan rencilerin ad ve soyadlarn listeler. Bo ve dolu alanlara gre sorgu: Bo alanlar listelemek iin; SELECT <alan ad> FROM <tablo ad> WHERE <alan ad> IS NULL. rnek 1: SELECT ogr_no, adi, soyadi FROM ozluk WHERE cinsiyeti IS NULL. Cinsiyet alan bo olan rencilerin numaralarn, ad ve soyadlarn listeler. Bo olmayan alanlan listelemek iin; SELECT <alan ad> FROM <tablo ad> WHERE <alan ad> IS NOT NULL. ifadeleri kullanlr.

5-8

SQL (Yap sal Sorgu

rnek 2: SELECT ogr_ no, adi, soyadi FROM ozluk WHERE cinsiyeti IS NOT N ULL. Cinsiyet alan bo olmayan olan rencilerin numaralar n , ad ve soyadlarn listeler.
Tam olmayan bilgiye gre sorgu:

stenilen de er ile balayan kaytlar listelemek iin; SELECT <alan ad> FROM <tablo ad> WHERE <alan ad > LIKE "<deger>%". rnek 1: SELECT adi,soyadi FROM ozluk WHERE adi LIKE "A%". Ad "B" ile balayan kaytlarn ad ve soyadn listeler. stenilen deer ile biten kaytlar listelemek iin; SELECT <alan ad> FROM <tablo ad> WHERE <alan ad> LIKE "%<deger>". rnek 2: SELECT adi,soyadi FROM ozluk WHERE adi LIKE "%A". Ad "A" ile biten kaytlann ad ve soyadn listeler. inde herhangi bir yerde istenilen de er geen kaytlan listelemek iin; SELECT <alan ad > FROM <tablo ad> WHERE <alan ad> LIKE "%<deger>%". rnek 3: SELECT adi,soyadi FROM ozluk WHERE adi LIKE "%HY%". Ad iinde "HY" geen kaytlann ad ve soyadn listeler.

5-9

.Progress Pro!,,,ran lama

ki Tabloyu Beraber Sorgulama (Tabloya Alias [Geici isim] Verme): SELECT <alanlar> FROM tablol,tablo2 WHERE ko ullar. Birden fazla tablodan ayn anda bilgi getirilmesi gerekti inde, ortak alanlar zerinden birle tirme i lemleri yap lr. Birle tirme ilemi ko ullar blmnde yap l r, ortak olan alanlar e letirilir. rnek 1: SELECT o.adi, o.soyadi, o.ogr no, n.basari FROM ozluk o,notlar n WHERE o.ogr_no=n.ogr_no and n.kodu' A308'. A308 dersinde final notu 100 olan rencilerin adlarn , soyadlarn , numaralarn ve baar notlann listeler. Burada "o" ozluk tablosuna, "n" notlar tablosuna verilmi geici isimlerdir. Bu geici isimler sayesinde sql i daha anla lr ve k sa yazmak mmkndr. rnek 2: SELECT D1STINCT ogr_no, adi, soyadi FROM ozluk o, notlar n WHERE o.ogr_no = n.ogr_no AND n.kodu = "A206". A206 dersini alan tm rencilerin numaralar n , ad ve soyadlarn listeler. Kaytlar Gruplama: Kaytlar, belirli alanlara gre gruplayarak sorgu yap lmasn salar. rnek 1: SELECT kodu,count(*) FROM notlar WHERE ogr no = "91050099" GROUP BY ogr_no,kodu. Bu rnekte 91050099 nolu rencinin, ald dersleri ve bu dersleri ka kez aldn listeler. rnek kaytlara gre aadaki sonu elde edilir.

5-10

SIZI, (Yapisal orgu Dili)

Kodu A308 A401 A445

Count 2 1 2

Kayt girme:
Sql de tablolara yeni kay t ekleme "Veri anlatlmtr. leme" blmnde

Kayt gncelleme:
Sql de tablolarda varolan kay tlar gncelleme (bilgi dzeltme) i lemi "Veri leme" blmnde anlatlmtr.

Kayt silme:
Sql de tablolardan varolan kay tlar tamamen silme i lemi "Veri leme" blmnde anlatlmtr.

SQL VERTABANI KOMUTLARI Sql de veritaban komutlar kalc dr, hat rlan rsa 4GL deki gibi oluturulan geici tablolar program durdu unda yok olmaktayd .
Tablo olu turma: Yeni bir tablo oluturmaya yarar. CREATE TABLE <tablo ad> alanl {tip} [zellikler], alan2 {tip} [zellikler], [Unique (alanl,..., alan2)]. zellikler, 4GL de de iken zelliklerini ta maktadr

5-11

Progress Programlarna

rnek 1: CREATE TABLE ozlukl (ogr_no char(8) not null, adi char(15) not null, soyadi char(15) not null, sinifi int, date, cinsiyeti char(1), ilce_kodu char(4) LABEL "Do um Yeri", harc_kredi logical, adresi char(30), adres2 char(30), adres3 char(30)); Ozluk tablosunun zelliklerini hatta ayn sn SQL komutunu ile yukardaki gibi "ozlukl" tablosu olu turulmaktad r. "Not Null" zellii bu alanlann zorunlu olarak doldurulmas yani bo geilemez olduunu ifade etmektedir.

Tablo ad deitirme: "Alter" komutu ile tablo yap s deitirilir. Bir tablonun ad da deitirilebilir. ALTER TABLE <eski tablo ad > RENAME TABLE <yeni tablo ad >. Tabloya alan ekleme: Tablolara yeni bir alan eklenebilmektedir. ALTER TABLE <tablo ad> ADD <alan ad> tip [[Label " ..."] [Format][Column Label]].

5-12

C\

SQL (Yap sal Sorgu Dili)

Tablodan alan silme:

Var olan alanlar silinebilir. ALTER TABLE <tablo ad > DROP <alan ad>.
Tabloda alan adlar deitirme:

Bir tabloya ait alanlar n da ad deitirilebilir. ALTER TABLE <tablo ad > RENAME TABLE <eski alan ad> <yeni alan ad >.
Tabloda alan gncelleme:

Var olan alanlann zellikleri de i tirilebilmektedir. ALTER TABLE <tablo ad> MODIFY <alan ad> tip [[Label " ..."] [Format] [Column Label]]. rnek 1: ALTER TABLE ozlukl ADD baba adi CHAR (15). Ozlukl tablosuna rencinin baba ad n girilebilmesi iin, "baba_adi" adnda bir alan eklenmi tir.. rnek 2: ALTER TABLE ozlukl MODIFY baba adi CHAR (25); Ozluk tablosunda var "baba_adi" alann 25 olarak geni leten SQL komutunu yazlabilir. rnek 3: ALTER TABLE ozlukl DROP baba_adi. Ozlukl tablosunda var olan "baba_adi" alan n silen SQL komutunu yaznz.
5-13

Pro':ress Prograrnlarna

rnek 4: ALTER TABLE ozlukl RENAME TABLE ozluk2. "Ozlukl" tablosunun ad n "Ozluk2" olarak de itiren SQL komutudur. nek 5: ALTER TABLE ozluk2 RENAME TABLE adi ograd. Ozluk2 tablosundaki "adi" alan n n adm "ograd" olarak deitiren SQL komutudur..
Tablo Silme:

Tablolara ihtiya kalmad zaman silmeye yarar. DROP TABLE <tablo ad >. rnek 1: DROP TABLE ozluk2. Ozluk2 tablosunu silen SQL komutunu yaz labilir, burada tablodaki bilgilerde yok olacakt r.

5-14

Interface Builder

5-USER INTERFACE BUILDER (UIB) (Kullamci Ara yz Olu turma)


Kullan e ara yz, veritaban nda mevcut olan verilerin gncellenmesi, silinmesi veya yeni veriler eklenmesi gerekti i zamanlarda kullan cnn bunu komutlar ile de il de, daha grsel olarak, h zl ve doru yaplabilmesini salayan bir ortamd r. Bu ortam da yine olaylar komutlar ile gerekle mekte, fakat kullan c bunu grmemektedir. rne in bir butona basldnda pencereyi kapatyorsa, bunu kullanc "pencereyi kapatan buton" diye bilir, ama gerekte o butona grevi programc vermitir. Kullanc ara yzn olu turabilmek iin ncelikle pencereye (Window)

ihtiya vardr. Pencere kendi aras nda ikiye ayrlmaktadr. 1. Window 2. Smartwindow gelmekte Normal Pencere Hzl, abuk , akll pencere anlamna

Bu iki pencerenin fark , window zerine nesneler (object) konulmakta, smartwindow zerine de smart nesneler (smart object) ve nesneler konulmaktadr. Buradaki nesne ve smart nesne kavramlar rn aklayalm. UIB aldnda karmza palette ba lkl ve zerinde 30 adet simgenin bulunduu bir pencere daha a lr. Bu penceredeki simgelerin hepsi nesne (object) dir. Bunlar n iinde alt 3 satr (9 nesne) smart nesne olarak isimlendirilir. Bunlar mutlaka smart window ile kullan lr. Normal nesneler, her iki window ile de kullan labilir.

New (yeni)

Uygulamay sakla altr Run

Kod sayfas

Renk butonu

Varolan nesne a

Nesne Listesi 6-1

Progress Prograrnlama

Palette

E3

Nesne

Smart Nesne

Bu nesnelerden baz lann kullanarak, istenilen i lemlerin o u yaplabilmektedir. Smart nesneler hzl uygulama yapmaya yneliktir, fakat bu hzllk karsnda uygulamalara (nesne trigger'larma) mdahale etme gere i duyulduunda biraz karmaktr. Appbuilder (ara yz masast) penceresinde yer alan simgelerin her birine, menlerden de ulalmaktadr. rnein, "new" seenei "File" mens seildiinde ilk srada gze arpacakt r. Hzl seim yaplabilmesi iin appbuilder zerindeki k sa yol simgelerinden faydalanlmaldr. Window (Pencere): Kullanclara ynelik ara yz yapabilmek iin mutlaka window gereklidir, zira yukandaki palet penceresinde yer alan nesneler mutlaka bir window zerine konulmaktad r. Burada window nesnesini bir otomobilin asisine benzetebiliriz. Otomobilin btn aksamlarm , asi zerinde tamaktadr.

6-2

User Interface Builder

Yeni bir window oluturmak iin fare ile "new" k sa yoluna baslr ve alan listeden "window" seene i seilir. Ekrana a lan window zerinde noktalardan olu mu ekle ereve (frame) ad verilmektedir.
<insert window bile> - Untitled:1

X Pencereyi kapat u Pencere Ekran kaplas n Simge durumuna kk

ereve (Frame)

Pencereni bal (henz verilmernis)

Uygulamann ad (henz verilmemis)

Bir window da en az bir frame olmaldr. Palette yer alan nesneler bu frame zerine yerle tirilmektedir. Bir window zerinde ne gibi i lemler yaplabilmektedir. rne in Pencereyi (X) kapat d mesine baslmas, simge durumuna kltlmesi, frame zerine fare ile ift t klama gibi olaylar vardr. te bu olaylar denetim altma alnp istenilen ilemler yaptrabilmektir. Trigger (Tetikleme, olay): Bilgisayar dnyasnda veya gnlk hayatta bunlara benzer bir ok olay vardr. Bir bankann atm makinasna geldiniz, ilk yapacanz kartnz czdannzdan kartr, kart yuvas na takmaya alrsnz, atm cihaznn ilk olay kartn doru ynde takld test etmektir. Bu test olay sonucunda atm cihaz, iki trl davranr, ya kart kabul eder yada red eder. Grld gibi bir olayn nasl deerlendirildi idir. Programc lkta byle durumlara trigger (tetikleme, olay) denilmektedir. Bu trigger'lann amac, kullamcmn davranlarna cevap vermek veya yanl l nlemeye ynelik olacakt r.

6-3

Progress Programhuna

Bir nesneye trigger olu turmak iin AppBuilder penceresinde yer alan kod sayfas (Edil Code) simgesine bas larak balan r. Bu simgeye bas lmadan nce yeni a lan window da hangi nesne seili ise onun trigger kod yazma sayfas gelecektir. Bu bir frame olabilir veya ba ka nesne olabilir. Hangi nesnenin seili oldu u ise yine appbuilder penceresi zerinden anlalmaktad r.
<insett window title> - Untitled:1

El

u anda frame seili, nk noktal olan alann kelerinde ve kenar ortalannda s iaretleri vard r. Bu i aretlerden fare ile tutularak nesnelerin boyutlar da de i tirilebilir. Yukar da frame'in seili olduu belirtilmi ti, bunu AppBuilder penceresinde, Object ifadesinin yan nda bulunan kutucukta, seili objenin ismi yer alacaktr. Her zaman yeni bir window a ldnda, varsaylan olarak, yani windowla beraber ayn byklkte oluturulan bir frame vardr. Bu frame ismi "DEFAULT-FRAME" dir. Trigger olaynn daha iyi anlalmas iin buton nesnesiyle rnek verelim. Button (D me): Palette penceresini bir matris gibi d nlrse 10x3 eklinde bir simge dizili i oluturulmu olur. Simgelerin seimini bu ekilde matris ise ifade edeceiz. Palette zerinden 4. sat r 2. stn da yer alan button simgesi farenin sol tu u ile seilir ve farenin sol tu u brak l r. Pencere zerinde yer alan frame zerine fare getirilir ve sol tu a bir kez tklamrsa button oluturulmu olur.

6-4

User luterface Builder

tinsert wieder. title> -

s
:ukton 1

Frame zerine konulan butonun ismi (object name) "BUTTON-1", butonun label (etiketi) ise "Button 1" dir. u ana kadar ki uygulama; window, frame ve en son olu turulan butondan ibarettir. Bu uygulaman n artk bilgisayara kalc olarak saklanmas gereklidir. Saklama i lemi AppBuilder penceresinde yer alan "Sakla (Save)" butonuna fare ile bas larak yap lr. Sakla butonuna basld ana "Save As" balkl ileti im penceresi gelir. Bu pencerede "Konum" isimli kutucuk uygulamalarn saklanaca alma dizinidir. "Dosya Ad" kutucuu ise yaplan uygulamann, bilgisayarn hard diskine kaydedilece i ismin yazlaca alandr. Yap lar uygulamay, Dosya ad kutucuuna "c-uygulamal" eklinde yazlarak, "Kaydet" d mesine baslr.
Save As

uygulama Uygulamann saklanaca dizin ad


Saklanacak Dosyan n adnn yaz laca kutu

-win
Protedbre.:1

6-5

Progress Prograrnlarna

Bu i lem arada bir yap lmal d r, ama art k sakiamak iin bir daha isim (save as penceresi) istemeyecektir. zerinde al lan uygulama hard diske sakland iin, art k pencerenin bal nda "c-uygulamal .w" ibaresi yer alacakt r. Daha nceden bahsedilen "triggers" (olay) olu turma i lemi; butona trigger olu turulacana gre ncelikle buton seilmelidir. Butonun seili olduunda, AppBuilder penceresindeki Objeck kutucu unda nesnenin ad olan "Button-1" ibaresi grntlenir. Butona trigger olu turmak iin AppBuilder penceresindeki "Edit Code" d mesine baslmaldr.
AppBuilde File E dit - Compile .ToolS Options. , Layouts

Obiect:IBUTTON-1
.

Lehte!:

tton 1
Edit Code butonu

Bu butona bas ld anda "Section Editor" ba lkl pencere ekrana gelecektir. Aadaki pencerede yer alan baz blmler srayla Section: Blmler On : Olaylarn listesi Definitions, Triggers, Main Block, Procedures, Functions OF : hangi nesneye ait oldu u Button-1, c-win, Default-Frame, oluturulacak di er nesneler New : yeni olay yaratma Choose (Seildi inde) Leave (ayr lrken) Entry (girilirken) List : Uygulamada varolan tm olaylar n listesi

Aa daki pencerede button-1 nesnesinin "choose" olay (triggers) grnmektedir. Yani buton seildi inde (bas ldnda) neler yap lmas isteniyorsa, bu pencerede yer alan DO: END: blo u aras na yazlmal dr.

6-6

User Interface Builder

Bu uygulama nn (altr) butona bas ldnda ekrana "Merhaba Astronomlar" iletisinin kmas iin, Section Editor'e (blm kod yazma sayfasna) aadaki gibi komut yazlmaldr.
Section Editor - Window Unt tledi File E dit lyisert Search 'tmpite H elrj

S eetiQt: I T riggers ON 1 CHOOSE


DO:

List... N e4V.:,,
Button 1

MESSAGE "Merhaba Astronomlar". END.

Uygulama altrlr ve butona bas lrda ekrana,

eklinde bir mesaj penceresi gelmektedir. Section Editr penceresi s k sk karmza gelecek olan bir penceredir. Her object (nesnenin) kendisine has bir ok olay vardr.

6-7

Proress ProLuarniama

Section Editr

Section (K sm, Blm) da bulunan Defnitions, Main Block, Procedure, Functions blmlerini k saca a klayalm. Defnitions : Uygulamann tanm ksm, deiken tammlama gibi Triggers : Nesnelere olay olu turma ve dzenleme Main Block :Uygulaman n ilk blou, uygulama al trd anda ilk yaplmas istenilen i lemlerin yazlaca ksm Procedures : Uygulama iinde al acak alt programlar Functions : Uygulama iinde, kullanc tanml sonu reten alt programlar Definitions: Uygulamann her yerinde kullan lmas istenilen global deikenlerin tan= yap ld ksmdr. Bir de iken eer; trigger, procedure veya function gibi ksmlarda tanmland ise sadece orada kullan lmaktad r. Bu trde tanmlanan deikenlere yerel (local) de iken ad verilmektedir. Tanmlanan de ikenin uygulamann her yerinde tannr olmas iin Def nitions ksmnda tanmlanm (global de iken) olmal dr. Her uygulamann bir tane "definitions" blm vard r. Main Block: Uygulama al-M-1141 anda ilk yaplmas istenilen ilemler main block ksmnda yaplmaldr. Main block k smnda yazlan komutlar uygulama al tnld nda bir kez uygulanr. Her uygulamann bir tane "main block" blm vard r. Triggers: Kullancnn nesnelerin zerinde olu acak olaylara mdahale etmesi gerekti inde komutlann yaz laca ksmdr. Bir butona basldnda, herhangi bir nesne zerinde farenin sol tu una ift t kladnda, klavyeden herhangi bir tu a basldnda gibi bir ok olay n, kontrol edilmesi gerekti inde kullanlacak ksmdr. Her nesnenin kendine zg olaylan vard r.

6-8

User Interface Builder

Procedure: Uygulamada bir ok kez, yap lacak ayn ilemlerin tekrar tekrar yazlmayarak, bunun bir alt programda bir defaya mahsus yaz larak kullan lan ksmdr. Alt programlar uygulaman n herhangi bir blmnden "Run procedure-name" eklinde yaz larak kullan lr. Bir ok "procedure" olu turulabilir. Functions: Progress de CAPS(), ABS(), EXPO gibi bir ok haz r fonksiyon mevcuttur. Kullan c sk sk kullanaca ilemleri bir alt program olarak yazaca ksmdr. Kullanc tamml fonksiyonlar, aynen progress'in hazr fonksiyonlan gibi kullan lr. Bir ok "function" olu turulabilir. Fill in
-

Fill-in objesi frame zerinde iine bilgi girilmesini sa layan veya sonucu ekrana grntlemede kullan lan bir nesnedir. Frame zerine, Palette zerinden 5.satr 3.stundaki simge farenin sol tuuna tek tklama ile iaretlenir (fare b raklr) ve frame zerine fare getirilir, farenin sol tuuna baslr ve ekilerek fill-in olu turulur. AppBuilder penceresinde yer alan "Label" kutucuuna fill-in-1 iaretli iken, "Fili 1" yerine "renci Numaras " yazlarak de itirilebilir.

6-9

Progress P rograml ama

<insert window title> - Untitled:1

renci Numaras: I

Fill-in deiken gibi alglanmaldr. Nasl ki procedure editrde bilgi girmek iin bir deiken tanmlanyorsa, burada bilgi girmenin yollarndan biriside fili-in dir. Fill-in de de ikende oldu u gibi alan boyutu, tipi, format', ilk de eri, label gibi zellikleri vardr. Bir nesnenin zelliklerini grmek veya de itirmek iin nesne zerinde farenin sol tu una ift tklanr (double dik) ve a adaki zellikler penceresi ekrana gelir. Buradaki zelliklerin o u daha nceden deiken tammnda kullanld gibidir. Oluturulan fill-in'e dikkat edilirse "object name" nesne adi "fill-in-1" eklinde gzkmektedir. kinci bir fill-in oluturulsa onun ad da fill-in-2 olacaktr. Bu ekilde nesneler oluturulduka nesne ad artan bir say olarak deiecektir (fill-in-1 [,2,3,...]).

6-10

User Interface Builder

Object: 1 FILL-IN LabeliFill 1 D Ohe As: Character T OOffipl G eometry Column oo Rov. 38 Other Setting,-; Width: 14. 00 Height:11. oo LeftAlign <.s Colon-Align Right-Align . J Format

r N o-Label
Format..

r Auto-Resize: r 'Auto-Return r- Blank r Deblank


Cancel

T; D isplay Enable T H icden

.No-tind

T- Natve

VievoiAs;Tht "
- -

Bu pencerede gerekli ayarlamalar yap labilir. iine yaz lacak rencinin Uygulamada yap lmas gereken, numaras, butona basl nca ozluk tablosundan aranacak, kay t mevcutsa ogr_no, adi ve soyadi'n ekrana gstermesi sa lanacak.
Section Editor - Window - Untitled:1

FIND FIRST ozluk NHERE ozluk.ogr_no = fill-in-1:5CT.EEN-VALUE IF AVAILAELE ozluk THE MESSAGE ozluk-adi oziuk.soyadi.

6-11

Progress P oQrarnIama

Burada nemli nokta bu i lemin butona bas lnca gerekle mesidir. O zaman bir olay geekle mektedir, bu da "Butona bas lnca" olaydr. Demek ki yap lmas gereken butonun "Choose" olay ndadr. Buton seiliyken AppBuilder penceresinden Edit Code (kod sayfas ) butonuna baslarak yukardaki ekran getirilir ve DO/END blo u aras na gerekli komutlar yukandaki ekildeki gibi yazlr. Uygulama AppBuilder penceresinde yer alan Run (al tr) butonuna baslarak aadaki ekrann gelmesi salanr.
<Insert window title> C:1

renci Numaras : 191050099

Bul

"renci numaras" alanna numara yazlarak butona baslrsa aadaki message balkl pencere gelecektir.
YAHYA DEMIRCI-5,N

Bu kk uygulamada yeni bir kavram daha kar mza kmaktadr. Bir nesnenin ekrandaki deeri "screen-value" zelli idir. Form zerinden alnan her trl karakter, say , tarih, mantksal bilgiler karakter zelliktedir. Kullanlrken gerekli dn mler yap lmaldr. Girilen renci numaras sayya evrilecekse int(fill-in-1:screen-value) eklinde bir dnm yaplmaldr.

6-12

User Interface Builder

Form zerinde bulunan her nesnenin ekrandaki de eri al nrken mutlaka "screen-value" zelli i kullan l r. Bu grnen; ogr_no, adi, soyadi bilgilerini message penceresinde de il de, form zerinde grntlemek iin ne yap lmaldr. Bu sorun iin gerekli olan birka tane fll-in'dir. Bu arada butonun etiketini (label) "Bul" olarak deitirilmi tir. rencinin ad , soyad, snf bilgileri iin, palette'den fill-in simgesini kullanarak form zerine 3 tane fill-in konulur.

jet

insert window title> c-gygulan alm Bu!

I 1:1 E 3

ekildeki gibi fill-inlerin etiketleri dzenlenmelidir.

Bu form haz rlandktan sonra imdi bu 3 fill-in iine, e er renci bulundu ise renci bilgilerini bu alanlara yaz lmas salanr. Aa daki (bul butonu trigger ) komutlara dikkat edilirse, fill-in nesnesine de er atamrken "screen-value" ekran de eri olacak ekilde atama yap lmaktadr.

6-13

Progress Programlama

' Section Editor - Window - C: Wygulama\c-uygulamal.w

n E3
I Bul

File Edit Insert Search Eompile Help Section: I T riggers CIN:10-10HE ":1 List... kserICall... OF: BuTTom-1

F1ND FIIt Y ozluk WHERE ozluk.ogr_no = IF MILABLE ozluk THEN DO: fili in 2:Scr:fiEN tALUE = ozluk.adi.
fill-in-3:SCPIE2J-VALUE = ozluk.soyadi. fill-in-4:SMEN-VALUE = STKNG(ozluk.sinifi).

END.

Bul butonun triggenn yukandaki gibi dzenlenir ve uygulama al tnlr, numara girilir ve bul butonuna bas lrsa, grnt aadaki gibi olur. Snf, saysal bir bilgi alan olduu iin, bu deerin fili-in nesnesine atanmas ilemi, string fonksiyonu ile karaktere dn trlerek atanr.
<insett window title>

Mu E
Bul

renci Numaras : 191050099

Ad: FAHYA Soyad : IDEMIRLAN S nf: 14

Radio-set Radio-set, frame zerine konulan ve oklu seeneklerden sadece bir tanesinin seilmesini sa layan nesnedir. Cinsiyet bilgisinin bir kay t iin mutlaka bir seimi vardr. Sonu, ki i ya erkek yada kad ndr. Bu bilgi fill-in ile kullanlacaksa, kullanc o alana "E" veya "K" girmelidir, fakat

6-14

I 'ser Interface Bu lder

baka harflerdc girebilir, bunun da engellenmesi gereklidir. Bu da ayr bir i lemdir. Bunlarn yerine radio-set kullan lrsa, bilgi giriinde, bu tr bilgilerin fare ile seimi daha h zl ve hatas z olacaktr. Radio-set'i frame zerine, palette'den 3x3. simge i aretlenir, frame zerine fare getirilir ve fare sol tu una baslarak nesne oluturulur. insed window title> - c-uygulamal FfIrl
O renci Numaras .

Frame zerine konulan radio-set butonlar her zaman ilk konuldu unda 3 adet seim listesiyle gelir. imdi yukanda Item 1, Item 2 gibi bilgilerin "Erkek" ve "Kz" eklinde dzenlenmesi gereklidir. Bu i lem iin radioset'in zelliklerine girilerek dzeltilmelidir.

6-15

Progress Programlama

Propetty Sheet - RADIO-SET-2


Object:

E!~
I

B uttons: "Item 1"


"Item 2", 2,
"Item 3", 3

in
4

D efine As: I nteger T ooltip: H elp ID: G eornetry Colurrity. J 39.00

>I
=N= m wo. mffirli

Width:r1700--i 00 Height13.

Left-A,lign R ght-Al gn

Row41.81

Othe Settings

D isplay

H idden r S ha(ed No-T ab-Stcp N o-U ndo

F D [cp-T arget E nable

I H orizontal

F- O K

Cancel

Advanced

Help

Buttons kutucu undaki "Item 1", 1; "Item 2", 2, yerine "Item 3", 3

"Kz","K", "Erkek","E"

ifadeleri yanda grlen ekle getirilmelidir. Define As kutucu undaki listeden "character" tipi seilmelidir. Son hali a adaki pencere gibi olmaldr.

6-16

User Interface Builder

Property Sheet - RADIO-SET-1

Object RADIO -SET -1


Buttons: "K z", "K", "Erkek", "E"

D eline As: Character T ooltip: Help ID: Geometry Column 37- 00 Row. Other Settings z.t'Display Drop-T alo& 17,7 Enable
-

_ 00
Height:

Left-Aiign Right-Align

os

Ir _

91

Hidden

F Horzontal

rr

S hared

F No-T eb-Stop
No-Undo

OK

Cancel

Advanced

Help

Radio-set, yukardaki gibi dzenlenirse, iki seimli bir radio button tanmlam olur. Burada "K" ve "E" de erleri karakter tan mlanm olup uygulama alrken, radio-set'den k z veya erkek seildi inde geriye dnecek deerlerdir.Radio-set'in ekran de eri Kz seildiinde "K", erkek seildi inde "E" olacaktr. "Kz" ve "Erkek" ifadeleri sadece kullanc iin bilgi olacaktr. Unutulmamaldr ki object, yani nesnelerin zelliklerine, o nesne zerine farenin sol tuuna iki kez pe pee basarak veya nesne seili iken AppBuilder penceresinde yer alan "Object Properties" butonundan ulalabilir.

6-17

Progress Prograrnlama

Bu uygulama altrldnda radio-set'ten seim yap ld anda, ne seildiini ekranda gsterecek dzenleme yap labilir. Radio-set'in de eri deitike denildi ine gre bu radio-set'in triggeri olmal dr. Radio-set iaretliyken "Edit Code" butonuna bas lrsa "value-changed" trigger' kacakt r ve bu trigger a a daki gibi dzenlenirse istenilen gereklemi olacaktr.
Section Edikor - Window - C: uygulama \c-uygulamal.w

Pile Edit Insert Search ,: - .Co-ipile Hdp


ectionl T hggers
ON 1VALUE-CHANGED DO: MESSAGE "Seiminiz:" radio-set-1:SCREEN-VALUE. EM.

St <insert window title>


t.l' rer ci N urnarau

Adi:
Soyack1 S r:{f ..

Message
e E

E- Tamam

6-18

User lnterface Builder

Uygulama altml r, ilk olarak Kz seilidir ve Erkek seene i seildii anda yukardaki "message" balkl pencere ekrana gelir. nk radioset'in deeri deitike (value-changed) trigger' na byle bir komut yazlmtr. Radio butonun deerini almak iin veya bir de ikene atamak iin xcinsiyet = radio-set-1:screen-value. Tersi durum radio buton gncellenecekse (ekran de eri deitirilecekse) Radio-set-1 :screen-value = "E". veya Radio-set-1 :screen-value = xcinsiyet. eklinde yazlmaldr. Radio-set butonlarm dikkat edilirse label (etiketleri) yoktur. Bunlarn ne anlam ifade ettiklerini (label) a ada anlatlacak Text nesnesinden yararlan larak belirtilir. Text Dikkat edilirse radio butonun etiketi veya ba l (label/title) yok . Form altnda ekranda yer alan Kz ve Erkek seeneklerin neyi temsil etti i pek belli olmuyor. Buna benzer objelere etiket vermek gereklidir. Buna etiket de il de form zerine herhangi bir metin yazmak eklinde tanmlamak daha doru olacaktr. Text (metin) nesnesi form zerine herhangi bir ileti iin veya label yerine kullanlmakta yardmc olacaktr. Text nesnesi, Paletten 6x 1. (T) simge i aretlenip frame zerine konulur. lk konulduunda ierii textl diye grntlenir.

6-19

Progress Programlama

ins.et window tido> - c--uygulanal.W tiOrcnci Numarau

Kendi istedi imiz ekilde, frame zerindeki textl ifadesini, AppBuilder penceresindeki, text kutucu undan de itirilebilir. "Text I" ifadesinin yerine "Cinsiyet" yaz lmaldr.
insert window kitle> - c-uygulanal: w

et

Nesnelerin (objects) iinde trigger' (olay) olmayan tek nesne "Text" dir. Text nesnesini zerinde olay gerekle tirilmemektedir. Combo - box Liste kutusu olan bu nesne de bir bilgi alan gibidir. Radio buton gibi grntlenen seeneklerden sadece bir tanesini semenizi sa lar. Combobox nesnesinin birka farkl kullanm vardr. Palette'den 5x2. simge seilir ve frame zerine fare ile yap trlr. Frame zerine "Combo-box-1" olarak yap trlr.

6-20

User Interface Builder

tinsert window title> - c-uygulamalm renci Numaras : Bul

191IJF3

Ad : Cinr:Iyet S oyadr. S n : I Cornbo 1

s K z
Erkek

Yaptnlan nesnenin zelliklerine girilirse (nesne zerinde fare sol tu u ile ift tklayarak), zellikler penceresinde yer alan baz blmler dzenlenmelidir. Label'da "combo 1" yerine "Do um Yeri" yazlmaldr. "Inner Lines" ise uygulama ah tnhp, combo-box listesi seildi inde ekrana ka adet liste elemar mn direk grnmesini salayacak ksmdr. Eer listede, 50 adet listelenecek e varsa bunun 10 tanesi direk grnsn istenirse bu ksma 10 says yazhr, dier liste elemanlar ise combo-box ait kaydrma ubuklar vastasyla grntlenir veya seilir. Bu combo-box nesnesi rencilerin do um yerleri iin kullanlabilir. Bunun iin, T.C. il ve ilelerinin bu nesneye item (para) olarak eklenmesi gerekir.

6-21

Progress Progra rnlama

Ptoperty Sheet - COME10-BOX-1 Oblect COMI30-80><-1 Label: l D o'Oun Yeri Lst-Iterns Item 1 List-Item-Pairs Inner Lines: 17

Define As: Character Simple

Format: Drop-Down

<7.*

Dtop-Do

Maximum C haracters . T ooltip:

1
Width. 16 . o o H eight' I:. 00

Help ID:1? Geometry


COILjnin:

Combo-box da ekranda listelenecek blm


LeWAli

RO.A.:16 95 Other Sett no..,

Hidden*

- T-

p- DisJzlay
Et-labje

"1

No-t ati kQp


artindo

r- DroPrBargsf

ct,ianCed..;

zellikler penceresinde "Item 1" yazan blmde a a doru srayla; Adana ve ilelerini, Adyaman ve ilelerini, bu ekilde 80 ilimiz ve ilelerinin girilmesi gerekir. imdilik 5 ilimizi girerek bu nesnenin nas l kullanlacan aratralm.

6-22

User Interface Br ilder

F>iroplar ly Object:

COMBO -BOX-1

1 COMBO-BOX-7
Ne Label
.

Label:1Do um Yeri List-It em


Adana Ad yaman Afyon Kayseri

I enet-

D efine A

Cherwter Simple

Format: 1 -<(2561 Drop-Do,fte C. Drop-Down-Li,, t

Format..

ivias,imumP~ere: T oolt p: H elp ID.

Colu , 9k419 - 00 , Other . .etting , Ap

W d _

o s->"

Lefi-Align R ght-Abon

H idder,

S hared

v
P

D.splay C, u3p T aree: Er,: ble.

N e-Tab-5tup

o,

Ca nse l

"Item 1" yazan k sm silerek yukardaki gibi dzenlensin. Uygulama altmlrsa ekran grnts aadaki ekilde olur, combobox da seim yap lrsa seti iniz item (para) aynen seilmi olur. Yani cornbo-box'dan "Adana" seilirse, combo-box-1:screen-value (ekran deeri) olarak "Adana" sonucu dner. Radio-sette oldu u gibi de er dndrmez.

6-23

Progress Programlama

tinsert window title>

el u 12I
Bul

renci Numaras:1

Ad:

1 1
Adana Adyaman

cinsiyet 6` Kiz .

Soyad:1 S ni :

F rkek

Doum Yeri:{

Form ilk altnda "Doum yeri" etiketli bir liste gelir, ii bo tur. Fare ile Doum Yeri listesi i aretlenirse, a a do ru bir liste dklr. Buradan herhangi birisi seilebilir. Burada i aretlemeden nce bo gelmemesi iin ilk deer olarak "Adana" atanmas gerekir. Combo-box dan seilen deere karlk tabloya baka deer atanacak veya tablodan okunan deer combo-box a farkl atarnak iin; rnein rencinin doum yeri tabloda ile kodu olarak tutuluyor; combo-box'dan seilen "Kayseri" ye kar lk tabloda "38" de eri tutulmaktadr. Tersi olarak, renci Kayseri'li ise combo-box' n ekranda grneni "Kayseri" olmas gerekir, bunu da ; if ozlukilce_kodu = "38" then combo-box-1:screen-value = "Kayseri". eklindeki komutlarla yapmak mmkndr. Tersi durum rencinin doum yeri yanl ve dzeltmek gerekiyorsa, yani listeden "Kayseri" yerine "Adana" y seerek bunu tabloya kaydetmek istenirse, if combo-box-1:screen-value = "Adana" then ozlukileekodu = "Ol". eklinde bir dntrme i lemi yaplmaldr.

6-24

User Irrrerface Builder

O zaman 80 il ve ileleri de say lrsa 3000'e yak n yukardaki gibi komutlar yazmak gerekecektir. Bu ekilde komutlar yazmak hibir zaman dnlmez ve de tavsiye edilmez. Biraz d nlrse bu ile kodlarnn ve ilelerin adlar nn ilce tablosunda yer ald grlr. Buna gre combo-box' n ekran de eri de itirilecekse, FIND FIRST ilce WHERE ilce.ilce kodu = ozluk.ilce_kodu NO-ERROR. IF AVAILABLE ilce THEN combo-box-1:screen-value = ilce.ilce adi. eklindeki sat rlk komut dizisi ile bu i lem halledilmi olur. Tersi durumda combo-box dan seilen il veya ile isminin ozluk tablosuna ile kodu olarak aktarlmas ise, FIND FIRST ilce WHERE ilce.ilce_adi = combo-box-1 :screen-value NO-ERROR. IF AVAILABLE ilce THEN ozluk.ilcekodu = ilce.ficekodu. eklinde yaplmaldr. Bu ekran deeri deitirme i lemi renci bulma ilemi yaplrken yazlmal, tabloya aktarma i lemi de ileride yapacamz "Kaydet" butonunda olmaldr. Eer tablodaki ile koduna kar lk combo-box da isim yoksa hata verecektir. rne in ozluk tablosuna yanl bir ekilde 8200 kodu girilmi olsun, bu koda karlk combo-box da ile ad olmayaca iin hata meydana gelebilir. Combo-box' n yukardaki kullanm "list-item" zelliidir. Bu mee en uygun kullanm "list-item-pairs" (ift para) zelli i olacaktr. Bu zellii kullanmak iin, combo-box' n zelliinde yer alan "list-itempairs" radio-butonu i aretlenmelidir. aretlendi i anda, aadaki gibi bir grnm elde edilir.

6-25

Progress Program]. na

Property Sheet COMBO-BDX-1


Object: COMBO-BOX-1 Label: Do um Yeri No-Label List-Item-Pair Iner Lines:

C List-ltems

Adana,Adana, Ad yaman,Ad yaman, Afyon,Afyon, Kayseri,Kayseri

Defines'.. Character :d

Format. IX(256)

r- imple f Drop-Down t Drop-Down-Li'st


Maximum Cbatackers: T ooltip:. 1 Hdp ID:12

Ft. 0,416.95

Burada her ehirden 2' er tane olmu tur. Asl nda bu deerlerden ilki ekrana grntlenecek de eri, ikincisi 'de combo-box' n seilene karlk deeri olacakt r. O zaman bu zelli i kullanabilmek iin ikinci de erleri ile kodlar ile dzenlemek gereklidir. Bunun dzenlenmi hali aadaki ekran grntsndeki gibi yap lmaldr.

6 26
-

User In erface Builder

Prepe rty. She - CO MB O -B OX-1


ObiectLabel 1D O'. urn Yeri List-Items C:` 1_isblter -f
Adana, 01, Aci,N, a .xa, 02, AEycn , O 3 ,3

T- No ebel
I rmer Line,

I7

Defirie

Cheraerer 2:j

Forma.

P:L2561
rz- Drop-De en-List

C- Simple C Drop Doen Maximum Cherecters ooltip. Flelp 1D-

Oeornetry
Cauese

P-

oo

s,,,/idth

How, 16

Height: _L. op

Left-Aliyn r Coton-Aligr Right ,Align

Other Settinds

r
rd fw
Dep!se T,,rget E neble

fW Hiciden
eb-S r..7 No-Onda

OK

dvar ced..

H elp

Uygulama altrlrsa, bu ekilde kullanlan combo-box iin art k ilce tablosundan arama yapmaya gerek kalmayacakt r. Bu zellikle combobox'dan "Kayseri" seildi inde, combo-box' n ekran de eri artk "38" olacaktr. combo-box 'in ekran de erini de itirmek iin, combo-box-1: SCREEN-VALUE ozlukilcekodu. combo-box'dan seilen de eri tabloya kaydetmek iin ise, ozlukilcekodu = combo-box- 1 :SCREEN-VALUE. yazmak yeterli olacaktr. Buraya kadar combo-box' n kullanm 5 il zerinden yap ld. Dier il ve ileleri combo-box'a nas l doldurulmal sorusu akla gelmelidir. Bu ilemler komutlarla yap lmal dr. Combo-box kullanmn iki ekilde

6-27

Prog etiS

PlOgrdltdatila

verilmi ti, combo-box' n iinin doldurulmas da, iki benzer yntemle yaplmaktadr. combo-box list-item eklinde kullanlyor ise; combo-box- 1 :ADD-LAST(item-list ) veya combo-box- 1 :ADD-FIRST(item-list) eklinde kullan m mevcuttur. l ve Ile isimlerinin combo-box'a doldurulmas ilemi iin ilce tablosundan yararlan l r. FOR EACH ilce: combo-box- 1 :ADD-LAST(ilee.fice_adi). END eklinde kullanlr. ADD-LAST seene i her eklenenin sona eklenmesini salamaktadr. Combo-box, list-item-pairs zelli i kullanlyorsa, combo-box-1:ADD-LAST(item-list,value) veya combo-box-1 :ADD-FIRST(item-list,value) eklinde kullanm mevcuttur. FOR EACH ilce: combo-box-1:ADD-LAST(ilce.ilce_adi,i1ce_kodu). END. eklinde olmal dr. combo-box nesnesinden bir item (para) silinecekse her iki kullammda da Combo-box:DELETE(item-lists).

6-28

User interfare Bu

eklinde kullanlr. Peki bu doldunna i lemi ne zaman yap lacakt r. Uygulama alt r ld nda bir butona has l nca m combo-box'm iini il ve ile adlar ile doldurulmal , yoksa uygulama ilk al maya ba larken mi doldurulmaldr. Tabi ki en uygun olan uygulama ilk al maya ba laynca kendili inden dolmal d r. Bu i lem de hat rlanrsa, bir uygulama ilk al rken yap lmas gereken bir blm olan "Main-block" ta yap lmaldr. Toggle-box (check box) Sadece i aretlenebilir veya i areti kaldnlabilen kutu eklinde bir nesnedir. aretlendi inde "yes", iareti kaldr lrsa "no" deeri dndren bir nesnedir. Bir ifadenin var veya yok anlam na geldi inde kullanlabilir. rencilerimizin har al p almadn bilmememiz gereklidir. Bunun iinde ozluk tablosunda harc_kredi alan vard r. Bu alann tipi logical (mantksal) idi. Bu bilgiyi baz alarak toggle-box olu turalm. Toggle-box ; palette'den 3x3. deki simge i aretlenerek frame zerine konulur. Label olarak verdi imiz rne i kullanalm ve "Har Al yor"
<insert windeng litle> - c-uygulan
riiiijirenci Numaras ii

1.# ElE3E3
Bul

Ad : Cinsiyer oyad :
(i- ` .

K z

C Erkek .D Yeri: Hana

Har Aiyor

eklinde bir label verelim,

6-29

Progress Programlama

Toggle-box nesnesi logical bir nesne oldu u iin yes veya no de erine sahiptir. Bu nesneye de er atan rken, toggle-1: SCREEN-VALUE = "yes" . eklinde (ekranda kutunun ekli) veya toggle-l:SCREEN-VALUE = "no" . eklinde de kutu eksiz hale gelecektir. Toggle-box' n ekran de eri okunurken ise MESSAGE toggle-2:screen-value. eklinde grntlenir, tabloya veya deikene atama yap lrken ise, IF toggle-1:SCREEN-VALUE = "yes" THEN ozluk.harc_kredi = yes. eklinde deer kontrol edilerek atan r. "Uygulamal" isimli uygulamada buraya kadar anlat lan nesnelerin kullanmyla ilgili komutlar topluca aadaki ekranda yer almaktadr (Bul butonunun choose trigger' ).
, Section Edin - WJndow - C:\nyoulama\c-uygulan al_w Ede E d t Insert. earch Complie H elp

MEM'
I Bul

sectiQnje.,

IriSe(Cd11. tABUTTON-1

ON1CnoosE

v nD FIYCST onluk LJAEkE o luk.ogr_no = NO-ERP,OF. IF AVAILABLE onluk TREN DO: fili-in-2,9CT,FEM-VALUR = oaluk_adi. fili-in - 3,3CREEN-VALVE = ozluk_soyadi. fili-in-4,ROBBEW-VALUE = STBING(oaluk_siaifi). cineiy=t iin . / radio-set-1:3CfiEWN-VALUE ocluk_cinsiyet_ '*doua .e211; combc -box - 1:SCPF2N-VALUE = orluh.ilce_kdu.
ii,2 '

coggle-1,SONEBN-VALUE = STNINO<oelmk.harckredi. IEND. ELSE MFOOANS . Bu numaraya sahip renci bulunamad .

6-30

User Intuface Bu ldu

l ve 'Ie isimlerinin combo-box iine doldurulmas iinde "Main-Block"


SeotionEditot -Window - C. uygulama c-uygulamaiw

RIO

dile

Edit Insert Search Com0e Hdp _11 ' List... I Insaf

Section:1Main Block

' Now .A,zablo

the -_tce and ww2t. f .-, the e),i aVOTE: kxand2. ERROR az>d END - KRY so clear2up ood,e wi11

HAIN-BLOCK: DO ON ERPUP UNDO MAIN-BLOCR, LEAVE MAIN-BLOCE ON END-KEY UNDO HAIN-BLOCR, LEAVE HAIN-BLOCR, RUN elable_UI.

FOr. EACH ilce coxbo-bnx-1,ADD-LAST(ilce_ilce_edi,ilee_ilce_kodu)_ EM>.

IF NOT THIS-PROCEDURE:PEBBISTEBT TREN WAIT-BOR CLOSE OF THIS-PROCEDURE.

dzenlenmelidir.

DB-Fields (Veritaban alanlar) u ana kadar ki kullanlan nesneler veritaban ndan bamszd, komutlarla baml (ilikili) hale getirilmi ti. Tablodaki bilgileri (alanlar) ekranda grp bu alandaki veriyi gncellemek gerekir, tablo alanlarnn frame zerine getirmek iin, bu nesne kullan lr. Normalde bunu fili-in' lerle de yap lyordu, ama zahmetli bir i olmaktayd. Bir ok alan var ise bunlann says kadar da, ekrana veri alanlar (fili-in) konulacak ve her birinin iini tablodan al doldur, saklanaca zamanda btn tabloya aktarma i lemi yaplacaktr. Bunun yerine DB-Fields'lar kullanarak i ler biraz daha kolaylaacaktr. Aslnda mantk ayn, fakat daha kolay olmaktad r. Her ikisi de deiken; birisi tablo de ikeni dieri ekran de ikeni eklinde ifade edilebilir. Bunu rnekle a klamaya alalm. zlk tablosu iin ikinci uygulamay yapalm. Bu uygulama tablodaki alanlan kullanarak verilen grme, dzeltme, silme ve kaytlar aras nda gezinme gibi olaylar gerekletirsin.

6-31

Progress Programlan a

Adm 1:Yeni bir Window


renci Bilgileri - Untitled:1

Yeni bir window a lr ve label " renci Bilgileri" eklinde deitirilir. Adm 2:Palette'den 1x2. simge olan DB-fields seilir window zerine iaretlenir ve aadaki tablo se penceresi gelir.

T ables Ders I Ice N otlar 0 gretmen

Bu pencereden ozluk tablosu seilir "OK" butonuna bas l r.

6-32

User Interface Builder

Selector
Available Fields: Selected Fields: Oztuk.Oqr No Ozluk.Adi Ozluk.Soyadi Ozluk.D_Tarihi Oduk.lice_Kodu Ozluk.Cinsiyeti Ozluk.Sinifi zluk.Harc_Kredi OzlukAdres[1] Ozluk.Adres[2] Ozkk.Adres[3]

H
OK Canca!

Ozluk tablosuna ba l olan alanlar ekrana grntlenir, (multi-field selector). Soldaki alanlar "Available Fields" kutucu undan iaretlenerek, "Add" butonuna bas larak, "Selected Fields" kutucu una saa tanr. Sada seili alanlarn sras, yine bu ekranda de itirilebilir. Add butonu ile sa pencereye tanr, remove butonu ile sol pencereye geri alnabilir. Move Up, Move Down ile sa pencerede alanlarn form zerine geli sras belirlendikten sonra Ok tu una baslarak seili alanlar window zerine getirilir. Aadaki form bu ekliyle altnlrsa ozluk tablosundaki ilk kayt grntlenir. Di er kaytlar grntlemek gerekir, bunun iin ikinci kayda git veya bir nceki kayda git gibi komutlar verilmelidir.

6-33

Progress Programlama

tihrenei Bilgileri - c-upgulamaaw

, ... renci No:

I I Soyad: I
Adi: Do um Yeri: IP0--Cinsiyeti:

Do um Tarihi: Ini /01/190o

I--r

.
Adres[l ]: Adres[2]: Adres[3]:

'Har Kredisi: no

Ekrandaki kayt gncellenirse bunun tabloya kaydedilmesi, yeni kay t eklemek iin formun ayarlanmas , kayt silmenin yaplmas , btn bunlarn yaplabilmesi iin formun altna bir ka buton konularak bu ilemlerin yap lmas gerekir. leri, geri, kaydet, sil, yeni kayt gibi butonlar yerletirilsin. Butonlar frame zerine a adaki ekilde yerletirip labellan da ayarlanmal dr. Bu uygulama al tnlrsa, yine ilk kayt gelir di er kaytlara gei yaplamaz. Butonlar form zerine konuldu, ama butona grev verilmedi. imdi butonlara srayla grevleri verilmelidir.

6-34

User Interface Builder

renci Bilgileri

'i ren No- 000500


Adi: jR. GUL SEVIN Soyad-. IPEKNIEZCI Doum Tarihi:123105/198Z Doum Yeri: 1602

Cinsiyeti: s nf:

Har Kredisi.ncr rAdres(1 J: ISOLIKKUYU AYDIN SOKAK Adres[2]: 145

Adrest31: OSMANCI K

Geri Butonu choose trigger' :


S ection Edikor - Window - N.uyguiam.aN..-..vgu ama 2 -

1E3

t 'rs ef
Triggws .. CH01;

Sei

..

CoMPit

L rj 4

'An80:1.c-P11,.;
01HUTTOM -6

IND PRES, arlah NO-RPkOP.. 'F AVAILADLE onluk =EM DO: DXSPTAY Orlu3w_Aai Or alc.Adrasr,T Onluk-Adres( :' ? Orl ar_Aararl OrDat.Ciariyeri OrThi,_D Tarihi OrlaH_Hare_Hradi OrDalc-IlaaKoda Orl alc_Ogr Na Orlah_Siaifi OrDuk_Soyadi WTTH FRANI' defaalr-fraaa-

ENT:,
Ii

D_
.

1.

Bu trigger da, "DISPLAY bilgi-alanlar WITII FRAME DEFAULT-FRAME." satrn inceleyelim. Display; bilindii zere grntle komutudur.

6-35

Progress Programlama

Bilgi-alanlar, aralarda bo luk olacak ekilde yan yana veya alt alta yaz labilir,
WITH FRAME DEFAULT-FRAME ;

grntlenen alanlar n nerede gsterilmesi gerekti ini ifade eder. Bilindi i gibi objeler ve alanlar frameler zerine konulmaktayd , bilgi alanlan (db-felds) da frame zerinde oldu una gre bu alanlar frame zerinde gster anlam ndadr. leri Butonu :
ec tion Editor - Window - C:\Laygullama c-uygulama2..w
File E d t Inser S ect on: ON: r guers Search Serrraile HeIC List . Insert Cell...
-

Eg 1E3

I cHooss
ozluk o.luk THEN

OF1BUTTON -6

PIN' IP

ncc
DISPLAY 0.1.k_Adi 0.1uk_AdresUl 0.1uk_Adrest7 0.1uk_Adrws[2] 0.1uk.Cinsiyeti 0.1.X_D Tarihi 0.1uk.147 rc_Kredi 0.1uk_I1ce_Kod-u 0.1uk.Ogr_No Ozluk_Sinifi Fr TH F RAF.,32 0.1 -uk_ Soyad

defsllt-frame

ErT,
END.

leri ve geri butonlar yla, kaytlar arasnda hareketler sa lanr. Dikkat edilirse "Geri" ve "ileri" butonunda de ien sadece 2. satrda "PREV" ve "NEXT" ifadeleridir. E er "ilk kayt" ve "son kayt" gibi iki buton daha eklenecekse, ayn olan ksmlar bir procedure iine yaz larak kullanlmaldr. Ekranda aktif kayd n bir bilgisi dzeltilirse bunun tabloya da yans tlmas gerekir. Bunu "Kaydet" butonuna basarak gerekle tirmek gerekir. Bilgi dzeltilecek ve kaydet butonuna bas lacaktr.

6-36

User Interface B u ilder

Kaydet butonu trigger' :


Section Editor - Window - CAuygula nac-elygulamaaw File Edit Insert Search ComOle Help Sechety

IT riggers

InserICal.
CW-. 01BUTTON-3

ON: CHOOSE

CREATE ozluk. ASSIGN Ozluk_Adi Ozluk.Adrest ) Ozluk.Adres[l Ozluk.Adres[ ] Ozluk.Cinsiyeti Ozimk.D_Tarihi Ozluk.Harc_Kredi Ozluk.Ilce_Rodu Ozluk_Ogr No Ozluk.Soyadi _

ASSIGN komutu frame zerinde bulunan tablo alanlar nn ekrandaki bilgilerini, tabloya atama anlam na gelmektedir. Dikkat edilirse frame zerine bir fill-in veya ba ka nesne konulduunda, o nesnenin ekran deeri (screen-value) her zaman karakterdi. Bu bilgileri tabloya aktarrken mutlaka dntrme (karakterden-say ya,karakterden-tarihe gibi) ilemler yaplmaktayd . Ama tablonun kendi alan frame zerinde ise dnme gerek kalmadan aktanlmaktad r. Burada frame zerindeki nesneler, tablonun direk alanlar ise sorun yok, eer ki frame zerine ba msz nesneler konulursa (combo-box, radioset, toggle-box gibi) bunlar iin ayr ca display veya assign sat rlar yazlmaldr. Cinsiyet bilgisi iin bir radyo-set buton kullaml rsa ; Radio-setten Kz seilirse bunun de eri "K" idi, bunun tabloya "K" olarak atanmas gerekiyor.

6-37

Progress Programlama

Assign ozluk.cinsiyeti = radio-set-1:screen-value. butonuna yazlr.

eklinde kaydet

Tablodan grntlenecekse; radio-set-1:screen-value = ozluk.cinsiycti. eklinde ileri, geri buton tri ggeflan na ayr ca yaz lmald r. Yeni butonu trigger' : Yeni bir kay t eklenecekse bu buton kullan lmal, yeni kayt ta ncelikle alanlann ieri i silinmelidir. Yeni Bilgiler ekrana girilir ve bu bilgilerin saklanmas/kaydedilmesi gerekir o zaman kaydet butonuna bas lr. Kaydetmeden nce tabloda bo bir kayt oluturulmal daha sonra kaydedilmelidir. DO: clear frame {&FRAME-NAME}. END. eklinde bir kod yeni butonuna yaz lr. Burada "clear frame defaultframe" yerine "clear frame {&FRAME-NAME}" eklinde bir ifade kullanlmtr, Bu kullanm genelletirilmi bir ifade olup o anda hangi frame de al lyorsa onun yerine yani "kullan lan frame" anlamna gelmektedir. Tabloda bo kayt (create) olu turmay neden kaydet buton da yazmalyz, sorusuna cevap olarak; Kullanc yeni butonuna bast , ekran bo altld ve create komutu uyguland, bu srada yeni kay ttan kullanc vazgeti. Tabloda bo kayt oluturulmu oldu. Kullanc bu eylemi ok kez yapabilir ve bo kayt eklenerek hatalara sebep olabilir. Buna engel olmak iin kullan c verileri girer ve gerekten ekleyecekse "Kaydet" butonuna basar bo alan (create) oluturulur ve bilgiler saklan r. Kaydet butonu var olan kayd saklamay veya yeni oluturulan kayd saklamaya yarayacaktr. Bu aamada saklanacak kaydn yeni mi, yoksa var olan kay t m olduu, bir deikenle denetlenmelidir.

6-38

SL

lurerface Builder

Section Editor -Window - C:luygLdan ac-tlygulama2.w File Edit Insert Search Compile Help S ection: 1 D erinitions 2:1 List...

Insert Call...

CREATE WIDGET-POOL.

Fd3 - b.ns Defiz2i';ions --Local Viable 23,fi:p2i= --xdurum AS CHAk.

DEP

Definitions blmnde (yukar daki ekilde) global (her yerde geerli) olan xdurum deikeni tanmland .
Section Editor - Window - CAuygulama\c-uygulama2.w
-

kr:g?"

Sechon. Triqqer;

insert. Cell.. Ne,N. , BUT T ON-Z

ON:1 cHooss
DO:

xdurum = "yeni". CLEAR FRA1E { ,FPAME-NANE}, . .

Yeni butonunun trigger' yukardaki gibi dzenlenmelidir. Global deiken olan xdurum'a "yeni" ifadesi atanm tr.

6-39

Progress Programiarna

S ection E ditor - Window - C: lygulanalc-uygulama2. w File Edit Insert earch Compile Help List... New_ Insell Call... OFIBUTTON-3

Ej

ec6ou. T riggers ONicHoosE

2.
2..j

IF xdurum = "yeni" THEN CPEATF ozluk. A3E:ICH Ozluk_Adi Ozluk.Adres(l Ozluk_AdresLI Ozluk_Adres(1
Oziuk.Cinsiyeti

Ozluk.D_Tarihi Oz uk.Harc_Kredi Ozluk.Ilce_Kodu Ozluk_OgrNo


Ozluk.Sinifi

Ozluk_Soyadi . xdurum = "". END_

Kaydet buton trigger' m yukardaki gibi yeniden dzenlemek gerekir. nk kullanc bilgileri dzeltirken mi kaydet butonun bast , yoksa yeni kayt eklenip te mi kaydet butonuna bast, bunu ayrt etmek gerekiyor. Bunu ayrt etmek iin yeni butonuna bas ldnn kontrol edilmesi gerekecek, eer basldysa create ve assign komutlarm uygulanacak, yok baslmadysa, sadece assign komutunun uygulanmas eklinde bir dzenleme yap lmaldr. Bu kontrol de "Definitions" blmnde tanmlanan uygulamann her yerinde tannan bir deikenle mmkn olacaktr. Hatrlanrsa, bir procedure veya her hangi bir trigger iinde tanmlanan de iken sadece tan mland yerde geerli idi. Kaydet butonnda dikkat edilirse xdurum de ikeni boaltlyor.

6-40

User Interface Builder

Sil Butonu trigger' : Bu butona baslnca ekranda bilgileri grnen kayd n tablodan silinmcsini salayacaktr. Bu kayt bir daha bulunamayaca ndan silme i lemi yaplrken kullanc uyarlmaldr.
Section Editor - Window - CAuygulamac-uygulama2.w

11 El

File Edil Insert Search ornpile Sectionr T riggers ONionopss

H elp

List...

Insert Cell ..

OF1BuTTon-4

DO: DEF VAP sor AS LOGICAL. MESSAGE "Silmek istediinizden emin misiniz ?" VIEY-AS ALEFT-BOX QUESTION BUTTON YES-NO TITLE "Uyar " UPDATE sor. IF sor = yes TREN
DO:

IF AVAILABLE ozluk THEN DELETE ozluk.


END .

END.

Mesaj ile kullancnn verdii "evet" / "yes" cevab ile aktif olan kayt tablodan silinmi olur. Fakat ekranda hala silinen bilgiler kal r. Silme ileminden sonra, ekrana bir sonraki kayd n gelmesi salanmaldr. Browse Database'deki alanlar n stunlar halinde s ralanmas ve verilerinde bu stunlann altnda satr halinde grntlenmesini sa lar. u ana kadar window zerinde tek bir kay t grntlenmi ti. Browse ile excel'deki alma sayfas benzeri, ekrann byklnde birden ok kayt grntlenir, kayd rma ubuklar ile dier kaytlar grntlenir.

6-41

Progress Programlarna

Browse nesnesine, notlar tablosunu rnek vererek ba lanrsa, bu nesnenin anlalmas daha kolay olacakt r. Browse oluturabilmek iin ncelikle yeni bir window olu turulmal dr. Daha sonra Paletten 2x . simge olan browse seilir frame zerine farenin sol tuuna bir kez bas lmak suretiyle b raklr.

r"
Database: ogrenci Available Tables: Ders lIce Ozluk

\Alhere

Soft

Options Fields...

dd

:1

Selected Tables &Joins: Notlar

Quer s :
FOR EACH Notls.r NO-LOCK INDEXED-REPOSITION:

rdexed-Repc%ition OK. Carcel

Check SyntaK tvpaV F On CI.K Freefoim Query .. I H elp

Seilen browse nesnesi frame zerine b rakld anda yukar pencere kacak ve buradan bir tablonun seilmesi sa lanacaktr. "Available tables" kutucuundan "Notlar" tablosu seilerek sa tarafa (selected Tables) kutucu una tanacaktr. Yine ayn ekranda yer alan "Fields" butonuna baslarak browse nesnesi zerinde yer alacak alanlar seilmelidir. lk alan pencerede "Add" butonuna bas ld anda "Multifield Selector" bilgi alanlann seme penceresi gelecektir. "Available Fields" var olan alanlan, "selected fields" seilmi alanlar penceresine

6-42

Eser interface Builder

SOlett Available Fields: Selected Ocir_No Kodu Donem Sube Vize Final Basari

Lsdd

OK

Cansel

Help

(yukardaki) ekilde grld srada ta narak "OK" butonuna bas lr, "column editor" penceresine gei yaplr.
Column Editor

ri-od
e OgrNo e Kodu e Donem e Sube e Vize e Final e Basan li r. No.
M o've own Add

Dcable-auMzap Colun n-R ead-0 nrj,,

Auto-P, etum

p- Enable
rk; Visible Aut.c.R eme

Enable Ali Column D sable Ai


...ak: s... laled Field.. I

renci N marasi fft,

Carca!

6-43

Progress Prograrniama

"Column editr" penceresinde seilen alanlar n srasn, enable veya disable gibi zellikleri deitirilebilir. Enable zelli i browse altnda bilgilerin gncellenmesi iznini, disable zelli i de sadece okuma zelli ini verir. Bu zellikler btn alanlar iin veya istenilen alanlara verilebilir. "Column Editor" penceresinde seilen alanlar n btn zellikleri dzenlenir. Column Editor penceresinde "Ok" bas ldktan sonra olu an uygulama aadaki gibi olacaktr.
st cinsed window title> - Untitled:1

:dr. No.

D.Kodij Dnem

ube Vize Final

Bu yaplanlarn hard diskinize saklanmas nda yarar olacakt r. AppBuilder penceresinden sakla simgesine basarak dosya ad kutucuuna "c-uygulama3" ismini yazarak uygulama saklanmal dr. Frame zerine konulan browse nesnesinin boyutlar n fare ile uygun biimde kltme veya byltme yap labilir.

6-44

User Interfacc [3 ilder

Bu uygulamada dikkat edilirse istek d al t yani btn rencilerin dersleri ve notlar nn geldii grlmektedir. Bunun zelle tirilerek sadece istenilen rencinin derslerinin getirilmesi sa lanabilir.
Sorgu

Db-fields ve browse gibi nesneler tablolardan bilgi al rken baz koullara gre kaytlar ekrana getirir. Bilgilerin ko ula gre seilmesi olayna sorgu denilmektedir. Bu iki nesne aksi belirtilmedike btn kardan seerler yani sorgularlar. Browse nesnesinde, dikkat edilirse btn kaytlar ekrana getirilmi ti. imdi koula gre sorgu yaplmas i lemi nasl gerekle tirilmektedir. Bir browse nesnesi tablodan a adaki gibi kaytlar sorgular. OPEN QUERY browse-name FOR EACH tablo-ad . eklinde genel bir kullanm vardr. nc uygulama olan browse nesnesindeki sorgu ise OPEN QUERY browse-1 FOR EACH notlar. eklindedir. Bu sorgu (query) ko ulsuz olumutur. Bu sorgu, browse nesnesi oluturulurken tablo seildi i anda otomatik oluur. Sorgunun koullu olarak almas (open edilmesi) yle olmaktadr, OPEN QUERY browse-1 FOR EACH notlar WHERE ko ul-cmlesi. eklindedir. Son yaplan uygulama yle geni letilsin, formun zerine bir fill-in ve bir buton konulsun.

6-45

Progress Progra nlan a

<insert window title> e-uygulamalw

E3

renci No:

Gster

Nr. No. ID.Kodu

ubelVize Final 3aar

Fill-in ve butonun etiketleri yukar daki gibi dzenlensin. Butona yle bir komut zinciri (aadaki gibi) yazlsn ki, fill-in iine yazlacak renci numarasna ait kaytlan browse zerinde gstersin.
Section Editor - Window - CAuygulamac-u3rgulama3.w

I3

FiIE

Edt Ired S earch Cou& Hdp mert CaL

Sect io n: T hggers ON:

..I
Gster

FZ7S7----

Nem.. 10F1BUTTON-7

DO: OPEH QUERY browse-1 FOR EACH notlar UHERE notlar.ogrno = fill-in-l:SCREEN-VALUE.

6-46

Lise' Interface Builder

Butonun cboose trigger' yukar daki gibi dzenlenir ve uygulama caltu l r. renci numaras girilerek "Gster" butonuna bas l.rsa, browse zerinde sadece girilen renciye ait dersler grntlenir. wrt` tinsert window tido>
ienci No: 91050099

...

: ...... ... .

0 5. Na 91050099

D Kodu

Dnem

ube

Final

Baar'

A.

A202

1993.94/2

69

60

64

91050099 91050099 91050099 91050099 91050099 91050099 91050099 91050099 91050099 91050099 91050099 91050099 91050099

A204 A206 A211 A212 A301 A302 4303 A303 4304 A305 A305 4307 4307

1992-93/2 1992-93/2 1992-93/1 1992-93/2 1993-94/1 1994-95/2 1993-94/1 1994-95/1 1 993-9412 1993-94/1 1994-95/1 1993-94/1 1994-95/1

A A A A A A A A A A A A

50 64 34 37 81 53 30 65 44 20 52 49 88

65 60 60 30 63 35 45 75 25 50 GO 25 95

59 62 50 51 62 78

0
71 54 57 92

image (Resim)
Bir uygulamada frame zerine resim eklemek iin kullan lr. Paletten

3x1. simge fare ile seilir, frame zerine fare getirilir ve farenin sol tuuna tek t klayarak image nesnesi olu turulur.
cinse *ynda. - c-kdpgalantn---

15:3

6-47

Progress Prog,ramlarna

Default olarak bir resim (siyah bir icon) konur, bu image nesnesine farenin sol tu u ile ift tklanarak image nesnesinin zelliklerine girilir. Default olarak eklenen resim nesnesinin, zellikler penceresinde de ayn resim bulunmaktad r, bu resim zerine yine farenin sol tu u ile tek tklayarak, hard diskinizde mevcut olan bir resim ile de itirilebilir.
Propetly Sheet - IMAGE-1
Object: Image adeiconlblank T coltip: I

Geometry
Column:12o.co How:13.14 Width:112
.

Lett-Ahon Right-Align

Height:

13 _ os

Other S ettings
Convert-3D -Co!ors 17; Enable Hidden Transparenr

F S tretch-tc-F r

OK

Cancer

6dvanced 1

Help

zellikler penceresinde "adeicon" dizinindeki "blank" resmine ift tklanarak a lacak aadaki pencerede, "File Type" combo-box listesinde, yer alan trlerdeki (bmp, jpg, gif gibi) bir ok resim seme imkan vardr.

6-48

User Interface Builder

File:

adeicon admin%.ico

l admin%.ico
None
8driir13.,;, CCI

crfginf o co comp%.ico debug%.ico dict%.ico ednico help%.ico proexp.ico progress.ico File jpe: All Picture Files B itmaps (x.bmp,'.dib) lcons (x.ico) GIF (".grf) JPEG r.jpg] CALS r". IZ; PreyieW' Edit Path...

Hard diskteki dier resimlerin seilebilmesi iin "Browse" butonuna basarak istenilen dizinden resim semek mmkndr. Progress'in sabit resimlerinin bulunduu dizin (Directory) combo-box listesindeki "adeicon" dizininde mevcuttur. Kullan c resimlerinin bulundu u baka bir dizini de "Edit Path" butonuna basarak, directory listesine ekleyebilir. Dikkat edilmesi gereken bir husus da kullamc resimleri, uygulamada kullanlacaksa ve bu uygulama ba ka bir bilgisayarda al tnlacaksa, kullanc resimlerinin de o bilgisayarda ayn dizinde olmasna dikkat edilmelidir. Aksi halde hatalar ile kar lalabilir. Functions Bilindii gibi progress'in caps, abs, modulo gibi bir ok haz r fonksiyonlar vardr. Programc da yapt uygulamada sk sk kulland bir ok ilemi bir alt programda toplayarak daha titiz ve h zl program

6-49

Progress ProQramlama

yapabilmeyi hedefler. Bunun iinde, kullame tanml alt programlar olan fonksiyonlar tanmlar. Fonksiyonlar bir ok de er alr, bunlar zerinde ilemler yap lr ve geriye tek de er gnderir. Fonksiyon oluturma i lemi iin yeni bir window olu turulsun. Bu yeni uygulamada bir buton koyal m ve bu butona baslnca oluturulan fonksiyonun kullanmn grelim. ncelikle yeni bir window olu turuldu unu, bu window zerine de bir buton konulduu kabul edilirse,
Section Editor - Window - CAuygulama\c-uygulama4.w e D File Edit Insert Search Con pile Hdp S ection: T riggers Definitions ON: Triggers Main Block Procedures

List

Insert Call OF: IBUTTON-1

"Edit Code" butonuna baslr, section listesinden "Functions" seene i seildii anda fonksiyon tanm yaplabilmesi iin bir onay penceresi kacaktr.
Question

There are ro functions defined. Create a new one ?

Hay r

Bu onay penceresinde "Evet" d mesine bas lr ve yeni bir pencere ile karlalr. Bu pencerede olu turulacak fonksiyona bir isim ve fonksiyondan geriye dnecek de erin tipinin seilmesi istenir.

6-50

User Interface Builder

New Function

Name: J birlestir
R eturns:1 CHARACTER

OK

Cancel

Help

Name kutucuuna yeni olu turacak fonksiyona "birle tir" ismi yazlr ve "Returns" listesinden de "character" seilerek "Ok" butonuna bas lr. Her oluturulan fonksiyon iin a a daki pencere gelecektir.
Seeeen Editer W ndow - C:\uygula nakc-uygulania4.w Hile Edk Insert Search Compde Helo

Functions Ni?r

v'
New

birlestir

RETUPMS CHARACTER
' paranseter-den,:2ition5 "/ t
Furpo: Notw:

RETURN "".
Nil FUNCTION.

/' Function

r6t.urn valu.

Bu fonksiyon iki de er alacak (ad ve soyad ), bu deerleri byk harfe evirip, birbirine ekleyecek ve bu eklenmi ad soyad geri dndrecek.

6-51

ProPress Proprarnlarna

Bu pencerede baz tanmlamalar yap lmaldr. Bu fonksiyonu ka de er gelecekse bunlar, ( /* parameter-clefinitions */ ) ksmnda parantezler iinde belirtilecektir. rnekte iki deer gelece inden, ( xadi AS CHAR, xsoyadi AS CHAR/* parameter-definitions eklinde olacaktr. Geriye dnecek de er bu fonksiyon iinde tanmlanmaldr. DEF VAR xdonen_deger AS CHAR. eklinde tanmlanacakt r. Tanmlanan bu deiken en alta yer alan RETURN `"'. satrnda RETURN xdonen_deger. eklinde belirtilmelidir. Bu fonksiyonda yap lacak ilemler ise de iken tanmlama satr ile RETURN satn arasnda yaplmal dr. Fonksiyonun son hali aadaki pencerede oldu u gibidir.
Section Editor - Window - Ltuyoulamatc-uyoutamakw File Edit 'Insert Search Con-pie Help
Section. I Funct ons 2'1 List_ New._
tIST

NDE
Private

Name1bir estir
RETURNS CHARACTE R.

R erler-ne._

(xadi AS CHAR, xsoyadi AS CHAR /u poraw6ter-defin ions */ )


Furpos: Notese
DEF VAR xdonen_deger AS CHAR.

xdonen_deger = CAPSxadi? TIM xdonen_deger. FUNCTION.

" "

CAPS(xsoyadi).

/* nnction return va2ue. *

Lt

imdi "Kotur" butonunun trigger' da aadaki gibi dzenlenerek kullanc tanml fonksiyonun nas l kullanld grlecektir.

6-52

User Interface %lider

Section Edil, - Window - CALtygulamakc-uygulama4.w


File Edit Insert Search Compile Help Section: ON:
DO:
MESSAGE birlestir("yalya',"demircan").

PI D El

IT riggers
cHoosa

List.. New

Insert Call...

OFIBUTTON-1

END.

Uygulama altrlrsa, fonksiyona "yahya" ve "demircan" de erleri gidecek, geriye "YAHYA DEM RCAN" dnecek ve message komutu ile bu geri dnen de er aadaki gibi ekrana yans yacaktr.

YAHYA DEMIRCAN

Kullanc tamml fonksiyonlar hazr fonksiyonlar gibi ayn ekilde kullanlmaktadr. Fonksiyona sabit bilgi, yerine de iken ad yazlabilir, geriye dnecek de er ekrana direk yans tld gibi bir deikene de atanabilir. Daha baka yeni fonksiyonlar olu turulacaksa "Edit Code" butonuna baslarak alan section editor penceresinde, section blmnde "functions" seili iken, ekranda yer alan "New" butonuna bas larak yeni fonksiyonlar oluturulabilir. Bir fonksiyonu silmek iin ise section editor penceresinde yer alan "Edit" mensnden "Delete Function" seene i seilerek silme gerekle tirilmektedir.

6-53

I'rogress Prouamlama

Procedu re Fonksiyonlara benzer ekilde alt programlard r. Fonksiyondan farkl olarak, bir ok deer ald gibi bir ok deeri de geri dndrr. Procedur'lerin kullan mnda iki yntem uygulanabilir. Birinci uygulamada btn de ikenlerin (procedure de kullan lacak deikenler) Definitions blmnde tan mlamas gereklidir. Bu ekilde procedure run edilirken, sadece ad n belirtmek yeterli olmaktad r. Bu kullammda, deiken tanm iin "Definitions" aadaki gibi dzenlenir.
Section Editor - Window - CAuygulama\c-tryoulaina4.w
Fite Edit Insert Search Compile Help S ection: , [D efinitions j__ List..

o E<
I

Insert Cell...

/' Parameter.9

LOCa2 Variable Definitions --DEP VAR xadi AS CHAR. PEP VAR xsoyadi AS CHAR. DEP VAR xdonen AS CHAR. CEP VAR xuzunluk AS INT .

Yeni procedure oluturmak iin ise section editor penceresinden section listesinden "Procedure" blm seilir.,"New" butonuna bas larak

6-54

User Interface Builder

New Procedure
Name: bul

Penceresinde name kutucu una procedure ismi "bul" yaz larak "Ok" butonuna bas lr. "Bul" procedure aadaki gibi dzenlenir.
Section Editor - Window - C:\uygulamakc-uygulama4 w File Edit In:ert Search Compile Help

Sec

Procedures

2:1
<'none>

Lizt New...

Insert Call R ename

I,

Prvate

Namelbul
Eurpose: Pard2~: Notes:

xdonen = CAPS(xadi) + " " + CAPS(xsoyadi). xuzunluk = LENGTHtxdonen)_ END PROCEDUPE.

Kotur butonu da, aadaki gibi dzenlenerek, procedure kullan lr.

6-55

Progress Programla na

Section Editor - Window - CAuygulama4c-uygulamakw


File E dit Insert Search Compile H elp S ection: T riggers

Pi u El

2:1

Insert Can_ OF: BuTToN-1

ON1CHOOSE r xadi = "yahya". xsoyadi = "demircan". NIN bul. RESSAGE xdonen xuzunluk.

END.

Ekrana Message komutu vastasyla

YAHYA DEMIRCAN 14 T arnam

iletisi gelecektir. Burada "Bul" prosedr yerel bir prosedr olmu tur ve deikenlerde definitions'da tan mland iin uygulamann her yerinde kullanlmtr. Procedure ikinci kullanm biraz karmak gibi grnmektedir. Bu kullanm farkl iki uygulama (hard diskte kay tl uygulamalar) aras nda, deer gnderme/alma eklinde kullanlacaktr. Buradaki prosedr ayn uygulama iinde olmasna ramen deer alp verme olayn parametre gnder/al mant ile kullanlmtr. Kullanlacak deerler prosedr iinde parametre olarak aadaki gibi tanmlanmtr.

6-56

User Interface Builder

Section Edit'or - Window - CAuygula;tilate-tiyulatoakw Fde Edt Insert Search Comdle Help Sectiorr1Procedures NaMelbul List... zi New... Insert Cell %neme... Private

El

Purpose: Pram~s: Not as:

DEF DEF DEF DEF

INPUT PARMETED xadi AS CHAR. INPUT PARAMETER xsoyadi AS MAR. OUTPUT PARAMETER xdonen AS CHAR. OUTPUT PARAMETER xuzunluk AS INT .

xdonen = CAPS(xadi) + " + CARSixsoyadi). xuzunluk = LENGTH(xdonen).

rrD PKICEDUPE.

Definitions blmnde hibir tammlama yap lmamtr (ilk kullanmdaki tanmlar silinmelidir). Butonun trigger' ise aadaki gibi deitirilmelidir. Butonda, sadece geriye dnecek (output) de ikenleri tanmlanmtr, nk geriye dnen deerlerin bir de ikende tutulmas gereklidir.
Section Editot - Window - CAuygulamateuirgulama4.w

Ete Edt Inse41 Search Compk HeV - :"^


.-Section: j T riggem Ltst.. Ini OF . BUTTON-1

OIL IcHooss
D; : DEF VAR xdonen2 AS CHAD. DEF VAR. xsayi AS INT.

Ko tur

PJJN bul(INPUT "yehya",INPUT "demircan',

OUTPUT xdonenZ,OUTPUT xsayi). MESSAGE xdonen2 xsayi. END.

6-57

Progress Programl ama

Uygulama altrlr ise yine aadaki sonu al nacaktr.

YAHYA DEMIRCAN 14 Tamam

Bu uygulamadaki bul prosedr ayn uygulamada olmayp (nc kullanm), baka bir uygulama olabilirdi. yle ki, ayn ekilde bul prosedrn, procedure editor'de haz rlayarak, dosya ad na "bul.p" yazarak saklan r ve butondaki RUN bul(INPUT "yahya",INPUT "demircan", OUTPUT xdonen2,OUTPUT xsayi). yerine RUN bul.p(INPUT "yahya",INPUT "demircan", OUTPUT xdonen2,OUTPUT xsayi). Dzenlenirse yine ayn sonu elde edilecektir. Bu da, bir uygulamadan baka bir uygulamann arlmas ilemini gerekle tirecektir. E er ki hibir deer alma veya gnderme i lemi olmayacaksa sadece RUN <dosya-ismi>. yazmak yeterli olacaktr. rnek: RUN uygulama2.w. Nesnelerin zellikleri Uygulama ierisinde bir nesnenin zelli ini deitirmek mmkndr. Bu uygulamann tasanm aamasnda nesnelerin zelliklerine girerek veya uygulamann almas esnasnda kullancnn davram lanna gre komutlarla da deitirmek mmkndr. Bir butonun pasif yani seilemez

6-58

I Jser In1erface Builder

olmas , bir f ll-in in iindeki bilginin grnr olmas deitirilememesi, etiket (label) larm n deitirilmesi gibi zelliklere mdahale etmek mmkndr. rne in ekle butonuna basnca sil butonu pasif, kaydet butonuna bas nca s butonu aktif olmal dr. Bu ekilde zellikler deitirilebilir. Nesnelerin zelliklerinden baz larnn yazl aadaki gibidir. Nesneyi Aktif yapma: Kullanm Nesne-adi:SENSITIVE = true. rnek 1: Button-1: SENSITIVE = true. rnek 2: Fill-in-1: SENSITIVE = true. rnek 3: Radio-set-1: SENSITIVE = true Pasif Yapma Kullanm Nesne-adi:SENSITIVE = false. rnek 4: Button-1: SENSITIVE = false. rnek 5 Fill-in-1: SENSITIVE = false. rnek 6 Radio-set-1: SENSITIVE = false. Nesneyi grnr yapma Kullanm Nesne-adi:VISIBLE = true rnek 7: Button-1: VISIBLE = true. rnek 8: Fill-in-1: VISIBLE = true.

6-59

P rogress P rog ra ml ama

rnek 9: Radio-set-1: VISIBLE = true. Gizli Yapma Kullanm Nesne-ad :VISIBLE = false. rnek 10: Button-1: VISIBLE = false. rnek 11: Fill-in-1: VISIBLE = false. rnek 12: Radio-set-1: VISIBLE = false. Nesnenin label' (etiketi) de itirme Kullanm Nesne-adi:LABEL = metin. rnek 13: Button-1 :label = "Yazd r". rnek 14: Fill-in-1 :label = "Adi". rnek 15: Combo-box- 1 :label = "S n f ". Rapor Haz rlama: Database de bulunan bilgilerin ekran ortam na ve baka ortamlara (yazc veya dosyaya) aktanlmas mmkndr. Ekran ortamna aktarlmas rneklerde aklanmt. Yazc veya bir txt dosyaya aktarma ilem nasl yaplmaldr. Output to <ortam-adi> / <dosya-adi>. <komutlar> Output close.

6-60

User Interface Builder

Yazc iin "output to printer.", dosyaya yazd rmak iin "output to c:\deneme.txt. ", ekrana yazd rmak iinde "output to terminal" eklinde, kt ortamna ynlendirilir. Bu ynlendinneden sonra yap lacak grntleme i lemleri, yaz c yada dosyaya aktar lacaktr. rnek 1: Kz rencilerin numara, ad ve soyadlarn ieren bir raporu yaz cdan alabilmek iin; OUTPUT TO PRINTER. FOR EACH ozluk WHERE cinsiyeti = "K": DISPLAY ogr_no adi soyadi. END. OUTPUT CLOSE. Kodlan al tnlrsa yazcdan aadaki gibi bir rapor al mr. renci Numaras 96050013 96050015 96050019 96050027 99050099 rencinin Soyad renci Ad ZEYNEP AYDOAN NL SEDA KADRYE ASLI YKSEL FATMA GL DEMREL BANU

rnek 2: 91050099' nolu rencinin 1993-94/2 retim ylnda ald dersleri ve bu derslerin final notlar n yazcdan almak iin,
Procedure Editor - UntiUed:1
Edil Seach Bufie . Comple Tacls Qptons Help
OUTPUT :O PPINTER. EACH ders WHERE ders.donem = 1993942": 'FOB RAM notlar BHEPE notlar.ogr_no = 91050099" ABD notlar.kodu = ders_kodu : MESSAGE notlar. kodu ders.ders_adi final.

END. EED.
OUTPUT

6-61

P rogress Programlama

program altrlrsa aadaki sonular kat ortam na kacaktr. Bu rnekte yazd rma i lemi "message" komut ile yap lm tr. A202 ASTRONOM TARIHI 60 A204 KRESEL ASTRONOM 65 A206 BASIC PROGRAMLAMA 60 A212 GENEL ASTRONOM II 30 A302 ASTROF ZK I 35 A304 GK MEKAN 25 A308 ASTRONOMDE VER ANALIZI II 60 A402 YILDIZ ATMOSFERLER 70 A404 GNE FZ 54 A406 PRATIK ASTRONOM 61 A444 ZEL KONU 70 F306 ELEKTRONK II 20 F306 ELEKTRONIK II 75 F356 ELEKTRON K LABORATUVARI II 40 M224 KISM TREVL DENKLEMLER 93 M334 GENEL PROGRAMLAMA II 98 M436 MATEMATIKSEL PROGRAMLAMA II 80 M470 SAYILAR TEORISI 20 rnek 3: rnek 2'nin farkl bir yazl ile,
Procedwe Editor Untitled:1
Fe Edit Search kire Compile Tuh . 00oris Help
UT TO PkT1dTERFOR EACH ders WHEPI ders.donem = "1993942":

Ei

FOR EACH notlar HNM, notlar.ogrno = "91050099" AND notlar.kodu = ders.kodu : DISPLAY notlar.kodu ders.ders_adi final.
END. OUTPUT CLOSE.

6-62

User Intkrface Bu lder

Display komut ile al nan sonu ise a adaki gibidir. D.Kodu Dersin Ad A202 ASTRONOM TARIHI A204 KRESEL ASTRONOM A206 BASIC PROGRAMLAMA A212 GENEL ASTRONOMI II A302 ASTROFZK I A304 GK MEKAN A308 ASTRONOMDE VERI ANALIZI II A402 YILDIZ ATMOSFERLER A404 GNE FZ A406 PRATIK ASTRONOM A444 ZEL KONU F306 ELEKTRONK II F306 ELEKTRONK II F356 ELEKTRON K LABORATUVARI II M224 KISM TREVL DENKLEMLER M334 GENEL PROGRAMLAMA II M436 MATEMATIKSEL PROGRAMLAMA II M470 SAYILAR TEORISI Final 60 65 60 30 35 25 60 70 54 61 70 20 75 40 93 98 80 20

eklinde olduka dzgn bir biimde kt elde edilir. Display komutu, veritabam oluturulurken verilen format komutundan etkilenmektedir. Message komutu ise veritaban nda tutulduu ekliyle bilgileri gstermektedir. Dikkat edilmesi gereken bir nokta da where ko ulunda donem "1993942" eklinde kullanlmtr. Donem bilgisi iin belirtilen format "9999-99/9" eklindeydi. Bu bilgi display komutunda "1993-94/2" eklinde formatl, message komutuyla "1993942" eklinde formats z grntlenir. Komutlarda da kullan lrken (ko ul cmleleri gibi) formatsz kullanlmaldr ve bu nemli noktaya dikkat edilmelidir. Buna gre e er dnem bilgisi veya format verilen tm alanlar, bir dei kende olsa idi, bunu ko ul yazarken formats z hale dntrlmesi gereklidir.

6-63

Progress Program la r

rnek 4:
Pocedne Editor Untitledi

DEE VAR xdonem AS CHAR xdonem = '1993-94/2". OUTPUT TO terminal. FOR RACH ders YEME ders.donem = xdonem: FOR EACH notlar WHERE notlar.ogr_no = " 91050099" AND notlar.kodu = ders.kodu : DISPLAY notlar.kodu ders.dersadi final. END. END. OUTPUT CLOSE

Bu rnek hi sonu vermeyecektir, nk veritaban nda "1993-94/2" eklinde hibir ifade olmayacakt r. Veritaban nda "1993942" eklinde bilgi tutulduu iin bu rnein doru ekli rnek 5'de olduu ekliyle yazlmaldr. rnek 5: Veritabanndan bir bilgi sorgulanrken (sadece ko ul cmleleri iin) eitliin her iki tarafnn biimi ve veri tipinin ayn olmas salanmaldr. Ya eitliim solu, fonksiyonlarla sa tarafa uydurulur, ya da sa taraf, sol tarafa uydurulmaya al lr. Aadaki programda sol taraf string fonksiyonu ile donem bilgi alannn biimi, sa taraf ile ayn hale

D%F VAR xdonem AS CHA xdonem = "1993-94/2". OUTPUT TO terminal. FOR EACH ders WHERE STRING(ders.donem,9999-99/9") = xdonem: FOR EACH notlar WHERE notlar.ogrno = "91050099" AND notlar.kodu = ders.kodu : DISPLAY notlar.kodu ders.ders_adi final. END.

6-64

User Interface Builder

getirilmi tir. Program al tr ldnda sonucu "terminal" ifadesinden dolay ekrana verecektir. Rapor bu ekilde 4GL komutlar yla alnd gibi, Progress'in "Report Builder" rapor ara yz veya "Results" sorgulama uygulamas ile raporlar da alnabilmektedir.

6-65

HTML

HTML ( Hyper Text Markup Language )


Html Nedir - Nasl Hazrlanr ? Html (Hypertext Markup Language) web sayfalann n yapmnda kullanlan bir dildir. Dier programlama dillerinden farkl yn sadece grsel dzenleme iin kullanlmasdr. Html herhangi bir text editrle (Notepad, Word,...) haz rlanabilir. Fakat bunun yerine web sayfas tasarm iin Dreamweaver, FrontPage, Netscape Composer gibi geli mi aralar da kullanlabilir. Kitap ierisindeki rnek uygulamalar iin Notepad kullanlmtr. Bir html dokman' haz rlandktan sonra kaydedilirken "dosya_adi.htm" veya "dosya_adi.html" olarak kaydedilmelidir. Yazm Kurallar Komutlar byk yada kk harfle yaz labilir. Komutlar Trke karakterler ( ,,,,,) karakterleri iermez. Komutlar "<" ve ">" i aretleri aras nda yazlr ve "tag" ad n alrlar.

Kullanl biimi : <tag_adi> rnek : <HTML>,<BODY>,<TITLE> - Bir tag <tag adi> eklinde balar ve baz taglar dnda </tag_adi> eklinde biter. - Taglar i ie yer al rlar ve en iteki tag'dan ba latlarak kapatlrlar. Kodlann okunabilirliini artrmak iin bir tag bitmeden tekrar tag a lrsa ieride a lan tag biraz daha ieriden yaz lmaldr. Kullanl biimi : <tag_l> <tag_2>

7-1

Web J qr

</tag_2> </tag_1> rnek : <HTML> <BODY>

</BODY> <FORM>

</FORM> </HTML> - Bir tag parametreler kullanarak biimlendirilir ve bu parametrelere (" ") trnak i aretleri aras nda deer atanr. Deerle parametre ad arasnda eittir (=) i areti kullanlr. Kullanl biimi : <tag_adi parametre_ad ="deer"> rnek: <body bgcolor="blue"> HTML Dilinde Kullan lan Taglar Her html dokmannn iermesi gereken baz temel taglar vard r. Bunlar: html , body , head , title taglardr. <html></html> : <html> tag bir web sayfas nda bulunan ilk tagd r. Amac o dokmann bir html dokuman' (web sayfas da denilebilir) olduunu bildirmektir. nceki anlat lanlardan anlalaca zere web

7-2

III

sayfas iersindeki btn taglar <html></html> tag n n ierisinde yazl r.Bu tag n hi parametresi yoktur. <head> </head> : <head> tag bir web sayfas nn ban oluturur. <head></head> taglar arasna yazlacak herhangi bir ey sayfada grnmez. Bu tagn iine style sheet kodlari girilir. Bu tag n hi parametresi yoktur. <title></title> : Bu tag iine yazaca nz yaz web sayfanzn bal olacaktr ve browser penceresinin ba lk ubuunda grnecektir.<title> tag <head></head> tag nn ierisinde yaz lr. Kullanl biimi : <title> Sayfamn ba l </title> rnek : <html> <head> <title> HTML Dersleri Giri Sayfas </title> </head> <html> <body> </body> : Bu tag web sayfas nn grnen btn yaz larnn ,resimlerinin, formlarm n, ... iine yerle tirildii tagdr. Bu tagn parametrelerine daha ilerki konularda de ineceiz. Kullanl biimi: <body>

</body> Buraya kadar anlat lan konularla temel taglarm kullanarak a ada bir web sayfas nn temel yap s verilmitir.

7-3

Web 1 iygulamalan

<html> <head> <title> Sayfa Bal </title> </head> <body>

</body> </html> Bu kodlan Notepad de yaz p alma dizininize "ornekl.html" olarak kaydeder ve bir browser dan (Internet Explorer veya Netscape) aarsan z aadaki ekran grntsn elde edersiniz.
Sayfa Ba l - Microsoft Internet Explo er Dosya Dzen GrUn i n Git S k Kullern lanlar

Dur .adres I C lkurs htnAcrnekl Hrn

Yenile

Giri Balant lar

Bu rnekte <body> tag mn ierisine hi bir ey yazlmad iin sayfanz bo bir sayfa olarak grnmektedir. Pencerenin ba lnn "Sayfa Bal" olduuna dikkat ediniz Genel Parametreler color: Kullanld tagn rengini belirler. Genel olarak renk de erleri iki ekilde verilebilir. lk olarak kullanlmak istenen rengin ngilizce ad ve ikinci olarak o renge kar lk gelen Hexadecimal deer.

7-4

HTML

rnek olarak u renk adlarn verebiliriz : aq a, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal. Hexadecimal (onaltlk taban say sistemi) renk ynteminde de er olarak 6 rakam ve banda "#" i areti bulunan kodlar yer almaktad r. rnein "#ff0000" kodu Krmz renge karlk gelmektedir. Bu kodlar n hepsini renmek mmkn olmayaca ndan bu yntemi renme zorunlulu u yoktur ve bu yntem genellikle web sayfas hazrlama aralar tarafndan kull an lmaktadr. Kullanl biimi : <tag_adi color="de er"> rnek : < tag_ad color="red"> </tag_ad> bgcolor : Arka plan rengini belirler. Kullanl biimi : <tag_adi bgcolor="de er"> rnek : <body bgcolor="red"> </body> Bu ekildeki bir kodlama web sayfas nn zemin rengini krmz yapacaktr. background : Arka plana yerle tirilecek resmin dosya konumunu belirler. Kullanl biimi :

7-5

Web Uygulamalar

<tag_adi background"dosyaadi . (gi f, bmp, jpeg)"> rnek : alma dizininize bir resim dosyas oluturan ve ad n "resim.jpg" olarak kaydedin.Daha sonra aadaki kodlar Notepad de yazn ve "omek2.html" olarak kaydedin. Dosyan z bir browser da grntleyin. <html> <head> <title> HTML Taglar ve Parametreleri </title> </head> <body background="resim.jpg"> </body> </html>
HTML Taglan ve Parametreleri - Microsoft Internet Explorer
Dosya Dzen Grnm Git S k Kullanlanlar Yard m

RP g4

J
Dur Adres \kurslhtmr,orrek2 'ntml

Yenle

_i Giri

Ara

Eal lantilat

rw,2s 4p,p4 ,ksis,,,,0,dalsKuid ,1 k ss4s ,s si ise-wisTSNI XFOls , Mik Ms *9,00,s`ss s s j,st s e 0A S>) Efs (@ El'i001,11:10 gifsz tlisis sks 5.s . s s 03 (0 wfsle i'do\sYstrals s-S*S's wift* ,4041 :1iiiii 11111+0/41.11141

.1-

eilgiSayar rn

rnekte de grld gibi resim dosyas web sayfasnn ierisine arka plan resmi olarak yerle tirilmitir. Web sayfas hazrlarken dikkat edilmesi gerekli hususlardan bir taneside resim dosyalarnn alma klasrnn iinde ba ka bir klasrde tutulmas dr. rnein alma klasrnz "C: \kurs \" ise bu klasr ierisinde "image" isimli bir klasr olu turabilirsiniz. Bu klasr ierisindeki bir resme ulamak iin baekground parametresindeki dosya yolunu "background="image/resim.jpg'"' olarak de itirmelisiniz.

7-6

HTMI

align : Kullan ld sayfadaki yatay yerini belirler. Bu parametrenin 3 deeri vardr. Bunlar: left, right ve center dir. Left sola, right sa a dayal olarak gsterilmesini, center ise ortalanmas m salar. Kullanl biimi : <tag_adi align="de er"> rnek : <table align="center"> </table> valign : Kullanld sayfadaki dikey yerini belirler. Bu parametrenin 3 deeri vardr. Bunlar: bottom, middle ve top d r. Bottom aaya doru , top yukan middle ortaya konumlandrlacan belirtir. Kullanl biimi : <tag_adi valign="de er"> rnek : <table valign="bottom"> </table> border : Kullanld nesnenin etrafinda bordr olu turulmasn salar. Bordr kalnl iin saysal deer verilir. Border parametresi kullan lmaz ise varsaylan olarak deeri 1 kabul edilir. <tag_adi border="de er"> rnek : <html> <head> <title> Hizalama ve Borderlar </title>

7-7

Web Uygulamalar

</head> <body> <table align="center" border="2"> <tr> <td>Satrl</td> </tr> </table> </body> </html> Yukardaki kodlar Notepad de yazn ve alma dizininize "ornek3.htrll" olarak kaydedin. Daha sonra dosyan z bir browser da grntleyin.
aHizalama ve Borderlar - Microsoft Internet Explorer Dosya Nzen Grnm Git S k Kdan lanlar

Nom

Dur Adres Kurs \hrrnI1o rek .3.hrr-,1

Yenile

Giri

Grntlenen tablo nesnesinin ortal ve kenarlklann kaln olduuna dikkat edin. height : Nesnenin yksekliini belirler. Height parametresine say olarak deer verilir. Kullanl biimi : <tag_adi height="de er"> rnek:

7-8

I ITML

<tr height="30">

</tr> <body> Tagnn Parametreleri bgcolor: Arka plan rengini belirler. Bu paranetrenin deerleri yukarda anlablan ekilde verilir. background:Bu parametreyi kullanarak sayfan n arka plannda resim kullanabilir. link: Sayfada ki text linklerin rengini belirler. alink: Link'e tklandndaki rengi belirler. vlink: Daha nce ziyaret edilmi linklerin rengini belirler. text: sayfadaki biimlendirilmemi yazlann rengini belirler. Kulland biimi : <body bgcolor = "deer" link="de er" vlink="de er" alink="de er" text="deer"> rnek: <body alink="aqua" link="blue" vlink="red" text="black" bgcolor= "white"> Yaz Biimlendirme Taglar <font> </tont>: Yaz biimlerinin verildii tagdr. <font> tag nn bir takm parametreleri vardr Bunlar: color : nceden anlatlan teknikler ve renk kodlanyla yaz nn rengini belirlenebilir.

rnek:

7-9

Web ijygulamalan

<font color="#ff0000">Krmz renkli yaz</font> face : face parametresi yaz nn hangi yaz biimini kullanacan gsterir.(helvetica , arial ,verdana... gibi).Bu parametreye yaz deerleri isimleri verilir. Yaz biiminin grnmesi iin web sayfasn aan bilgisayarda o yaz tipinin bulunmas gerekmektedir. E er yoksa bir ka yaz tipini alternatif olarak ve virglle ay rarak yazabilirsiniz. rnek: <font face="arial,verdana,helvetica">Bu yaz tipi arial dir. E er arial bulunmuyorsa di er tipler kullanlr </font> size : Font bykl n belirler. Bu parametreye 1 - 7 aras rakamlar girilir (1 en kk , 7 en byk). Eer en son kullanlan yaz tipi boyutu artnlp azaltmak istenirse +1,+5,3,-4 gibi deerler kullanlr. <b> : Bu tag kullamld nda bundan sonraki yazlar koyu (bold) olacaktr. <i> : Bu tag kullan ldnda bundan sonraki yaz lar italik (italic) olacaktr. rnek: <html> <head> <title> Fontlar </title> </head> <body> <font size="3" color="blue">Mavi yaz </font> <font size="5" color="blue">Mavi byk yaz </font> <font size="3" color="blue"> <b>Mavi kaln yaz</b> </font> <font size="3" color="blue"> <b><i>Mavi kaln ve italik yaz</i></b>

7-10

HTM

</font) </body> </html> Yukardaki rnei alma dizininize "omek4.html" olarak kaydedin ve bir browser da grntleyin.
Fontlar - Microsoft Internet Explorer
Dosya Dzen GOrirnUrn

1111:1E1

Git

S k Kullandanlar Yard

Dur

Yenile

Giri Baglanklar

11~1

C:\Kurs\htnftornek4.htmi

Mavi yaz Mavi by k yaz Mavi kal n yaz Mani k.aln ve italk yaz

9 B ilgisayar m

Balklar
Balk taglar adndanda anlalaca gibi balk yazmmda kullanlr. <hl> ,<h2> ,<h3> ,<h4> ,<h5> eklindedir. rnek : <html> <head> <title> Balklar </title> </head> <body>

7-11

Web Uygulamalar

<111>Ba hk1</h1> <112>Balk2</h2> <h3>Balk3</h3> <h4>Balk4</h4> <h5>Balk5</h5> </body> </html> Yukandaki rne i alma dizininize "omek5.html" olarak kaydedin ve bir browser da grntleyin.
nesliklar - Microsoft Internet Explorer j Dosya Dzer 13rnLiM Git S k Kullatllar j Du C: \ Kurs \html omek5 html

nom
Yenrie Giig a:arttiar

Bal kl
Ba l k2
Ba l k3
Ba l k4
Ba lik5 13,31111(6 Bi!gs Sayaurn

Paragraflar <p> : Yeni bir paragraf yapmak iin kullan hr.</p> eklinde kapat lmaz. Bu tagla birlikte sadece "align" parametresi kullan labilir. align : nceki blmlerde anlat ld gibi left, center, right de erlerini alabilir ve paragrafn saa, sola veya ortaya dayal olmasn salar. Align parametresi kullan lmad durumlarda paragraf sola dayal olur.

7-12

il 1 M l,

Kullan l biimi : <p> veya <p align="deer"> eklindedir. rnek : <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>
Paragraflar- Microsoft Internet E xplorel
Dosya

D izen Garunum G'

S k KnIlanlanlar Y

Dur C:\Kas\Nml\omnk6. r

`farkla

Cat

Ara :Kul

Ilk paragraf sola dayal lkind paragraf ortal nc paragraf saa dayal

Yukandaki rnei alma dizininize "ornek6.html" olarak kaydedin ve bir browser da grntleyin. <br> : Yeni bir satr eklemek iin kullan lr. </br> eklinde kapat lmaz. Web Sayfalarnda Resim Kullan lmas

7-13

Web Uygulamalar

Bir web sayfas nda genellikle jpeg, gif formath resim dosyalar kullan lmaktadr. Bunun nedeni bu formattaki dosyalar n boyutlannn daha kk olmas ve sayfalar grntlcnirken h zl alabilmesidir. <img> : Sayfa ierisine bir resim yerle tirmek istenildi inde kullanlr. Bu tag belli parametrelerle kullan lr. Kullanl biimi: <img src="dosya.adi" border="de er" align="de er" alt="deer" weight="deer" height="deer"> src : Resim dosyas nn konumunu belirtir. E er resim dosyalan html dosyalar ile ayn klasrde ise sadece resim dosyas nn adn yazmak yeterlidir. Fakat ba ka bir klasr veya URL alt nda ise o zaman resmin yolunu belirtmeniz gerekir. rnek 1: HTML dosyalar resim dosyalar ile ayn klasrde olsun. Bu durumda src = "resim.jpg" eklinde yazmalsnz. rnek 2: Resim dosyalar HTML dosyalanna gre "image" isimli bir alt klasrde olsun. Bu durumda src = "image/resim.jpg" eklinde yazmalsnz rnek 3: Resim dosyalar www.progress.com adl bir URL de olsun. Bu durumda src= "http://www.progress.com/resim.gif') eklinde yazmalsnz. rnek 4: <html> <head> <title> Resimlerle al mak </title> </head> <body>

7-14

FITML

<img src="image/logo.jpg"> </body> </html> Yukandaki rne i alma dizininize "ornek7.html" olarak kaydedin ve bir browser da grntleyin.
Fles mIetle all rnak - Mier.of t Internet Explorer Dosya

MEI E3

DuZer, 50ronuM Git

5)k Kullanianlar
Yenile .Giri

Adre

C: \Kuslhtml ek? heel

border : Resmin etrafna yerle tirilecek kenarl n kalnln vermek iin kullanlr. align : Resmin yatay konumunu belirler. Left, Center, Right de erlerini alabilir. alt : Resmin zerine fare ile gelindi inde gsterilecek metni vermek iin kullanlr. weight : Resmin genilii piksel cinsinden girilir. height : Resmin ykseklii piksel cinsinden girilir.

rnek 5: <html> <head> <title> Resimlerle al mak </title> </head> <body> <img src="image/logo.jpg" border="4" aft="Ankara niversitesi" align="right">

7-15

Web Uygulamalar

</body> </htrr l> Yukardaki rnei alma dizininize "ornek8.html" olarak kaydedin ve bir browser da grntleyin.

i Resimlerle altmak - Microsoft Internet Explorer Dosya Dzen Gici itrum Git S k Kullantania

N54E3

Adres"

C: , Kurs htnlkm6,9.html

Resmin sola dayal, kenarlkl ve aklamal olduuna dikkat ediniz. Balantlar (Linkler) Web sayfalar arasnda gezinti yap labilmesi iin sayfalann ierisine linkler yerletirilir. Baka bir sayfaya veya sayfa ierisindeki bir ba ka konuma linklerle ula labilir. <a> </a> : Link vermek iin bu tag kullan lmaktadr. Bu tagda birtak m parametreler kullan lr. Bu parametrelerle hangi sayfaya link verildi i link verilen sayfan n nerede a laca bilgileri verilir.<a> tag </a> ile kapatlr. Kullaml biimi : <a href="de er" target="de er" > Sayfada Grnecek A klama </a>

7-16

T ITMI,

href : Hangi sayfaya link verilece ini belirler. Link verilecek dosya al ma klasrnzle ayn konumda ise dosyann adn vermek yeterlidir. Fakat farkl bir konumda ise yolu belirtmelisiniz. target : Bu parametre linke bas ldnda sonucun nerede grntlenece ini belirler. Eer kullanlmazsa linke bas ldnda ayn sayfa zerinde grntleme yap lr. Target parametresi en ok Frame'lerle birlikte kullan lr. Fakat bu konu daha ileride i leneceinden imdilik target parametresinin "_blank" de erinden bahsedilecektir. "_blank" deeri linkin sonucunun yeni bir browser penceresinde almasn salar. Eer isterseniz sayfanzda kullandnz bir linkin nereye balanacana dair bir a klamay sayfanza yerletirebilirsiniz. rne in http://www.progress.com.tr adresine link verirseniz bu linke a klama olarak Progress Trkiye yazabilirsiniz. rnek : <html> <head> <title> Linkler </title> </head> <body> <a href="http://www.progress.com.tr " target="_blank">Progress Trkiye </a> </body> </html>
Linkler - Microsoft Internet Explorer

tsya D Uzen G "cir

Dur C: Tur.21htmKornek9. html

Yenile Fr6V,ht4

Progress Trkiye
7-17

Web Uygulamalar

Yukar daki rnei alma dizininize "ornek9.html" olarak kaydedin ve bir browser da grntleyin. Sayfanzdaki linke tkladnzda Progress Trkiye sayfas yeni bir pencerede grntlenecektir. Progress Trkiye a klamas yerine <img> tagn kullanarak sayfanzdaki bir resmede link verebilirsiniz. rnek : <a href= "http://www.progress.com.tr " ><img src= "image/progress.gif '> <la>
Ftesimleale Link V,r-e re Miuresoft Internet Explorer

Qc. ye

Ddier-1

pkt
Dur

Kullandenlar

Yeniler

Gir

Adres

RE EL?

R'?

P Ft cG Ft 1E' S S..

"ornek9.html" adl dosyanzda gerekli deiiklikleri yapn ve "ornek10.html" olarak kaydedin. Yapt nz dosyay bir browser da grntleyin. Bu rnekte resmin zerine t kladnzda Progress Trkiye sayfas ayn pencerede a lacaktr. Listeler Web sayfalarnda Word' de olduu gibi metinler maddeler halinde listelenebilir. Bu listeleme ekilde yaplabilir.

7-18

LITML

S ralanmam Liste (Unordered List) Bu tipteki listelerde liste elemanlar balarnda bir daire grntlenerek listelenir. Kullanl biimi : <ul> <li> Liste eleman' 1 <li> Liste eleman' 2 <li> Liste eleman' 3 <li> Liste eleman 4 </tl> rnek : <html> <head> <title> S rasz Listeler </title> </lead> <body> <ul> <li> Kastamonu <li> Adana <li> Yozgat <li> Kayseri <li> Ankara <111> </body> </html> Yukandaki rne i al ma dizininize "ornekl 1 .html" olarak kaydedin ve bir browser da grntleyin.

7-19

Web Uygulamalar

S rasz Listeler - Microsoft Internet Explorer

MEI Et

Dosya Dzen Grnm Git S k Kullanlanlar

Dur ' : Adres c: \kursthtmllornekli.html

Yenile

Giri ! iBalantilar

Kastamonu Adana Yozgat Kayseri Ankara

Sralanm Liste (Ordered List) Bu tipteki listelerde her liste elemanmn bana sra numaras gelir Kullanl biimi : <ol> <li> Liste eleman 1 <li> Liste eleman]. 2 <li> Liste eleman 3 <li> Liste eleman 4 </ol> rnek : <html> <head> <title> Sral Listeler </title> </head> <body> <ol>

7-20

11TML

<li> Kastamonu <li> Adana <li> Yozgat <li> Kayseri <li> Ankara </ol> </body> </html>
S ral Listeler - Microsoft Internet Explorer oya Dzen Grnm Git S k Kul anlanlw s

E3
M..

Dr
c: Kurs1htmllornekl 2. html

Yenile

G [i Ba iantlar

1. 2. 3. 4. 5.

Kastamonu Adana Yozgat Kayseri Ankara


-

=.zw

Yukardaki rnei alma dizininize "ornek12.htm1" olarak kaydedin ve bir browser da grntleyin.

Formlar
Formlar normal programlama dillerinde varolan metin kutusu (Edit), Onay Kutusu (Check Box), A lr Kutu (Combo Box), ... gibi nesnelerin HTML sayfalarmda kullan lmalann salar. Formlann kullanlmasndaki ama form zerinden girilen bilgilerin bir veri taban na, bir e-mail adresine veya bir ziyareti defterine (guest book) gnderilmesini salamaktr. rnein bir web sayfas ndan mail adresi aldnzda doldurduunuz formdaki bilgiler ilgili web sayfas nn veri tabanna gnderilmektedir veya baz sayfalarda rastladnz anket sorular na cevap verirken kullandnz nesneler formlara rnek verilebilir.

7-21

Web Uygulamalar

<form> </form> : Form ierisindeki nesnelerin kullan labilmesi iin <form></fonn> tag kullanlmaldr. Kullan l biimi : <form method="de er" action="deer" name="deer"> </form> method : Formun hangi yntemle kar tarafa gnderilece ini belirler. ki deeri vardr. Bunlar get ve post 'dur. E er Get yntemini kullan rsanz formu kar tarafa gnderirken, gnderilen bilgiler, adres sat nnda a ka grntlenecektir. Post yntemini kulland nzda formu kar tarafa gnderirken, gnderilen bilgiler, adres sat nnda grntlenmez. Bu iki yntem aras ndaki fark yle dnebilirsiniz. Kullanc ad ve ifre girdiiniz bir web sayfasn kar tarafa gnderirken girmi olduunuz bilgilerin adres sat nnda grnmesi durumunda (get yntemi) ifreniz bakalar tarafndan okunabilir. Fakat post yntemini kullan rsanz girdiiniz bilgiler kar tarafa yine gnderilir. Fakat adres sat nnda sadece sayfan n URL adresi grnr. action : Formun hangi adrese gnderilece ini belirler. name : Formun ad n belirler. Form Nesneleri

Buraya ad n z yaz n Radio Button

Plain Text Entry

1z7 Check Box


Daha uzun metinler buraya yaz l r Iel Ankara LTr lt Istanbul el Select box Text Area

Multiple select

Gnder I 7-22

Tem zle

Password Button

ifFML

<input> : Form nesnelerinin bir o u <form> tavrm iersinde kullan lan <input> taglanyla oluturulur. Kullanl biimi : <input type="de er" name="de er"> type : Type parametresi kullan lacak nesnenin tipini belirler. Bu tipler aadaki gibidir. name Nesnenin adn belirler. Dz Metin Girii (Plain Text Entry) : Dz metin kutusudur. Kullanl biimi : <input type="text" value="de er" maxlength="deer" size="deer"> value : Metin kutusu ierisine varsay lan olarak deer atanmasm salar. maxlength : Metin kutusu ierisine yazlabilecek karakter say sn belirler. size : Metin kutusunun grntdeki uzunlu unu belirler. rnek : <html> <head> <title> Plain Text Entry </title> </head> <body> <forn name="bilgiler" method="GET"> Adnz :<input type="text" name="Ad"> <br> Soyadmz :<input type="text" name="Soyad"> </form> </body> </html>

7-23

Web Uygulamalar

43Plain Text E ntry - Microsoft Internet Explorer

M u E3

Dosya Dzen Grnm Git

k Kullanlan) Dur Yenile Giri

4,4f,
::ert

-**

Adres

C: \Kurs \html \ornekl 4.html

I t Balantlar

Ad nz :1 Soyad n z
Bilgiayarn

Yukardaki rnei alma dizininize "ornekl4.html" olarak kaydedin ve bir browser da gffintleyin. ifre Giri i (Password Entry) : Metin kutusu grnmndedir fakat bu alan ierisine bilgi giri i yaplrken yazlan karakterler asteriks "t" karakterine dn r. Adndanda anla laca gibi ifre alanl formlarda kullanlr. Kullanl biimi : <input type="password" maxlength="de er" size="deer"> Parametreleri metin kutusundaki i levleri aynen yerine getirir. rnek : <html> <head> <title> Password </title> </head> <body>

7-24

HTML

<form name="bilgiler" method="GET"> ifre :<input type="password" name="sifre" maxlength="4"> </form> </body> </html>
Password - Microsoft Internet Explorer

O el

Dosya Dzen Gbrnm

Git

S k 1(

Yenile C: Turs\html\ornekl5.htrril Balantilar

ifre

:h1/4

Yukardaki rnei alma dizininize "ornekl5.html" olarak kaydedin ve bir browser da grntleyin. Yaz Alan (Text Area) : Bir a klama yada mail ierii gibi uzun metinleri yazmak iin kullanlr. Fakat dierlerinde olduu gibi <input> tagyla yazlmaz, onun yerine, <textarea> tag kullanlr. Kullanl biimi : <textarea rows="deer" cols="deer"> Metin </textarea> rows: Grntlenecek karakter yksekli ini belirler. cols : Grntlenecek karakter geni liini belirler. rnek : <html> <head>

7-25

Web Uygulamalar

<title> Text Area </title> </head> <body> <form name="bilgiler" method="GET"> Aklama : <textarea weight=50 height=10>A klama yaz nz </textarea> </form> </body> </html>
43 Text Area - Microsoft Internet Explorer
Dosya Dzen

FP_IES

Grnm

Git S k Kulk

f Adres

C:1Kurs\htrrl\ornekl G html

Balan lla

klarta yaz n z

Aklama.

Yukardaki rnei alma dizininize "ornek16.html" olarak kaydedin ve bir browser da grntleyin. Seim Kutusu (Select Box) : Grsel programlama dillerindeki combo box (alr kutu) nesnesine kar lk gelir. Kullan cya nceden belirlenmi birka deerden bir tanesini setirmek iin kullan lr. <select> </select> : Seim kutusu yaratmak iin kullan lr. <select> tag tek bana kullanlmaz. Bu tag n ierisinde <option> tag kullanlmaktadr. <option> : <select> tagnn ierisinde kullanlr ve gorev men elemanlarn belirlemektir. </option> eklinde kapatlmaz.

7-26

F(T ML.

Kullanl biimi <select> <option> Men eleman' 1 <option selected> Men eleman 2 </select> selected Eer <option> tag nda "selected" parametresi kullan lmsa ,form ekrana grntlendi inde, bu men eleman nn seili (varsay lan) olarak grntlenmesi anlam na gelir. rnek <html> <head> <title> Select Box </title> </head> <body> <form name="bilgiler"> <select name="liste"> <option> Adana <option selected> Adyaman <option> Afyon <option> Ar </select> </form> </body> </html>
Seferi Box - Microsoft Internet Explorer

r-r- r-

7-27

Web Uygulamalar

Yukardaki rnei alma dizininize "omek17.html" olarak kaydedin ve bir browser da grntleyin. oklu Seim Kutusu (Multiple Select Box) : Seim kutusuyla ayn ie yarar fakat tek fark birden fazla seenek i aretlenebi lir. Kllanl biimi : <select size="de er" multiple> <option> Seenek 1 <option selected> Seenek 2 </select> size : Ayn anda ka seene in ekranda gsterilece ini belirler. multiple : Seim kutusunda birden fazla seene in iaretlenebilmesini Salar. rnek : <html> <head> <title> Select Box </title> </head> <body> <form name="bilgiler"> <select name="liste" multiple> <option> Adana <option selected> Adyaman <option> Afyon <option> Ar </select> </form> </body> </html> Yukardaki rnei alma dizininize "ornek18.html" olarak kaydedin ve bir browser da grntleyin.

7-28

HTML

Select Box - Microsoft Internet Explorer

MEI El

Qosya Dzen Grnm Git .11<. Kul I

.1"

Dur

Yenile

!Adresi

e: \Kurs\html\omeklahtml

Onay Kutusu (Check Box) : Kullancdan herhangi bir soru iin onay istemek iin kullanlr. Ekranda onaylanabilecek tek kutucuk grtintlenir. Kullanl biimi : <input type="checkbox"> veya <input type="checkbox" checked> checked : Form ekrana geldiinde onay kutusunun i aretli olarak gelmesini salar. rnek : <html> <head> <title> Check Box </title> </head> <body> <form name="bilgiler"> <input type="checkbox" name="onay" checked> HTML biliyorum </form> </body>

7-29

Web Uygulamalar

Check Box - Microsoft Internet Explorer

INDEI

2osya

DUzen Grnm Gil S k Kullanlani

Yenile Adres c: tkurslhtml\ornek19.html

Giri B4antlar

HTM L biliyorum

</html> Yukandaki rnei alma dizininize "ornek19.html" olarak kaydedin ve bir browser da grntleyin. Seenek D mesi (Radio Button) : Seenek dmesi seenekler arasndan sadece bir tanesinin seilmesini sa lar. Kullaml biimi : <input type="radio"> veya <input type="radio" checked> checked : Form ekrana geldi inde o seene in iaretli olarak gelmesini Salar. rnek : <html> <head> <title> Radio </title> </head> <body> <form name="bilgiler"> <input type="radio" name="onay" checked> Evli <input type="radio" name="onay" > Bekar </form>

7-30

IMVIL

</body> </html>
Radio - Microsoft Internet Explorer

Do&ya

J.
.] Adres C:\Kurs\ htmitornek20.html

Yukardaki rnei alma dizininize "ornek20.html" olarak kaydedin ve bir browser da grntleyin.
Komut D mesi (Button) : Yaplan folar doldurulduktan sonra kar

tarafa gnderebilmek iin veya da ii doldurulmu bir formu temizlemek iin komut dmeleri kullanlr. Kullanl biimi : <input type="submit" value="de er"> veya <input type="reset" value="deer">
submit : Form bilgilerinin kar tarafa yollanmas n salar. reset : Form bilgilerinin kar tarafa yollanmadan temizlenmesini Sa lar. value : Komut dmesinin ekranda grntlenecek etiketini belirler.

rnek : <html> <head>

7-31

Web Uygulamalar

<tido> Butonlar </title> </head> <body> <form name="bilgiler"> Form Gnderilsin mi ? <br> <input type="Submit" value="Gnder"> <input type="Reset" value="Temizle" > </form> </body> </html>
r.
Butonlar - Microsoft Internet Explorer

EIO E3
ELI

Dosya Dzen Gbri.inn) Git

k Kullanilank kile"

Dur Adres C: \Kurs\htmlornek21.h rol

Yenile -

Giri Balarrlat

Form Gnderilsin mi Gonder Temizle

,yanm

Yukardaki rnei alma dizininize "ornek21.html" olarak kaydedin ve bir browser da grntleyin. Tablolar (Tables) Web sayfalar ierisine yazlar yazarken veya resimler yerle tirirken tablolardan yararlanlr. Eer tablolar kullandmazsa istenilen yere istenilen nesneyi yerle tirmek ok zordur. Bu yzden web sayfalar nn birou tablolardan yararlanlarak oluturulmutur. Tablolar Excel' de oldu u gibi satr, stun ve hcre kavramlanndan olumaktadr.

7-32

IITMI,

<table> </table> : Bir tablo oluturulmak istendi inde kullanlr. Bundan sonraki satr ve stun taglar <table> tagnm ierisinde yer al r. Kulland biimi : <table background="de er" align="deer" valign="deer" border= "deer" bordercolor="de er"> veya <table bgcolor="de er" align="de er" valign="de er" border="de er" bordercolor= "de er"> background : Tablonun arka planna yerle tirilecek resmi belirler. align : Tablonun yatay konumunu belirler (Left, Center, Right). valign : Tablonun dikey konumunu belirler. (Top, Middle, Bottom) border : Tablonun kenar izgi kalnln belirler. bordercolor Kenarlk rengini belirler. cellspacing : ki hcre aras ndaki bo luu belirler. cellpadding : Tablo ile hcre arasndaki bo luu belirler. width : Tablonun geniliini belirler. height : Tablonun yksekli ini belirler.
cellpadding border cellspacing cell

Satr ve Stun Taglar <th> </th> : Bir tabloya ba lk satn yapmak iin kullanlr. <tr> </tr> : Bir tablo iin ilk nce sat rlar yaratlmandr . <tr> tag yeni bir satr anlam na gelmektedir.

7-33

Web Uygulamalar

<td> </td> : Yeni bir sutun olu turmak iin kullan hr.<tr> tag kapatlmadan kullanlan her <td> tag yeni bir stun anlam na gelmektedir. Kullanl biimi : <table> <tr> <td align="deer" background="de er" bgcolor="de er" width"deer" height="deer" > De er </td>

</tr>

. . </table> align : Stun ierisindeki taglann yatay konumunu belirler. background : Hcre ierisine yerletirilecek resmi belirler. bgcolor : Eer resim kullanlmazsa hcrenin arka plan rengini belirler. width : Hcrenin geni liini belirler. height : Hcrenin yksekli ini belirler. bordercolor : Kenarlk rengini belirler. colspan : stenirse bir hcre tekrar stunlara aynlabilir. Hcrenin ka stun olacan belirler. rowspan : stenirse bir hcre tekrar stunlara aynlabilir. Hcrenin ka satr olacan belirler. rnek : <html> <head> <title> Tablolar </title> </head>

7-34

HTML

<body> <table border="2"> <th>Ad</th> <th>Soyad</th> <tr> <td>Ali</td> <td>Akn</td> </tr> <tr> <td>Mesut</td> <td>Yeil</td> </tr> <tr> <td>Cenk</td> <td>Demir</td> </tr> <tr> <td>Fuat</td> <td>Soyalp</td> </tr> <table> </body> </html>

7-35

Web I Jygularnalan

Tatlotar Microsoft Internet Explorer

Dosya Dzen Grnm Gi Sk Kullaridei

4,
Dor
----

Yenile

Giri edlentiler

Adres I

c: , Kurs html ornek22.html

Ad ;Soyad ; Ah ;Ak n
-

;Mesut!Ye il ;Cenk ;Demir ;Fuat ISoyalp

Yukardaki rnei alma dizininize "ornek22.html" olarak kaydedin ve bir browser da grntleyin. ereveler (Frame'ler) Frameler web sayfas n birden fazla paraya ay rmak ve her bir paran n ierisine ayr sayfalar amak iin kullan lr. Bu ilem sayfay ziyaret eden kiilerin ziyareti kolayla trmak iin kullanlabilir. yle ki; Sayfanz ksma ayrdnzda paralardan bir tanesini ba lk, bir tanesini men, bir tanesini de ierik iin kullanabilirsiniz. <frameset> </frameset> : <frameset> tag <body> tagnn yerine kullanlr ve body tag Frame' li bir sayfada kullan lmaz. Kullanl biimi : <frameset cols="de er" rows="deer" border="de er" bordercolor= "deer" framespacing="de er"> cols : Sayfada ka dikey ereve olaca l verilerek belirlenir. l verme i lemi iin iki yntem vard r.

7-36

HTM I,

1.cols="100,200,*" : Burada sayfa stuna ayr lmtr. lk stun 100 piksel ikinci stun 200 piksel ve nc stun sayfan geride kalan boyutu kadar anlam na gelir. 2.cols="%20,%80" : Burada sayfa iki stuna ayr lmtr ilk stun sayfa boyutunun %20 `si, ikinci stun ise sayfa boyutunun %80 `i kadardr. rows : Sayfada ka yatay ereve olaca l verilerek belirlenir. l verme ilemleri "cols" parametresindeki ile ayn dr. Bu ayarlamalardan sonra sayfadaki Frame'lerin iine html sayfalan yerletirilir. <frame> : Bu tag ile ls verilen Frame `i olu turur. Cols ve Rows ile belirlenen her l iin bir <frame> tag kullanlmaldr. Kullanl biimi: <frame src="de er" name="deer" scrolling="deer" border---"deer" frameborder="de er" bordercolor= deer noresize> src : frame ierisine yklenecek sayfa ad n belirler. name : frame 'e verilecek ismi belirler. Ba lantlar (link vermek) ksmnda anlatlan "target" parametresine de er olarak burada kullandmz ismi vererek bir link yarat rsak linkin sonucu o frame ierisinde a lr. scrolling : Frame 'in kenarnda kaydrma ubuklannn olup olmayacan belirler. Yes, No, Auto deerlerini alr. border : Kenarlk izgisinin kalnln belirler. frameborder : erevenin kenarl nn olup olmayacan belirler. Yes, No, Auto deerlerini alr. bordercolor : Kenarlk rengini belirler. noresize : erevelerin boyutland nlamaz olduunu belirler. rnek : <html>

7-37

Web Uygulamalar

rnek : <html> <head> <title> ereveler </title> </head> <frameset cols="150,*"> <frame src="sol.html" name=" _left"> <frameset rows=" 1 00,*"> <frame src="ust.html" name="_top"> <frame src="sag.html" name="_main"> </frameset> </frameset> </html> Yukandaki rnei alma dizininize "ornek23.html" olarak kaydedin ve bir browser da grntleyin.
v

j,

- M c ,

Ifit ,

rwt Explourr

7-38

II MI,

HTMI, Kaynaklar

Web sayfalarnn temeli olan HTML dili hakkndaki bilgilere yine ntemetten ulaabilirsiniz. Birok web sitesinde (Trke, ngilizce...) HTML ile ilgili ayrntl bilgilere arama motorlar (search engines) araclyla ulamak mmkndr. HTML dilini rendikten sonra web tasar mn kolaylatrc aralar kullanarak daha kaliteli ve kolay tasar mlar gerekle tirebilmeniz iin baz programlar mevcuttur. Bunlardan s ka kullamlanlar Microsoft Front Page (http://www.microsoft.com ) Netscape Composer (http://www.netscape.com ) Macromedia Dreamweaver (http://www.macromedia.com ) CuteHTML (http://www.download.com)

7-39

ir -2

PHP (Personal Home Page)


Tarihe PHP, ilk olarak 1990'l yllarn ortalarnda Rasmus Lerdorf tarafndan gelitirilmeye balanmtr. Lerdorf un amac kiisel bilgilerini internet zerinden yaynlamakt . O tarihteki teknolojide, gnmzdeki gibi gelimi web tasarm yazlmlannn bulunmamasndan dolay , kiisel web sayfas yapmak ok daha zordu. Buradan yola karak, ki isel web sayfas yapmak iin bir yaz lm hazrlad ve adna Personal Home Page (PHP) adn verdi. PHP, Perl dili zerine kurulu bir dil olarak gelitirilmeye balanmtr. PHP' nin ok tutulmas zerine web tasarmclarnn ok ihtiyac olan, yani form yoluyla ziyaretiden gelen bilgileri ilemeyi salayan eklemeler yap larak adna PHP/FI (Form Interpreter) ad m ald. Kimileri tarafndan programn bu versiyonu PHP2 olarak adlandnld. 1995 ylnn ortalarnda PHP Lerdorf'un kurmu olduu bir grup tarafndan daha da geli tirildi. Bu sefer Perl dilindeki fonksiyonlardan tamamen arndrlm ve Object Oriented (Nesneye Dayal) bir dil haline getirildi. Gnmzde PHP4 versiyonu geli tirilmi durumdadr. PHP dili Linux gibi Ak Kaynak Kodlu bir dildir ve cretsiz olarak da tlmaktadr ve gelitirilmektedir. Linux, Unix, Windows tabanl iletim sistemlerinde alabilen versiyonlan mevcuttur. PHP Nedir ? PHP bir script dilidir ve PHP ile yaz lan kodlar bir editrde yaz lp PHP veya (kullanlan snime gre) 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 yorumlayc program mevcuttur. Bu yorumlarc yazlm PHP scriptlerini Web Server' n anlayabilecei bir biime dntrr ve yollar.
8-1

Web Uygulamalar

PIIP ile yazlm bir web sayfasna baland nzda temel olarak aadaki ilemler yap lmaktadr. stemci(Client) tarafindan PHP dosyas bir tarayc (browser) ile arlr. Web Server(Web Sunucu) dosya uzant sndan bu istein bir PHP dosyas olduunu alglar ve PHP yorumlaycya yollar. PHP yorumlaycs ilgili dosya iindeki scriptleri al trarak geriye dndrd sonucu Web Server' a tekrar gnderir. Web Server' a ula trlan sonu stemci(Client) tarafna HTML dosya olarak yollanr.

PHP oyun program yazmaya kadar bir ok amaca hitap edebilecek nitelikte bir dildir. Fakat konular ierisinde veritabanlan zerinde kay t ekleme, silme, deitirme, sorgulama i lemlerine yer verilecektir. Sonu olarak PHP, HTML dilinin yapamad ilemleri yapabilmek, HTML olarak daha i levsel sayfalar yapabilmek, Web Server'a bir tak m iler yaptrmak gibi yararlar salayan bir programlama dilidir diyebiliriz. PHP Gereksinimleri PHP kullanabilmeniz iin baz yazlmlara ihtiyacnz vardr. Ders ierisinde PHP dilinin Windows tabanl iletim sistemlerinde kullanlmas anlatlacaktr. Bu yzden gerekli yaz lmlann Windows tabanl iletim sistemlerine nasl kurulacandan ve al tnlacandan bahsedilecektir. Windows'un bilgisayannza kurulu olduunu varsaryoruz. Web Server : Web Server yapm olduunuz web sayfalannn internette gsterilebilmesini salayan bir yaz lmdr. IIS, Apache, Xitami gibi birok Web Server program mevcuttur. Fakat biz Apache Server kullanaca z. PHP4 : lk bata bahsedildii gibi PHP scriptlerinizin yorumlanabilmesi ve Web Server tarafindan anla labilmesi iin, bir PHP yorumlay c programa ihtiyac nz olacaktr. PHP4 bu yorumlama iini yapacak programn addr.

8-2

H. P

Veritaban : PHP dilini bir veritabanma kay t eklen e, karma, dzeltme ve sorgulama gibi i lemlerde kullanacam zdan bir veritabanma ihtiyac m z olacaktr. Veritaban olarak Progress derslerinde grm olduunuz Progress veritaban n kullanacaz,

ODBC Driver : ODBC (Open Database Connectivity) bir veritaban na baka bir uygulamadan balanmay salar. Her veritabannn kendine zel bir ODBC Driver' mevcuttur. Bu yzden Progress veritaban na balanmamz salayacak bir ODBC Driver' na sahip olmamz gerekir. Bu yaz lmlar nereden bulubilece iniz kitab n son ksm nda verilmitir.
Apache Server Kurulumu

Apache Server kurmak iin Setup dosyas n altrn ve aadaki admlar takip edin. 1- Bu ad mda Next > butonuna bas n.
i?..Apache HTTP Seyre!

wizard
Welcome to the Installation Wizard for Apache HTTP Server 1.3.22

The Installahon Wizard will allow you to modity, repair, or remove Apache HTTP Server 1.3.22. To continue, click Next.

8-3

Web Uygulamalar

2- Bu admda "Szle meyi kabul ediyorum" anlam na gelen ilk seene i sein ve Next butonuna bas n.
i Apache HITP Server - Installation Wmand
license Agreement

Please read the folkwang Ilcense agreement carefuty.

Apache Software License, Version tl Copyright (c) 2001 The Apache Software Foundation. Ali rights reserved. edIstribution and Use in source and Sinan/ forms, with er without modification, are perrnitted provided thatthefollowIng conditions are met . RedistrIbutions of source code most retain the above copyright nohce,thIs list of conditins and the following disclaimer.

2. Redistributions in binayform must reproduce the abowsopyright hoace, tas

3- Bu ekranda tekrar Next butonuna bas n..


, Y,, Apache HTTP Sel ver In tall,Rion Wi ard
Rearl This First Read this Before Running Apache on Windows.

uri

tas che san 'HTTP sen/er, originallydesigned for Unix systens. ThIs ie the version ton, d includes rnanyfrequently requeeted new features, and has an APIthat

otApache for Microsoft VlfindOws 2000, NT, 99, and 95 'systems. Like the Unbc allows alo be sodended to meet users' needs more easily. It alsa allows lirnIted
upport for ISAPI extensions.
, -- Vr Pah/US of the latestversion can be founcl on the Apache HTTP se ver project page

under:/fr ta2gWAomt npp__,k,3

8-4

Bu admda Network Domain Sunucu ad n, Server adn ve e-mail adresini yazn ve Next butonuna bas n.
Apache HTIP Server - Instailehon W zard

Server Information Please enter your server's information.

hittr cr.ankara.edu tr

dminLtemuhktin.cc.ankara.edu.tr

5-"Complete" seene ini iaretleyin ve Next butonuna bas n


i. Apache NTIP
S eIVSI - Instailahun W zard

uptype that test suits your needs.

8-5

Web Uygulamalar

6- Browse butonu ile program kurmak istedi iniz dizini sein (rn: C: \Apaehe) yada varsay lan dizine kurmak iin Next butonuna bas n.

Clange Current Destination F lder Browse to the destination fokler.

DataPase 211)1C83A MDLC9IA

Nanager

_J f- helf.1 lInetpub ,' logs , MA,45 , NCDTREE OGRENCI

agl''ograrn Fle ili1PROGRESS UlPub URekt (iiaRescue

aNgc
Olildocs alfd

Apoche H I IP Seere - lestollahAn Wwool

8-6

P IP

7- "Install" butonuna bas n.


Apache NT TP Servet - Installation Wirard
Ready M Install the Program The wizard re ready to begin installation.

Crick Insta9 to begrn the rnstallation.

iF you warrt to review or change any of your instalration settings, cick Back. Crirrk tancer to
exrt the wizard,

8- Kurulumu tamamlamak iin "Finish" butonuna bas n.


Apdelle tl T I P Sr ve - I nstaliat on Wizard

Installation Wizard Completed

The Installetion WPard has successfully installed Apache liTTP Server 1.3.22. Clirk Finish to exit the wizard.

8-7

Web Uygulamalar

Apache Server kurulumunu tamamlad ktan sonra, Apache Server'i kurduunuz dizin ierisinden httnd.conf dosyas n bulun ve u eklemeleri ilgili yerlere yap n. ScriptAlias /PHP/ "c:/PHP dizinin yolu /" AddType application/x-httpd-PHP .PHP Action application/x-httpd-PHP "/PHP/PHP.exe" PHP Kurulumu PHP kurmak iin Setup dosyas n altmn ve aadaki admlar takip edin. 1- Bu adm Next butonuna basarak gein.
Welcome

YpEr.rrr_xl'
REA~CE5,97.711,

2- Bu admda "Szlemeyi kabul ediyorum" anlamna gelen ilk seene i seip ve Next butonuna bas n.
8-8

License Aweenenl -

The PHP License, version 2.02 Copylght (c) 1399, 2030 The PHP Group An rights reserved

Redstribution and use in source and bir.ary forms, mth u tsdhour nodif cation, :s perrr tted provtded that the tollovAng ondtions are met 1 Redistributions of source code must etsin the above copyright t llTICE: By Olcking 1 Agree' beiosv, yot agree to he bound by alt the telms and condittahs of the above License Agreefsent. Catofully tcdd Ise licersekreament berore accepting. If you da not agree vith any of the terms ond conditions, ct ck. 'Canel' ta dersde' the Setup process < 2,t1ok [1: ,L,9tso el Tuncal

3- PHP yi "Standart" olarak kurmak iin sein ve Next butonuna bas n.

Please -selen the typt, o r mstslitition you tequIro

8-9

Web Uygulamalar

4- PIIP yi kurmak istedi iniz dizini sein ve Next butonuna bas n.


.,,Choose De tinalion Locatian Setup witl inotaN PHP 4.0.6 in the following foklar. To nstail ini a dilatant !Mei, click 8 rowse, and seiect anothet folder. You can choose not to iristaB PHP. 4.0.6 by clicking Canca' to eoit Setup.

5- Bu admda makinenizin IP adresini ve e-mail adresinizi yaz n. IP adresi yerine o IP adresine kar lk gelen ismi yaz n veya Localhost olarak b rakn.

Pie,se entet the addiesiO of your 644TP oetaho

Plea'se entet the Irethf address f er the reeti funchion.

me@locd kos ce ,

Hr ZRT PotcpRcicessofni

axr

<

8-10

PHP

6- Makinenizde kurulu olan Web Server yaz lmn (Apache) sein ve Next butonuna bas n
zi -y Server Type r.;.

Please seiect the type o! http setvelyou in ,nh to configure to hun plop C Microsoft PV./S on Windons x er ME MIcrosoft PWS cn NT Workstation < Microsoft iiS 3 or Iov er rr Microsoft IIS 4 or hghet

,,tarn
Nene (or the, serverl- 1 Nili conkaure the weh server mar, ii;

H
PWCPWC1 SSC:Ikt

r. ack

Next >

7- Bu admda Next butonuna bas n.


:i" Start Installatior f

ta1113-J P4.,,1 C

`, PEPT ). r PREPROr.ES,P,

8-11

Web Uygulamalar

8- PHP kurulumunu tamamlam oldunuz.

PHP 4.0.6 has been successfully installed. Press the OK button to exit this installation.

Progress Veritaban Kurulumu Progress Programlama k smndan ulaabilirsiniz. ODBC Driver Kurulumu ODBC ile bir veritabanna balan rken en nemli unsur veritaban nn ok kullancl olarak a lmasdr. Bu yzden ilk olarak bir veritaban n ok kullancl olarak amak iin baz ilemler yaplmas gerekmektedir. ok kullancl a lacak bir veritaban iin bir port numaras tanmlanmaldr. Tanmlanacak port numaras "C: \Windows\" dizini altnda "Services" dosyas iinde tammlamr. ilgili dosyay Notepad ile birlikte atktan sonra, en son sat nna gelip bir Servis ad ve Port numaras tanmlamas yaplr. rnek : Services dosyas n ap son satrma gelerek tanmlamay ekleyin. ogrsrv 3 1 00/tcp aadaki

Notepad penceresini kapattktan sonra MS-DOS Komut istemini a p veritabannn olduu dizine girip
8-12

PH1>

C:\DLC91A\bin\PROSERVE -db ogrenci -H localhost -S ogrsrv -N tcp yazp enter tu una basn. Bu i lem sonunda veritaban nn ok kullancl (Multi-User) olarak a ldn greceksiniz. -db : ok kullancil alacak veritabannn ad -H : Veritaban mn kumlu olduu bilgisayann ad (ayn bilgisayar iin Localhost ) yaz labilir. -S : Services dosyas iinde tanmlanan servis ad -N : Balant protokolnn tipi ODBC Driver' nn sisteminize ykl olup olmad n kontrol etmek iin Denetim Masasndan ODBC Data Sources ikonunu ift t klayn ve Drivers sekmesine bak n. Eer MERANT Progress 9.1A Driver' n grebiliyorsanz gerekli ODBC Driver' ykl demektir.
ODBC Data Source kdministrator

Uyar : Eer ilgili driver' gremiyorsanz ncelikle Progress Installation CD sini kullanarak sisteminize kurman z gerekmektedir. Bunun iin imdilik Progress'i "Complete" olarak yklemeniz nerilir.

8-13

Web Uygulamalar

ODBC Driver' ykl ise Denetim Masas nda ODBC ikonunu tklayp System DSN k smna girip yeni bir DSN yaratmak iin Add butonuna basn ve karnza kan pencereden "MERANT 3.60 32 BIT Progress SQL92 v9.1A" srcsn sein.

Create

New Data Soluce Select a ckive for which you vvarst to set up a data source. Name Versjo MERANT 3.60 32-BIT Prooress SQL92 v9.1A 3.60.0 MERANT 3.60 32-BIT Progress SQL92 v9.18 3.60.0 Microsoft Access Driver (Trndb) 4.00.4 Microsoft df3ase Driver (Tdbf) 4.00.4 Microsoft Excel Driver (Tido) 4.004 Microsoft FoPro Driver (Td130 4.00.4 Microsoft ODBC for Oracle 2.573 Microsoft Paadox Driver 4.004 Microsoft Text Driver (Ttxt: Tesv) 4.00.4 r

Iptal

Progress kurulumunuza gre uygun olan (rnek: Progress 9.1A kullahyorsanz MERANT 3.60 32 BIT Progress SQL92 v9.1A) seip "Son" butonuna bastnzda sizden balanmak istediiniz veritaban ile ilgili bilgiler isteyen bir pencere kacaktr. Data Source Name : Bu ksma balantnz tanc bir isim yazmalsmz. Biz PHP de yazaca mz kodlar renci veritaban ile kullanacamz bu alana "ogrphp" yazalm. Description : Buraya ba lantyla ilgili a klamanz yazabilirsiniz. rnein : "renci Veritaban Balants" HostName : Balanmak istedi imiz veritaban n ok kullanc l aarken H parametresiyle kulland nz isim
8-14

PHP

Port Nunber : Ba lanmak istedi imiz veritabann ok kullancl aarken -S parametresiyle kulland nz isim (ayn zamanda bu isme karlk gelen port numaras da kullanlabilir)
ODBC Progress SQL92 Driver Setup
General

1 Ad

anced 1 About

1
!S poru

Data Source Name. D escrpton: H ost ame: Port Number. Database Name: 1.1ser ID:

1Proateg Sports Db

l locaihost I953G
ISpoft

Help

isysppoEnEss

Database Name : Balanmak istedi imiz veritaban n ok kullancl aarken -db ile kulland= isim (ogrenci) User ID : Bu k sma veritaban ierisinde oluturulmu kullanc adlarndan birini yazyoruz. Eer hi kullan c yaratlmamsa "SYSPROGRESS" yazabilirsiniz. Gerekli bilgileri doldurup "Test Connect" i seti inizde "Connection Established!" mesaj n almanz gerekir. "SYSPROGRESS" kullan cs ile balant kurarken ifre yazmanza gerek yoktur.

8-15

Web I..;ygulamalar

ODBC Progress SQL92 Driver Setup General Advanced I About Data Source Name: Desctiption: Host Mama: Port Numbat Qatabasenterne: .bser 1D: MERANT Progress SQL Sports

1 IS ports
IProgteg Sports Db localhost

Oluturduunuz "Data Source" u "Uygula" butonuna basarak kaydedip kn. Bylece veritaban na PHP den ula abilmek iin gerekli temel ilemleri bitirmi olduk. PHP Yazm Kurallar Programl ama Yap s PHP yorumlayc s , bu "program" altrabilmek iin dosyann iinde PHP komutlann arar. PHP Komutlan, komut arrac ndan anlalr ve bunlar tanedir. 1. <?PHP ?> 2. <? ?> 3. < SCRIPT LANGUAGE="PHP"> rnek 1: <html>
8-16

</SCRIPT>

PHP

<?PHP print (" lk PHP uygulamas "); ?> </html>

print() : Ekrana herhangi bir bilgi yazd rmak iin kullanlr print() yerine echo komutu da kullan labilir. rnek 2: <html> <? print (" lk PHP uygulamas "); ?> </html> rnek 3 : <html> <SCRIPT LANGUAGE= "PHP" > print ("lk PHP uygulamas "); </SCRIPT> </html>

Bu rnekte de sonu ayn ekilde grntlenir.

PHP de yazd nz kodlar HTML olarak geri dndrlr bunun sebebi yazm olduunuz kodlarn sunucu tarafnda almasdr. Bundan dolay eer tararc nzda bir PHP sayfas n arrsanz ve sayfamn kaynak kodunu grntlerseniz yazm olduunuz PHP kodlarn gremezsiniz. Sadece HTML kodlarn grrsnz.
8-17

Web Uygulamalar

En uygun komut ayracn belirlemek sizin elinizdedir. Eer sadece PHP kullanyorsanz ikinci yntemi kullanabilirsiniz. E er HTML yerine XML kullamyorsanz XML taglar da <? ?> eklinde olduundan birinci yntemi kullanabilirsiniz. E er scriptlerinizi daha iyi ay rt edebilmek istiyorsanz nc yntemi kullanabilirsiniz. Burada dikkat edilmesi gereken nokta buradaki script mant JavaScript ve VBScript ten farkl olarak Web Server tarafnda almasdr. Oysa ki JavaScript ve VBSript gibi scriptler Client( stemci) tarafnda almaktadr. 4. "/*" "*/" bu iki iaret aras nda yazlacak her trl metin a klama anlamna gelecektir ve PHP yorumlay cs tarafndan gzard edilecektir. 5. "Il" iaretinden sonra yaz lacak her trl metin a klama anlamna gelecektir ve PHP yorumlay cs tarafndan gzard edilecektir. 6. "#"iaretinden sonra yaz lacak her trl metin a klama anlamna gelecektir ve PHP yorumlay cs tarafndan gzard edilecektir. 7.Her satnn sonuna ";" i areti konulur(A klama satrlar hari). Bu iaretlerin birbirinden fark tek satr veya ok satr iin geerli olmasdr. Aadaki rnekleri inceleyiniz. <HTML> <?PHP /* Bu iki iaret arasnda istediiniz kadar aklama yazmanz mmkn */ print ("Aklama rnekleri!"); // sterseniz bu ekilde de a klamalann z yazabilirsiniz
8-18

P11P

# Bu satr bir a klama sat rd r... ?> </HTML> HTML ve PHP Kodlarn iie Kullanma PHP kodlan, bir HTML kodlar ierisinde yazlrken ; <html> <? # PHP kodlarnn yazlmaya balanaca bildirilir.

?>

# PHP kodlannn bitirildi i bildirilir.

</html> eklinde kullanlr. rnek 1: <html> <? echo " lk PHP uygulamas "; ?> </html> Yukardaki rnei Web Server'a "p_ornekl.php" eklinde kaydedin ve taraycnzn adres satrnda "http://localhost/p_omekl.php " yazarak ann. ilem sonucunda aadaki ekran grntsn elde edeceksiniz : rnek 2 : <html> <? print "PHP bir script

?>
8-19

n JAl

Web Uygulamalar

<? print "PHP kolay renilen bir dildir." ?> <html> Yukandaki rne i Web Server'a "p_onekl.php" eklinde kaydedin ve taraycnzn adres sat nnda "http://localhost/p_ornekl.php " yazarak arn. ilem sonucunda aadaki ekran grntsn elde edeceksiniz : Yukarda grld gibi HTML kod ierisinde birden ok defa PHP kodu yazmak iin PHP tag alabilir. neri : PHP kodlann z yazmaya balarken, PHP tag n atktan sonra kapatn ve dier kodlannz araya ekleyin. Aksi halde PHP taglanm kapatmay unutursanz istediiniz sonular elde edemezsiniz ve daha sonra hangi tagn kapatlmadn bulmak gle ebilir. PHP Kodlarn Tek Bana Kullanma Bu yntemle oluturulacak PHP uygulamalar nda tm HTML kodlar PHP komutlaryla yazhr. Fakat sayfa dizayn ve kodun anlalrl zor olduundan bu yntemi kullanmayabilirsiniz. rnek 1: <?PHP print ("<html>"); print ("Hereyi PHP ile yazabilirsiniz") print ("</html>");
?>

zel Karakterler

8-20

PHP

PHP dilinde baz karakterlerin zel anlamlar vardr.(mein $ iareti gibi) Bu iaretleri PHP farkl olarak algladndan dolay , biz bunlar metin olarak kullanmak istedi imiz zaman nlerine "\" karakteri koyar z. Bylelikle PHP yorumlay c s bunlar dz metin olarak de erlendirmi olur. Bu karakterler ve i levleri aadaki gibidir.

\' \" \\ \$ \n \r \t

Tek trnak ift trnak Ters bl Dolar iareti Yeni Satr (New Line) Satr Ba (Return) Sekme (Tab) karakteri

rnek 1 : <html> <?PHP print ("1\$ = 1.460.000 TL' dir") ?> </html> Ekrana "1$ = 1.460.000 TL' dir" ifadesi yaz lr. Deikenler ve Veri Trleri Veri Trleri Integer : Tamsay veri trdr. $sayi = 1000; $sayil = 275000;
8-21

eb Uygulamalar

Double: Ondal kl saylar iin kullanlr. $sayi = 82.05; String: Karakter bilgiler iin kullanlr. $adi = "Sibel" Boolean: Mant ksal ifadeler iin kullanlr. $cevap = True. $sonuc = False. Object : Nesne de ikenleri iin kullanlr. Array : Dizi eklinde deiken tanmlamak iin kullanlr. Deikenler Deiken mant dier programlama dillerinde olduu gibidir. Progress Programlama ksmnda rendiiniz deiken kavram burada da geerlidir. Bu sebepten de ikenin ne demek olduundan ok nasl kullanld anlatlacaktr. 1. PHP' de deikenler nne $ simgesi konularak tan mlanr. rnek 1 : <? $adi; $soyadi; $numara; $telefon; $cinsiyet; ?> 2. Deikenler, harf, rakam veya alt izgi (_) ile ba layabilirler; bu karakterleri ierebilirler; ama iinde bo luk veya ((4,],),?,\,!) gibi'i aretler
8-22

r, o

PF1P

bulunmaz. Birok program lama dilinden farkl olarak PHP de deikenlerin tipleri (nmerik,karakter,taril ,...) ilk de erleri atand ktan sonra belirlenir. rnek 2: <? Sadi = "Yahya"; // String $soyadi = "Demircan"; // String $tel = 4700550; // Integer ?> 3. Deikenlere de er atamak iin "=" i areti kullan lr. rnek 3: <? $degiskenl = "de er"; $degiskenl = 5; print $degiskenl; // Ekrana "de er" ifadesi yaz lacaktr. print $degisken2; // Ekrana "5" ifadesi yaz lacaktr. ?> 4. Bir deiken direkt olarak de er atanarak tan mlanabilir. rnek 4: <? $tanimlal = "Ankara"; $tanimla2 = 276; Stanimla3 = 45.23; ?>
8-23

Web Uygulatnalan

5. Bir deikenin deerini di er bir deikene atamak iin "=" den sonra ikinci dei ken yazlr. rnek 5: <? $adi = "Ali"; // $adi de ikenine "Ali" de eri atanyor. $isim = $adi; // $isim de ikenine $adi deikeninin deeri atanyor. print $isim; // Ekrana "Ali" yaz lacaktr. ?> $isim deikeninin de erinin her seferinde $adi de ikeni ile birlikte deimesini, aadaki atama i lemiyle salayabiliriz. rnek 6: <? $adi = "Ali"; // $adi de ikenine "Ali" de eri atan yor. $isim = &Sadi; // "&" i areti her seferinde $isim de ikeninin deerinin // deimesinin salyor. $adi = "Murat"; $adi de ikenine "Murat" de eri atanyor. print $isim; // Ekrana "Murat" yaz lacaktr. ?> 6. PHP'de dier programlama dillerinden farkl olarak bir de ikenin tuttuu deer dier bir deiken tarafndan gsterilebilir. rnek 7:
8-24

PHP

<? $adi = "Muhittin"; $isim = "adi"; print $$isim; // Ekrana $adi de ikeninin deeri yazlacaktr. ?> rnek 8: <?PHP $isim = "adi" $$isim = "Murat" print "Sadi"; print $$isim; print "${'adi'}"; print "$ {$isim} ";
# Bu drt print i leminden sonra ekrana "Murat" yaz lacaktr.
?>

Sabitler Sabitler program boyunca de imeyen deerlerdir. Bir sabit tammlandktan sonra atanana ilk de erini korur, yeni bir deer atamas yaplamaz.Sabitler define0 komutu ile tanmlanrlar. Kullanh biimi: defne (sabit_adi,deger)
8-25

r-

Web Uygulamalar

rnek 1: <? define (pi_sayisi , 3.14); define (dis_acilar, 360); $aci 1 = 120; $aci2 = 80; $aci3 = dis_acilar - ($aci 1 + $aci2); print ($aci3); // 160 de erini dndrr. ?> Bir sabitle bir de iken aras ndaki yazm fark, sabitlefin nnde $ simgesinin bulunmamasdr.

defined() : Bir sabitin daha nce tan mlanp tanmlanmadna gre true / false sonu dndrr.
Kullan l biimi: defned ("sabit_adi") rnek 2: <? $a = defined ("pi_sayisi") // "pi_sayisi" adl bir sabit olmad iin // false de er dndrr.

?> lemciler (Operatrler) Atama Operatr


Bir deikene deer atamak iin kullan lr.
8-26

,s s

PHP

Aritmetik Operatrler Toplama kartma Blme arpma Kalan (Modulus) rnek : ? $a = 6; $b = 3; print ($a + $b); // 6 + 3 = 9 sonucunu dndrr print ($a - $b); // 6 - 3 = 3 sonucun dndrr print ($a / $b); // 6 / 3 = 2 sonucunu dndrr print ($a * $b); // 6 * 3 = 12 sonucunu dndrr print ($a % $b); // 6 / 3 i leminden kalan yani 0 (sfir) dndrr. ?> ki String'i Birle tirme (Concotenation) ki string ifadeyi birle tirmek iin "." kullanlr. rnek : <? $a = "Ankara " . "niversitesi " " Fen " . " Fakltesi" $b = "PHP " "Programlama" . "Dersi "; $c = $a . " ve " $b;

8-27

Web Uygulamalar

print (c$); // "Ankara niversitesi Fen Fakltesi ve PHP Programlama Dersi" // sonucu kar. ?>
Birle ik Atama i lemleri

+=

:Deikenin deerini belirtilen say kadar artrr.

Kullanl biimi: $degisken rnek :

sayi

<? $sayi = 30; $sayi += 10; // $sayi = $sayi + 10 i lemini yapm olur. print ($sayi); // 40 sonucunu dndrr -= :Deikenin deerini belirtilen say kadar eksiltir.

Kullanl biimi: $degisken -= sayi rnek 1: <? $sayi = 30; $sayi -= 10; // $sayi = $sayi - 10 i lemini yapm olur. print ($sayi); // 20 sonucunu dndrr ?> *,:Deikenin deerini belirtilen sayyla arpar.

Kullanl biimi: $degisken *= sayi


8-28

PHP

rnek 2:

$sayi = 30; $sayi *= 10; // $sayi = $sayi * 10 i lemini yapm olur. print ($sayi); // 300 sonucunu dndrr ?>

/=

:Deikenin deerini belirtilen sayya bler.

Kullanl biimi: $degisken / sayi rnek 3: <? $sayi = 30; $sayi / 10; // $sayi = $sayi / 10 i lemini yapm olur. print ($sayi); // 3 sonucunu dndrr ?> .= :De ikenin deerini belirtilen metine ekler.

Kullaml biimi: $degisken .= "metin" rnek 4: <? $metin = "Ankara "; $metin .= "niversitesi"; // $metin = $metin . "niversitesi" // ilemini yapm olur. print ($metin); // "Ankara niversitesi" sonucunu dndrr
8-29

Web Uygulamalar

?>

++

: Deikenin deerinin bir artnr.

Kullanl biimi: $degisken++ veya ++$degisken rnek 5: $a = 5; $a++; print ($a); // 6 sonucunu dndrr. : Deikenin deerinin bir eksiltir. Kullaml biimi: $degisken-- veya --$degisken rnek 6: $a = 5; $a--; print ($a); // 4 sonucunu dndrr. Karlatrma Operatrleri : Eittir : Ayn : Eit Deildir : Byktr : Kktr : Byk yada E ittir : Kk yada E ittir

PHP

Kar lat rma kullanlabilir.

operatrleri

strin

ve

say sal

kar latnralarda

Mantksal Operatrler or : Koullardan en az birinin sa lanmas durumunda True sonu dndrr. or yerine "II" kullan labilir. and : Sadece koullarn tmnn doru olduu zamanlarda True sonu dndrr. and yerine "&&" i areti kullan labilir. Xor : ki kouldan sadece bir tanesinin do ru olmas sonucuna True deer dndrr. : Ko ulun deerlerinden birinin yanl olmas durumunda True deer dndrr. PHP Dilinde ilemlerin ncelik S ras Dier dillerde olduu gibi PHP iin de ilemlerin ncelik sras mevcuttur. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ++ ve -/*% +< <= => > == && _= /= %= . and xor or !

8-31

Web Uygulamalar

Diziler (Array) Dizi, bellekte ayn isim alt nda toplanm deikenler kmesidir. E er ki ayn trden veriler grubunu bellekte tutmak gerekirse diziler kullan lr. rnein verilerin s ralanmas , ortalamasnn bulunmas gibi ilemlerde dizilere ihtiya duyulur. PHP ierisinde tan mlanan diziler bir veya daha ok boyutlu olabilir. Bunun daha iyi anla labilmesi iin aadaki dizi tanmlamalarn' ve rnekleri inceleyiniz. Dizi Deikenler Ayn trden bilgilerin bir de ikenin ierisinde tutulmas yla oluturulur. Bir deikenini dizi olup olmad "11" simgelerinden anlalabilir. Kullanl biimi : $degisken = array(degerl, deger2,...,degerN) veya $deiken[indis_no] = deger eklindedir. Bir dizinin n. inci eleman na ulamak iin dizinin ad ndan sonra k eli parantez iinde dizi eleman nn indis numaras yazlr. rnek : $degisken[5] = "Aylin"; Bu mekte dizinin 5.inci elemanna "Aylin" deeri atanmtr. Eer indis numaras yazlmazsa ilk eleman olan s firnc sradaki elemana ula lr. Daha sonra indis numaras verilmeden ula lan eleman bir sonraki eleman olacaktr.
8-32

PHP

rnek : print ($dei ken[D; // Dizinin s frnc eleman' yazlr print ($deiken[]); // Dizinin birinci eleman' yaz lr Diziler tanm lanrken array komutu kullan lmayabilir. $liste = (deger 1 ,deger2,...); veya $liste[] = degerl; $liste[] = deger2; Slisten = degerN; Diziler tammlanirken indis numaras yerine isim verilebilir. $liste[isiml = degerl; Sliste[isim2] = degerl ; likili Diziler Bu dizi tipi dizil de ikenlerden farkl olarak birden fazla de ikeni ierebilir. rne in bir otelin kat numaralar n tuttuunuz bir dizi olsun. Her kat numaras nda da o kattaki oda numaralar tutulsun. Ortaya yle bir sonu kyor. (x inci kat n, y inci odas ) gibi bir bilgiye ulaabiliyoruz. likili dizileri dizi dei kenlerden ayran en nemli zellik deikenlerine isim verilebilmesidir. Kat No 1 1 2 3 Oda No 101 102 205 307 Durum Dolu Dolu Bo Bo
8-33

Web Uygulamalar

402

Dolu

Burada grld gibi katlann numaras tek ve odalann numaras tek olacak ekilde bir ayarlama yapt mzda karmza (katlar,odalar) eklinde bir dizi kyor. Herhangi bir kat numaras belirlendikten sonra o kattaki odalardan, herhangi birinin dolu veya bo olduunu kontrol edebiliyoruz. likili dizi tammlama $degisken = array (array "isim2"=>deger2,..,isimN"=>degerN), array...) rnek : $otel = array (array("katno"=>l, "odano" => 101, "durum" => "dolu")); likili bir dizinin elaman na ulamak gerektiinde indis numaras veya ad belirtilir. rnek : print ($otel [0] [katno]); // Otel dizisinin s frnc elemanndaki // katno alanna ulalmtr. likili dizi tammlamann dier bir yntemi aadaki gibidir. $degisken [indis] [indis] = deger; Buradaki indisleri art rarak daha fazla boyut elde edebilirsiniz. Bir ok boyutlu dizi ierisindeki e says dizinin her bir indis saysnn arpm kadardr rnein (2,8) boyutlu bir dizideki e says 16 adettir. Dizilerde Kullan lan Fonksiyonlar countO: Bir dizideki eleman say sn dndrr.
8-34

("isim 1 "=>deger 1 ,

PHP

Kullaml biimi : count($diziadi); rnek : count($liste); fs_array(): Dizinin eleman na ilk ulatmzda deer olup olmadn aratrn Kullarul biimi : is_array( $dizi_adi ); rnek : is_array($liste);

array_mergeO: ki dizinin elamanlar n birletirerek yeni bir dizi oluturur. Kullanl biimi: $yeni_dizi = array_merge ( $ilk_ciizi, $ikinci_dizi ); rnek : $yeni_dizi = array_merge ( $liste, $sinif ); array_shift(): Dizinin ilk eleman n siler. $yeni_dizi = array_shift ( $liste );

8-35

Web Uygulamalar

sort() : Bir dizinin elemanlar n kkten bye veya A' dan Z ye sralamak iin kullan lr. Kullanl biimi : sort ($dizi_adi); rnek : sort ($isimler);

rsort0: Bir dizinin elemanlann bykten ke veya Z' den A' ya sralamak iin kullanlr. Kullanl biimi : rsort ($dizi_adi); rnek : rsort ($isimler); explode : Bir string de ikeni belirtilen karakterden ay rarak diziye dntrtir. Kullanl biimi: degiskenl = explode("ayirac",degisken); rnek : Sxadres = "Ankara;niversitesi"; $xadr = explode(";",$xadres);
8-36

2. 3 (,

PHP

echo $xadr[0]; //Ankara echo $xadr[1]; //niversitesi PHP' de Kontrol Yap lar PHP' de Progress ve di er programlama dillerinde olduu gibi dngler iermektedir.(Progress' teki If-EndIf , Case-EndCase gibi). Daha nceki programlama bilgilerinizden dolay bu dngler hakk nda ok fazla aklama yaplmayacaktr. Eer daha fazla bilgiye ihtiya duyarsan z Progress Programlama k smndaki ilgili konulan inceleyebilirsiniz. if Kontrol Yaps Bir koulun olmas veya olmamas durumunda yap lacak i lemleri ayrmak iin kullan lr. Kullanl biimi 1: if ( ko ullar ) { Komutlar elseif (di er koullar) { Komutlar else { Komutlar Kullan l biimi 2: if ( koullar ) Komutlar
}

elseif (koullar) { Komutlar

8-37

Web Uygulamalar

Kullan l biimi 3: if ( ko ullar ) { Komutlar else { Komutlar


}

Kullanl biimi 4: if ( koullar ) { Komutlar


}

rnek : ki saydan byk olan bulan program.

$sayil = 5; $sayi2 = 15; if ($sayil > $sayi2)


{

print ("lk say byk $sayil");


}

else if ($sayil < $sayi2) { print (" kinci say byk $sayi2");
}

else
{

print ("Saylar eit $sayil,$sayi2");


}

switch Kontrol Yap s

8-38

PH1'

Progress' deki Case - EndCase blo una karl k gelir ve de ikenin deerinin uygun oldu u duruma gre yap lacak i lerin belirlenmesini sal ar. Kulland biimi: switch ( deiken ) { case KO UL-1 ; Komutlar break; case KO UL-2 ; Komutlar break; case KO UL-3 ; Komutlar break;

default: Komutlar
}

Grld gibi bir koul sonunda yap lacak i ler bitirildikten sonra break komutu kullanlmaktadr. Break komutu kullan lmayabilir fakat program ak srasnda uygun kouldaki ilemler bittikten sonra di er ko ullannda uygun olup olmad snanr. Mevcut ko ullardan hibirinin salanmamas durumunda yap lacak i lemler default blo unda belirlenmektedir. Uyan : Eer ko ullardan sonra break komutunu kullanmazsan z default bloundaki komutlarda al tnlacaktr. rnek : Verilen sayya gre gn adn bulan program. <? $gun = 1;
8-39

2_39

Web Uygulamalar

switch ( $gun ) case $gun = = 1; print ("Pazartesi"); break; case $gun = = 2; print ("Sal "); break; case $gun = = 3; print ("ar amba"); break; case $gun = = 4; print ("Per embe"); break; case $gun = = 5; print ("Cuma"); break; case $gun = =6; print ("Cumartesi"); break; case $gun = =7; print ("Pazar"); break; default : print ("Yanl seim"); break;
}

?>

while Dn gs Bir art saland srece bir yordam n icra edilmesidir. Program n icras srasnda while blouna gelindiinde ko ul kontrol edilir ve ko ul salanyorsa while dngs ierisine giyilir.
8-40

P111>

Kullan l biimi: while (ko ul) { art salanyorsa yap lacaklar

rnek : l'den 10'a kadar olan say larn toplam n bulan program. <? $sayac = O; while ($sayac <= 10)
{

$sayac ++; $toplam = $toplam + $sayac;


}

print ($toplam); ?>


do while Dngs

While dngsnden farkl olarak programn icras srasnda do - while blouna gelindiinde art kontrol edilmez. do - while blo una direkt girilir ve ko ul ikinci dngnn ba layaca srada kontrol edilir. Kullanl biimi: do { art salanyorsa yaplacaklar
}

while (koul); rnek : l'den balayarak, sonu 100 den byk oluncaya kadar toplanmas gereken rakamlarn saysn bulan program.
8-41

Web Uygulamalar

<? $sayac = 0; Stoplam = 0; do $sayac = $sayac + 1; $toplam = $toplam + $sayac; while ($toplam < = 100); print ("Kullanlan rakam says : $sayac") ?>
for Dngs

Bir yordam n istenilen say kadar al trlmasn salar. Kullanl biimi: for ( $degisken = ilk_deger ; kosul ; adim ) { Koul doru ise yap lacak i lere ilikin komutlar rnek : l'den 100'e kadar ift say larn toplam n bulan program.
<?

for ( $say = O; $say <= 100 ; 2 ) { $cift = $cift + $say;


}

print ($cift); ?> for blounun herhangi bir yerinde kmak iin break komutu kullan lr. for blounun herhangi bir yerinde bir sonraki tekrara gemek iin continue komutu kullan lr.

8-42

PLIP

Fonksiyoular PHP' de fonksiyonlar di er progranlama dillerinde olduu gibi iki trdedir. Birinci olarak PHP ierisindeki haz r fonksiyonlar ve ikinci olarak programc tarafndan oluturulan fonksiyonlardr. lk olarak PHP' ye ait olan fonksiyonlar n neler olduunu ve nasl kullanldklarn greceiz. print Ekrana bir de ikenin deerini veya bir metni yazdrmay salar.
() :

Kullanl biimi: print ("Yaz lacak ifade") veya print ($degisken_adi)

rnek : print ("PHP Programlama"); yazdrr. $gun = "Perembe"; print ($gun); //Ekrana "Per embe" yazdm.

I Ekrana "PHP Programlama"

gettype0 : Bir deikenin ne tr bir veri ierdiini dndrr Kullanl biimi: gettype($degisken_adi) rnek : $ders_adi = "PHP Programlama";
8-43

Web Uygulamalar

print gettype($adi); // Ekrana "string" yaz lacaktr.

settype() Bir deikenin veri trn deitirmek iin kullanlr. Burada dikkat edilmesi gereken nokta veri tr de itirilecek deikenin deerinin yeni trle uyumlu olmas gerekir. rne in bir metin de eri ieren deiken saysal bir tre dn trlemez. Kulland biimi: settype($degisken_adi , yeni_tur) yeni_tur : String, Integer, Double, Boolean olabilir. rnek : $sayi = 56.48 // lk atama ondalk say olduundan tr Double oldu. settype ($sayi , Integer) // Tip tamsay ya dnt ve ondalk ksm atld. $final = 78 settype ($final , String) // Tip karaktere dn t ( integer ), ( double ), ( string ), ( boolean ) : Bu fonksiyonlar ayr trdeki verileri ieren iki de ikenin deerini birbirine aktar rken, tr deitirmek iin, kullanlr.

Kullanl biimi: $degiskenl = ( integer ) $degisken2 $degiskenl = ( double ) $degisken2 $degiskenl = ( string ) $degisken2
8-44

PIII)

$degisken1 = ( boolean ) $degisken2 rnek : $sonuc = "75" ; // Karakter trdeki $sonuc de ikenine "75" deeri atan yor. $basari = ( integer ) $sonuc // $sonuc de ikeninin deeri integer a dntrlyor // ve $basari de ikenine atanyor. isset() : Bir de ikene deer atanp atanmad sonucunu dndrr. Genelde ko ul cmleleriyle birlikte kullan lr. Kulland biimi: isset($degisken) rnek : if (isset($sifre)) { print(" ifre girildi");
}

unset() : Varolan bir de ikeni yok eder. E er ki bir deiken program sonlandnlncaya dek bir daha i e yaramayacaksa bellekte yer kaplamamas iin yok edilmesi uygundur. Kullan l biimi: unset($degisken_adi) rnek : unset ($soyadi); // $soyadi de ikeni yok edilir.

8-45

Web Uygulamalar

empty() : isset() fonksiyonunun tersine e er deikene deer atanmamsa True sonu dndrr. Kullanl biimi: empty($degisken_adi) rnek : $adi = "". print (empty($adi)); // True de erini dndrr. $adi = "Mehmet" print (empty($adi)); // False de erini dndrr.

is_string(), is_integer(), is_double0 : Deikenin deerinin aradklar tr olup olmadna gre True/False de er dndrr. Kullanl biimi: isstring ($degisken_adi) is_integer ($degisken_adi) is_double ($degisken_adi) rnek : $sayi = 10; $sonuc = is_string ($sayi); // False sonu dndrr. $metin = "Ankara" $sonuc = is_string ($metin); // True sonu dndrr. Daha nceden de belirtildi i gibi kendi fonksiyonlarmz da PHP ierisinde kullanabiliriz. Fakat kendi fonksiyonlar mz kullanabilmek iin ncelikle tan mlamak gerekir. Bir fonksiyon dardan ald deerlere karlk bir deer dndrme mant yla alr. Fonksiyonun dardan ald deerlere argman ad verilir. Bir fonksiyon birden fazla argman kullanabilir. Fakat geriye tek deer dndrr.
8-46

PI1P

String Fonksiyonlar substr0 : Bir metnin ierisinden istenilen bir k smnn alnmasn salar. Kullarnl biimi: substr($degisken, ba la, [boyut] ); rnek :
<?

$metin --- "Ankara niversitesi Fen Fakltesi"; $fak_adi = substr($metin, 20, 13 ); print ("Faklte :".$fak_adi); ?> trim0 : Metnin bandaki ve sonundaki bo luklar siler. Kullaml biimi: trim ($degisken); rnek : $sehir = " Ankara"; trim ($sehir); print ($sehir); // Sa ve sol boluklar krparak "Ankara" yazlacakt r.

chr0 : ASCII kodu verilen karakteri dndrr. Kulland biimi:


8-47

Web Uygulamalar

chr(kod); rnek : print (chr(65)); // "A" de erini dndrr ord0: Verilen karakterin ASCII kodunu dndrr. Kulland biimi: ord(karakter); rnek : print (ord("A")) ; // 65 de erini dndrr. strlen0 : Verilen metnin uzunluunu tamsay cinsinden dndrr. Kulland biimi: strlen($degisken); rnek : print (strlen("Ankara")); //6 de erini dndrr

printfO,sprintf0: Metin biimlendirme iin kullan lr. :Yzde iareti yazdrr. :Deer tamsay olarak i lem grr ve ikili say olarak dner. :Deer tamsay olarak i lem grr ve ASCII deerinin karl olan karakter olarak dner. d :Deer tamsay olarak i lem grr ve ondal k say olarak dner.
b c
8-48

0/0

PHP

f :Deer kesirli say olarak i lem grr ve kesirli say olarak dner. o :Deer tamsay olarak i lem grr ve sekiz-tabanl (octal) say olarak dner. s :Deer string olarak i lem grr ve alfanmerik olarak dner. x :Deer tamsay olarak ilem grr ve 16 tabanl (hexadecimal) say olarak dner. (Harfler, kk harf olur). X :Deer tamsay olarak i lem grr ve 16 tabanl (hexadecimal) say olarak dner. (Harfler, byk harf olur).

Kullanl biimi: printf( "biim" , $degiskenl, $degisken2, ... "metin" );

Doldurma karakteri: tek t rnak ve onu izleyen bir karakterden olu ur. Hizalama: Eksi i aretinin varl yaznn sola, yokluu ise saa hizalanma anlamna gelir. En az-en ok uzunluk: Say -nokta-say (rnein 40.40 gibi) yaz lr; birinci say azami, ikinci say number_formatO : Say basamaklarn gruplamak iin kullan lr. Kullanl biimi: number_format($degisken, binler_ayirac) ); 11chr(44)---virgl rnek : Tarih ve Saat Fonksiyonlar getdate0 : PHP' nin kurulu oldu u sunucudan tarih ve saat bilgisini al r ve vereceiniz bir isimdeki dizi-deikende kaydeder.
8-49

ondalikhane,

ondalikayirac

PHP

M M N S T W Y Y Z rnekler :

:Sfr koyarak ay says n verir 01-12 :Ksaltlm ay adn verir :Sfr koymadan ay say sn verir :Saniyeyi verir :Beliritilen ayn gn say sn verir :Haftann gn saysn verir.0.gn Pazard r. :4 haneli yl verir :Yln son iki rakamn verir :Yln gn saysn verir.

print date("H:i:s"); Bu komutta u saati verir 10:34:50 print date("d/m/Y"); Bu komut u tarihi verir 21/12/2001 print date("t/"."F/"."Y"); Bu komutta u tarihi verir 31/December/2001 Dosya Fonksiyonlar : include() : Bir dosyay baka bir dosya ierisinden a rmak iin kullanlr. Kullan l biimi : include(dosyaadi); rnek: include(ekle.php); Kullan c Tanml Fonksiyonlar Fonksiyon tan mlama : function fonksiyonunad (argmanl, argman2, argmanN) { fonksiyon iinde yap lacak ilemler
}

8-51

Web Uygulamalar

Fonksiyon ierisindcn geriye de er dndrmek iin return kornutu kullan l r. Kullaml biimi: return $degisken_adi; Bir fonksiyon tanmlanrken argmanlarma de er atanarak varsaylan deerler oluturulabilir. rnek : function hesapla ($boy,$en = 40)

Bir Fonksiyonun a rlrnasi : fonksiyon_adi(argmanl, argman2, argmanN) Bir fonksiyon hi argman kullanmasa bile a rlrken mutlaka parantez i aretleri yaz lmaldr. Varsaylan deerlere sahip bir fonksiyon a rlrken, varsaylan deeri olan argmanlar yazlmazsa da fonksiyon alr. Fakat bu durumda argilmann varsaylan deeri kullanlacaktr. rnek 1: Bir saynn karesini hesaplayan kullamc tanml fonksiyon function kare ($sayi) $sonuc = $sayi * $sayi; return $sonuc;

8-52

PHP

rnek 2: ki saydan byk olann dndren program. function hesapla ($sayi I ,$sayi2) f ($sayil > $sayi2)
{

return $sayil; if ($sayi2 > $sayil)


{

return $sayi2;
}

Global ve Static De ikenler Bir fonksiyon sadece ierisinde tan mlanan deikenlerle al abilir. Fonksiyon geriye dndrdkten sonra iinde tanmlanm deikenler ve bunlann deerleri yok olurlar. Fakat program n herhangi bir yerinde tan mlanm bir deikenin deerine bir fonksiyon ierisinden ula abilmek iin, deikenin o fonksiyon ierisinde, global tanmlanmas gerekir. Kullaml biimi: global $degisken_adi; Daha nceden de belirtildi i gibi fonksiyonun al mas bittikten sonra iinde tanml deikenler ve bunlarn deerleri yok olur. Bunun nne gemek iin fonksiyon ierisindeki de ikenleri static olarak tanmlamamz gerekir. rnek :

8-53

Web Uygulamalar

global $a; $a = 20; hesapla(); print ($a); // 20000 sonucu yaz hr function hesapla()
{

$a = $a * 1000; //$a global olmasayd buradan deerine ulaamazdk return $a;


}

?> Kullanl biimi: static $degisken_adi;

rnek :

<?

hesapla(); hesapla0; print ($a); // 20 sonucu yaz lr function hesapla()


{

static $a; $a = $a + 10; //$a static olmasayd deeri hep 10 geriye dnerdi retum $a;
8-54

PHP

?>

PHP ile Veritaban Etkileimleri PHP iin imdiye kadar anlat lan konular, bundan sonra anlat lacak ilere yardmc olacak komutlan iermektedir. Bundan nceki konular rendiiniz oranda bundan sonraki k sm renmeniz kolaylaacaktr. Bu ksmda anlatlacak konular HTML ksmnda anlatlan formlarla da ilgili olduundan ncelikle o ksm tekrar gzden geirmelisiniz. Internette ziyaret etti iniz birok sayfada form zerinden bilgi giri i yapldn grmsnzdr. rnein bir mail okuma sayfas ndan kullamc ad ve ifrenizi girdiiniz sayfa, bir arama motorunda bir konuyu ararken kullandnz sayfalar formlara rnek verilebilir. Bu tipte sayfalar genelde bir veritabamndan bilgi sorgularlar ve sorgulaman n sonucunda yeni sonular dndrrler. Bizde bu k smda bir veritabamna bir kartn nasl eklenece ini, sorgulama yaplacan, silineceini ve dzeltileceini greceiz. :Ksacas Progress Programla k smnda grdnz veritabanlar zerinde yap lan ilemleri burada PHP kullanarak gerekletireceiz.

PHP bir script dili oldu u iin Progress' te oldu u gibi srkle b rak mantyla alan nesneleri yoktur. Bu yzden HTML nesnelerini kullanacaz. HTML formlan hatrlarsanz orada metin kutusu, onay kutusu, buton gibi nesneler vard. Bu nesneler bizim form nesnelerimiz olacak ve biz bunlarn deerlerini PHP fonksiyonlanyla kontrol ederek gerekli i lemleri yapacaz. HTML Formlar iin iki yntemden bahsetmi tik (GET ve POST). lk olarak bu iki metodun farkl ln inceleyelim.
8-55

Web Uygulamalar

GET : Client(stemci) tarafndan gnderilen bilgiler browsenn adres satnnda grntlenir. rnek : <html> <FORM ACTION=" forrnyolla.php" METHOD="GET"> Adnz : <input type= "text" name="ad" ></br> Soyadnz : <input type= "text" name="soyad"></br> <input type="Submit" value="Gnder"> </FORM> </html> Bu rnegi getform.php ad yla kaydedin ve browsernzdan arn. ilgili alanlar doldurduktan sonra Gnder butonuna bas n ve adres sat nna bakn. Adres satnnda yazm olduunuz bilgileri karma k bir ekilde gryorsunuz. /formyolla.php?ad="Muhittin"&soyad--"Altnkaya"&.... Burada <Form> tag nn action parametresiyle a rm olduunuz php dosyasmn adn, input tpe ile tanmladnz nesnelerin adlarm , ekrandan girilen de erlerini grmektesiniz Action parametresiyle gnderdi iniz dosya adndan sonra "T' daha sonra ilk nesnenin "name" parametresiyle verilmi ad, deeri ve sonraki nesne adlarn ve deerlerini birle tirmek iin kullanlan "&" iaretlerini gryorsunuz. POST Client(stemci) tarafndan gnderilen bilgiler browsenn adres satnnda grntlenmeden yollanr. rnek : <html> <FORM ACTION=" formyolla.php" METHOD="POST>
8-56

PHP

Adnz : <input type= "text" name="ad" ></br> Soyadnz : <input type= "text" narne="soyad"></br> <input type="Submit" value="Gnder" </FORM> </html> Bu megi postform.php ad yla kaydedin ve browsennzdan arn.

Ilgili alanlar doldurduktan sonra Gnder butonuna bas n ve adres satnna bakn. Bu rnekte sadece a nlan sayfann adresini gryorsunuz. De ikenler ve deerleri grnmyor. Yukandaki rnekleri inceledi inizde FORM tagnn ACTION parametresinde a nlacak yeni PHP dosyas nn adnn yer aldna dikkat edin. Veritaban zerinde i lem yaparken PHP nin ODBC iin gerekli olan fonksiyonlarn kullanacaz. Bu fonksiyonlardan en genel olanlar rnekler ierisinde kullanlmtr. PHP ile yazacanz kodlarda bir veritaban ilemi yapyorsanz zorunlu olarak s rasyla unlar yapmal snz. - ODBC balantsm gerekle tirmelisiniz 2- Bir SQL (Structure Query Language) ifadeniz olmal 3- Bu SQL ifadesini altrmalsmz 4- SQL ileminin sonucuna gre i lemlerini tamamlamalsnz 5- Balanty kapatmalsnz Bu basit sralamay unutmamaya aln ve SQL ifadelerinizi yazarken dikkatli olun. imdi buradaki be admn her birinde kullanlan komutlan verelim.
8-57

Web Uygulamalar

1) odbc_connect : ODBC balantsn salar. Kullanl biimi : odbc_connect(Sdsn_ad ,"kullanc_ad ","ifre",SQL_CURUSE_ODBC) rnek : $conn_id = odbc_connect ($ogrdsn, "SYSPROGRESS", "", SQL_CUR_ USE_ODBC); 2) SQL ifadesi : SQL cmleleri Progress Programlama dersinde grdnz komutlarla ayn . Yalnz PHP de yazacamz SQL ifadelerini ayr karakter de ikenlere atayp daha sonradan birletirebiliyorsunuz. rnek : $tablo_adi = Pub.Ozluk; $sql = "Select * from ".$tablo_adi; //$sql deikeni Select * from Pub.Ozluk de erini alyor. nemli : PHP'de SQL ifadeleri yazarken FROM szc nden sonra tablo ad belirtilirken "Pub." kullanlmaktadr. 3) odbe_do() : Bir balant iin verilen SQL ifadesini al trn Kullaml biimi : odbc_do(baglant ,sql_ifadesi) rnek : Sresult=odbcdo(Sconn_id, $sql);
8-58

PIIP

Not : odbc_do yerine odbc_exec kullanilabilir


4) odbc_fetch_row() : odbc_do ile alt r lan SQL in sonular n her

defas nda 1 kayt alarak grntler. rnek : odbc_fetchrow ($result); odbc_result ( ) : SQL i leminin sonucunda dnen alanlardan hagisinin seilecei belirlenir. rnek : odbc_result ($result,l) ;//ozluk_no odbc_result ($result,2) ;//ad 5) odbc_free_result() : SQL i leminin altr lmasndan sonra hafzadaki sonular siler. rnek : odbc_free_result(Sresult); odbc_closeo: Balanty keser. rnek : odbcclose($connid);

rnek Uygulama

Bu rnek uygulamada veritaban olarak Progress Programlama dersinde kullanm olduunuz "grenci" veritaban kullamlacaktr. lemlere balamadan nce ODBC, Apache, PHP ayarlann yapm olmalsnz.
8-59

Web Uygulamalar

lk olarak kullanclann yapmak istedikleri i lemi seebilmeleri iin bir men sayfas oluturup index.html ad yla kaydetmelisiniz. index.html

<html> <head> <title> PHP ile Veritaban Uygulamalan </title> </head> <body> <a href="ekle.html"> Kay t Ekleme </a> <br> <a href="sil.html"> Kayt Silme </a> <br> <a href="ara.html"> Kay t Arama </a> <br> <a href="duzelt.htmr> Kay t Dzeltme <la> <br> </body> </html> Kayt eklerken kullanlacak ekran iin ekle.html olu turuyoruz. ekle.html

<HTML> <HEAD> <TITLE>Kapt Ekleme Formu</TITLE> </HEAD> <BODY BGCOLOR="14FFFFFF" TEXT="400000" LENK="#000OFF" VLINK="#800080"> <form action="ekle_onay.php" method="get"> renci No : <input type="text" name="xogr_no"><br> Ad : <input type="text" name="xadi"><br> Soyad : <input type="text" name="xsoyadi"><br> Snf : <select name="xsinif"> <option value="1" selected> 1.S nf</option>
8-60

PHP

<option value="2"> 2.S nf</option> <option value="3"> 3.S nf</option> <option value="4"> 4.S nKoption> </select><br> Cinsiyeti : Erkek<input type="radio" name="xcinsiyeti" value="E" checked> Kz<input type="radio" name="xcinsiyeti" value="K"><br> Doum Yeri : <input type="text" name="xilce_kodu"><br> Doum Tarihi : <input type="text" name="xd_tarihi" value="0 1 /01 /1 900"><br> <input type="checkbox" name="xharc"> Har Allyor<br> Adresi: <input type="text" name="xadres1"><br> Adres2: <input type="text" name="xadres2"><br> Adres3: <input type="text" name="xadres3"><br> <input type="Submit" Value="Gnder" name="btonay"> <input type="Reset" Value="Temizle"> </form> </BODY> </HTML> Daha sonra yaptmz kaydn eklenebilmesi iin ekle_onay.php dosyasn oluturuyoruz.

ekle_onay.php <script language = "PHP"> error_reporting(0); $dsn = "ogrphp"; if ($xharc =---- "Off')
{

$xdurum = False;
}

8-61

Web Uygulamalar

else $xdurum = True;


}

pub.ozluk $sql = INTO "INSERT (ogr_no,adi,soyadi,sinifi,cinsiyeti,fice_kodu,harc_kredi,d_tarihi,adres) VALUES (1$xogr_no', 1$xadi',Usoyadi',$xsinifi,'Sxcinsiyeti',Sxilce_kodu',$xdurum, 'Sxd_tarihit,'$xadres1 ;$xadres2;$xadres3')"; if ($conn_id=odbc_connect($dsn,"sysprogress","",SQL_CUR_USE_ODBC ))
{

if ($result = odbc_exec($conn_id, $sql))


{

print ("ilem Tamamland");


}

else print ("Bir hata sonucu kayt gerekle tirilemedi...");


}

odbc_freeresult($result); print ("<br><a hreVekle.htm1 1>Yeni Kayt Ekle</a>"); print ("<br><a href='index.html'>Ana Sayfaya Dn</a>");
}

else
{

print ("Balant kurulamad...");


}

</script>
8-62

PHP

Ekleme formum tamamlad ktan sonra kaydedin ve silme i lemi iin aa daki sil.html dosyas n olu turun. sil.html <HTML> <HEAD> <TITLE>Kayt Silme For nu</TITLE> </HEAD> <BODY BGCOLOR="#FFEFFF" TEXT="#000000" UNK="4000OFF" VLINK="#800080"> <form action="sil_onay.php" method="get"> Silinecek renci No : <input type="text" name="xo _no"><br> <input type="Submit" Value="Gnder" name="btonay"> <input type="Reset" Value="Temizle"> </form> </BODY> </HTML> Sil formu bir renci numaras nn girildii sayfa olacak.Bundan sonra oluturulacak sil_onay.php ise kayd n silinmesini salayacak. sil_onay.php

<script language = "PHP"> error_reporting(0); $dsn = "ogrphp";

$sql = "DELETE FROM pub.ozluk WHERE ozluk.ogr_no = '$xogr_no"';

8-63

Web Uygulamalar

if ($conn_id=odbc_connect(Sdsn,"sysprogress","",SQL_CUR_USE_ODBC )) if ($result = odbc_exec($conn_id, $sql))


{

print ("ilem Tamamland "); else


{

print ("Bir hata sonucu silme gerekle tirilemedi...");


}

odbc_free_result(Sresult); print ("<br><a href='sil.html'>Yeni Kayt Sil</a>"); print ("<br><a href='index.html'>Ana Sayfaya Dn</a>");
}

etse
{

print ("Balant kurulamad ...");

</script> Sil formunu tamamladktan sonra arama i lemlerini gerekle tirmek iin ara.html dosyas n oluturuyoruz. ara.html <HTML> <HEAD> <TITLE>Kayt Arama Formu</TITLE> </HEAD>
8-64

<BODY BGCOLOR="#FEFFFF" TEXT="#000000" LINK="#000OFF" VLINK="14800080"> <form action="ara_onay.php" method="get"> Aranacak renci No : <input type="text" name="xogr_no"><br> <input type="Submit" Value="Gnder" name="btonay"> <input type="Reset" Value="Temizle"> </form> </BODY> </HTML> Bu sayfay sil.html dosyas n deitirerek olu turabilirsiniz. Arama ilemlerinin sonucunu grntlemek iin ara_onay.php sayfas n oluturuyoruz. ara_onay.php

<script language = "PHP"> error_reporting(0); $dsn = "ogrphp";

$sql = "SELECT * FROM pub.ozluk WHERE ozluk.ogrno LIKE 'Sxogr_no%'"; if ($conn_id=odbc_connect($dsn,"sysprogress","",SQL_CUR_USE_ODBC ))


{

if ($result = odbc_do($conn_id, $sql)) { print ("<table border=2'>\n"); print ("<tr><th> renci No</th>\n");
8-65

Web Uygulamalar

print ("<th>Ad</th>\n"); print ("<th>Soyad </th>\n"); print ("<th>S nf</th></tr>\n"); while (odbc_fetchrow($result)) { print ("<tr><td>\n"); print (odbc_result ($result, 1)); print ("</td><td>\n"); print (odbc_result ($result, 2)); print ("</td><td>\n"); print (odbc_result ($result, 3)); print ("</td><td>\n"); print (odbc_result ($result, 4)); print ("</td></tr>\n");
}

print ("</table>\n"); print ("ilem Tamamland");


}

else print ("Bir hata sonucu arama gerekle tirilemedi...");


}

odbc freeresult($result); print ("<br><a href---Tara.html5Yeni Kayt Ara</a>"); print ("<br><a href=tindex.htmli>An Sayfaya Dn</a>");
}

else
{

print ("Balant kurulamad...");

8-66

PHP

</script> Son ilem olarakta dzeltme i lemleri iin gerekecek dosyalan oluturuyoruz. Dzeltme ileminde ilk nce bir renci numaras n gireceimiz arama formunu yapacaz. duzelt.html <HTML> <HEAD> <TITLE>Kayt Dzeltme Forrnu</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#000OFF" VLINK="#800080"> <form action="duzelt_ara.php" method="get"> Dzeltilecek renci No : <input type="text" name="xogr_no"><br> <input type="Submit" Value="Gnder" name="btonay"> <input type="Reset" Value="Temizle"> </form> </BODY> </HTML> imdi bu formdan girilen renci numaras ile balayan kaytlar grntleyecek ikinci dosyamz oluturuyoruz. duzelt_ara.php

<script language = "PHP"> error_reporting(0); $dsn = "ogphp";


8-67

Web Uygulamalar

$sql = "SELECT * FROM pub.ozluk WHERE ozluk.ogr_no L1KE '$xogr_no%"'; if ($conn_idodbc_connect(Sdsn,"sysprogess","",SQLCURUSE_ODBC ))


{

if ($result = odbc_do(Sconn_id, $sql)) print ("<table border='2 1>\n"); print ("<tr><th> renci No<th>\n"); print ("<th>Ad</th>\n"); print ("<th>Soyad</th>\n"); print ("<th>S nf</th></tr>\n"); while (odbe_fetchrow($result)) { print ("<tr><td>\n"); print ("<a href'duzelt_goster.php?xo&r_no=".odbc_result ($result, 1)."'>".odbc_result ($result, 1)."<a>"); print ("</td><td>\n"); print (odbc_result ($result, 2)); print ("</td><td>\n"); print (odbc_result ($result, 3)); print ("</td><td>\n"); print (odbc_result ($result, 4)); print ("</td></tr>\n");
}

print ("</table>\n"); print ("ilem Tamamland");


}

else
{

print ($sql);
8-68

PIIP

print ("Bir hata sonucu arama gerekle tirilemedi...");

odbc_free_result($result); print ("<br><a href='ara.html'>Yeni Kay t Ara</a>"); print ("<br><a href='index.html'>Ana Sayfaya Dn</a>");
}

else print ("Balant kurulamad ...");


}

</script> Arama sonularndan seilen bir kaydn bilgilerinin deitirilecei duzeltgoster.php dosyas n oluturacaz. duzeltgoster.php <script language = "PHP"> print ("<html>\n"); print ("<title>Kayt Dzeltme</title>\n"); print ("<meta http-equiv=\"content-type\" charset=IS0-8859-9\">\n"); print ("<meta http-equiv=\"Content-Type\" charset=windows-1254\">\n"); print("<body>\n");

content=next/html; content=next/html;

$dsn = "ogrphp"; $sql = "SELECT * FROM PUB.ozl k where ozluk.ogr_no = 1 $xogr_nom; if ($conn_id=odbc_connect(Sdsn,"sysprogress","s",SQL_CUR_USE_ODB C))
8-69

Web Uygulamalar

if(Sresult=odbc_do(Sconn_id, $sql))

print ("<form action=iduzelt_onay.php' method='get'>"); print ("renci No :".odbc_result($result, 1)."<br>"); print ("<input type=ehiddene value='$xogr_no' name='xogr_no'>"); print ("Ad name='xadi' <input type='text' value=1".odbc_result($result, 2)."'><br>"); print ("Soyad name='xsoyadi' : <input type='text' value=" 1 .odbcresult($result, 3)."'><br>");

$xsinif = odbc_result(Sresult,4); $xsinifl = "<option value='1'> 1.S mf</option>"; $xsinif2 = "<option value='2'> 2.S nf</option>"; $xsinif3 = "<option value='3'> 3.S nf</option>"; $xsinif4 = "<option value='4'> 4.S nf</option>";

switch ($xsinif)
{

case $xsinif =-- '1' ; $xsinifl = "<option value='1' selected> 1 .S nf</option>"; break; case $xsinif == '2' ; $xsinif2 = "<option value='2' selected> 2.S nf</option>"; break; case $xsinif == '3' ; $xsinif3 = "<option value='3' selected> 3.S nf</option>";
8-70

PHP

break; case $xsinif '4' ; $xsinif4 = "<option value='4' selected> 4.S nf</option>"; break;
)

print ("Snf :<select name='xsinifi'><br>"); print ($xsinifl); print ($xsinif2); print ($xsinif3); print ($xsinif4); print ("</select><br>");

$xcinsiyeti = odbc_result($result,9); if ($xcinsiyeti == "E")


{

print ("Cinsiyeti : Erkek<input type='radio' name='xcinsiyeti' value='E' checked>"); print ("Kz<input type='radio' name='xcinsiyeti' value='K'><br>");
}

else
{

if ($xcinsiyeti -- "K")
{

print ("Cinsiyeti : Erkek<input type='radio' name='xcinsiyeti' value='E'>"); print ("Kz<input type='radio' name='xcinsiyeti' value='K' checked><br>");

8-71

Web Uygulamalar

$xd_tarihi = odbc_result($result,5); //dtarihi $xd_tarihi = date( 1d/m/Y',strtotime($xd_tarihi)); $xilce_kodu = odbc_result($result,6); //ililce $xharc = odbc_result($result,7); //harc $xadres = odbc_result($result,8); //adres // Adres diziye dn yor $xadr = explode(";",$xadres);

print ("Doum Tarihi : <input type='text' name= 1xd_tarihi' value='$xd_tarihi'><br>"); print ("Doum Yeri : <input type='text' name='xilce_kodu' value='$xilcekodu'><br>"); if ($xharc == 1)
{

print ("<input typeecheekbox' name=5(harc' checked> Har Allyor<br>");


}

else
{

print ("<input type='checkbox' name='xharc' > Har Allyor<br>");

print ("Adresi: <input type='text' name='xadrl' value='$xadr[0]'><br>"); print ("Adres2: name='xadr2' <input type='text' value='$xadr[ 1 ]'><br>"); print ("Adres3: <input type='text' name='xadr3' value='$xadr[2]'><br>"); print ("<input type='Submit' Value='Gnder' name=btonay'>"); print ("<input type='Reset' Value='Temizle'>"); print ("</form>");
8-72

PHP

odbc free_result($result); else echo "Komut al tnlamach: '$sql' <br>";


}

odbc_close(Sconn_id);
}

else { echo"DSNebalanlamad";
}

</script> Dzeltilmek istenen kay t grntlenip dzenlendikten sonra gerekli deiikliklerin kaydedilebilmesi iin dzelt_onay.php dosyas n oluturuyoruz. duzelt_onay.php

<script language = "PHP"> error_reporting(0); $dsn = "ogrphp"; if ($xharc == "Off')


{

$xdurum = False;
}

else
{

$xdurum = True;
8-73

Web Uygulamalar

$sql = "UPDATE pub.ozluk SET ogr_no = '$xogr_no' ,adi = '$xadi',soyadi = '$xsoyadi', sinif = $xsinifi,cinsiyeti = 'Sxcinsiyeti',i1ce_kodu '$xilce kodu',harc kredi = '$xdurum', d_tarihi = '$xd_tarihi' ,adres = '$xadr1;$xadr2;$xadr3' WHERE ogr_no = '$xogr_no'";

if ($conn_id=odbc_connect(Sdsn,"sysprogress","",SQL_CUR_USE_ODBC
)) {

if ($result = odbc_exec(Sconn_id, $sql))


{

print ("ilem Tamamland ");


}

else
{

print ("Bir hata sonucu kayt gerekle tirilemedi...");

odbc_free_result($result); print ("<br><a href='duzelt.html'>Kay t Dzelt</a>"); print ("<br><a href'index.html'>Ana Sayfaya Dn</a>");
}

else print ("Balant kurulamad,..");


}

</script>
8-74

PHP

Yukarda verilen rnek program bir ver taban zerinde yap lmas gereken i lemlerin nas l yap lacan anlatmaktad r. Ayn rnei daha basite indirgemek iin fonksiyonlardan yararlanabilirsiniz. imdi yukarda anlat lan ilemlerin fonksiyonlar yard myla nas l yap laca anlatlacaktr. lk olarak istemci tarafndan arlan adres her zaman tek dosyay referans gstermelidir. Bu dosya ierisinde istemci taraf ndan gelen istein ne oldu unun belirlenebilmesi iin bir de iken kullamlacaktr. Bu deikenin deeri dier php ve html dosyalardan "hidden" de ikenle yollanacaktr. Hidden deikenler aadaki gibi tammlanr. <input type= "hidden" name= "degiskenadi" value= "de er"> Bu hidden deiken de eri bir switch yap s icersinide kontrol edilerek gerekli dosya include ile a r lacaktr.

rnek Uygulama 2 : giris.php

if (empty($xislem))
{

$xislem = "login";
}

echo $xislem; switch ($xislem) case $xislem = "login" ;


8-75

Web Uygulamalar

include ("index.html"); break; case $xislem = "ekle" ; include ("ekle.html"); break; case $xislem = "ekle_onay" ; include ("ekle_onay.php"); break; case $xislem = "sil" ; include ("sil.html"); break; case $xislem = "sil_onay" ; include ("sil_onay.php"); break; case $xislem = "ara" ; include ("ara.html"); break; case $xislem = "ara_onay" ; include ("ara_onay.php"); break; case $xislem = "duzelt" ; include ("duzelt.html"); break; case $xislem = "duzelt_ara" ; include ("duzelt_ara.php"); break; case $xislem = "duzelt_goster" ; include ("duzelt_goster.php"); break; case $xislem = "duzelt_onay" ; include ("duzelt_onay.php"); break;
}

?>
8-76

PHP

index.html <html> <head> <title> PHP ile Veritaban Uygulamalar </title> </head> <body> <a href="giris.php?xislem=ekle"> Kay t Ekleme </a> <br> <a href="giris.php?xislem=sir> Kayt Silme </a> <br> <a href="giris.php?xislem=ara"> Kay t Arama <la> <br> <a href="giris.php?xislem=duzelt"> Kay t Dzeltme </a> <br> </body> </html>

ekle.html

<HTML> <HEAD> <TITLE>Kart Ekleme Formu</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="1#0000FF" VLINK="#800080"> <form action="giris.php" method="get"> renci No : <input type="text" name="xogr_no"><br> Ad : <input type="text" name="xadi"><br> Soyad : <input type="text" name="xsoyadi"><br> Snf : <select name="xsinifi"> <option value="1" selected> 1.S mf</option> <option value="2"> 2.S nf</option> <option value="3"> 3.S nf</option> <option value="4"> 4.Smf</option>
8-77

Web Uygulamalar

</select><br> Cinsiyeti : Erkek<input type="radio" name="xcinsiyeti" value="E" checked> Kiz<input type="radio" name="xcinsiyeti" value="K"><br> Do um Yeri : <input type="text" name="xilce_kodu"><br> Doum Tarihi name="xd_tarihi" : <input type="text" value="0 1 /01 / 1 900"><br> <input type="checkbox" name="xharc"> Har Allyor<br> Adres 1 : <input type="text" name="xadres1"><br> Adres2: <input type="text" name="xadres2"><br> Adres3: <input type="text" name="xadres3"><br> <input type="Submit" Value="Gnder" name="btonay"> <input type="Reset" Value="Temizle"> <input type="hidden" value="ekle_onay" name="xislem"> </forrn> </BODY> </HTML> ekle_onay.html

<script language = "PHP"> error_reporting(0); $dsn = " hp";

if ($xharc = "Off')
{

$xdurum = False;
}

else
{

$xdurum = True;
}

8-78

PlIP

$sql "INSERT pub.ozluk INTO (ogr_no,adi,soyadi,sinifi,cinsiyeti,i1ce_kodu,harc_kredi,d_tarihi,adres) VALUES (Sxogr_nol,'SxadiP,'Sxsoyadi',$xsinif ,'$xcinsiyeti', 1$xilce_kodu',$xdurum, '$xdtarihi',Uadres1;$xadres2;Sxadres3 1)"; if ($conn_idodbc_connect($dsn,"sysprogress","",SQL_CUR_USE_ODBC ))
{

if ($result = odbc_exec($conn_id, $sql)) print ("Ilem Tamamland"); else


{

print ("Bir hata sonucu kay t gerekletirilemedi...");


}

odbc_free_result($result); print ("<br><a hrefigiris.php?xislemekle'>Yeni Kay t Ekle</a>"); print ("<br><a hreUgiris.php'>Ana Sayfaya Dn</a>");
}

else
{

print ("Balant kurulamad ...");


}

</script> sil.html

<HTML>
8-79

Web Uygulamalar

<HEAD> <TITLE>Kayt Silme Formu</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#000OFF" VLINK="#800080"> <form action="giris.php" method="get"> Silinecek renci No : <input type="text" name="xogr_no"><br> <input type="Submit" Value="Gnder" name="btonay"> <input type="Reset" Value="Temizle"> <input type="hidden" value="sil onay" name="xislem"> </form> </BODY> </HTML>

sil_onay.php

<script language = "PHP"> error_reporting(0); $dsn = " hp";

$sql = "DELETE FROM pub.ozluk WHERE ozluk.ogr_no

1 $xogr_nom;

if (Sconnid=odbe_connect(Sdsn,"sysprogress","", S QL_CURU S E_ODB C ))


{

if ($result = odbc_exec($com_id, $sql))


{

print ("Ilem Tamamland"); } else


8-80

PHP

{ print ("Bir hata sonucu silme gerekle tirilemedi...");


}

odbc_freeresult($result); print ("<br><a href='giris.php?xislem=sil'>Yeni Kay t Sil</a>"); print ("<br><a href='giris.php'>Ana Sayfaya Dn</a>");

elle print ("Balant kurulamad ...");


}

</script> ara.html

<HTML> <HEAD> <TITLE>Kart Arama Formu</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#000OFF" VLINK="#800080"> <form action="giris.php" method="get"> Aranacak renci No : <input type="text" name="xogr_no"><br> <input type="Submit" Value="Gnder" name="btonay"> <input type="Reset" Value="Temizle"> <input type="hidden" value="ara onay" name="xislem"> <Iform> </BODY> </HTML> ara_onay.php
8-81

Web Uygulamalar

<script language = "PHP"> error_reporting(0); $dsn = " hp";

$sql = "SELECT * FROM pub.ozluk WHERE ozluk.ogr_no LIKE 'Sxogr_no%'"; if (Sconn_id=odbc_connect($dsn,"sysprogress",",SQL_CUR_USE_ODBC ))


{

if ($result = odbc_do($connid, $sql)) print ("<table border='2 1>\n"); print ("<tr><th> renci No</th>\n"); print ("<th>Ad</th>\n"); print ("<th>Soyad</th>\n"); print ("<th>S nfi</th></tr>\n"); while (odbc_fetchrow($result)) print ("<tr><td>\n"); print (odbc_result ($result, 1)); print ("</td><td>\n"); print (odbc_result ($result, 2)); print ("</td><td>\n"); print (odbc_result ($result, 3)); print ("</td><td>\n"); print (odbc_result ($result, 4)); print ("</td></tr>\n");
}

8-82

PHP

print ("</table>\n");
}

else t print ("Bir hata sonucu arama gerekle tirilemedi...");


}

odbc_freeresult($res ul t) ; print ("<br><a href=giris.php?xislem=ara>Yeni Kay t Ara</a>"); print ("<br><a href=giris.php>Ana Sayfaya Dn</a>");
}

else
{

print ("Balant kurulamad ...");


}

</script> duzelt.html

<HTML> <HEAD> <TITLE>Kayt Dzeltme Formu</TITLE> </HEAD> <BODY BGCOLOR="14FEFFFF" TEXT="#000000" LINK="#000OFF" VLINK="#800080"> <form action="giris.php" method="get"> Dzeltilecek renci No : <input type="text" name="xogr_no"><br> <input type="Submit" Value="Gnder" name="btonay"> <input type="Reset" Value="Temizle"> <input type="hidden" value="duzelt_ara" name="xislem"> </form>
8-83

Web Uygulamalar

</BODY> </HTML> duzelt_ara.php

<script language = "PHP"> errorreporting(0); $dsn = "ogrphp";

$sql = "SELECT * FROM pub.ozluk WHERE ozluk.ogr_no LIKE 'Sxogrno/0'"; if ($conn_id=odbc_connect(Sdsn,"sysprogress","",SQL_CUR_USE_ODBC )) if ($result = odbc_do($conn_id, $sql)) print ("<table border='2'>\n"); print ("<tr><th> renci No</th>\n"); print ("<th>Ad</th>\n"); print ("<th>Soyad</th>\n"); print ("<th>Snufl</th></tr>\n"); while (odbc_fetchrow(kesult)) { print ("<tr><td>\n"); print hrefigiris.php?xislem=duzelt_goster&xogr_no=".odbc_result 1)."'>".odbc_result ($result, 1)."</a>"); print ("</td><td>\n"); print (odbc result ($result, 2));
8-84

($result,

PHP

print ("</td><td>\n"); print (odbc_result ($result, 3)); print ("</td><td>\n"); print (odbc_result ($result, 4)); print ("</td></tr>\n");
}

print ("</table>\n"); print ("Ilem Tamamland");


}

else
{

print ($sql); print ("Bir hata sonucu arama gerekle tirilemedi...");


}

odbc_freeresult($result); print ("<br><a href='ara.htm1 1>Yeni Kayt Ara</a>"); print ("<br><a href='index.htmf>Ana Sayfaya Dn<a>");
}

else
{

print ("Balant kurulamad ...");

</script> duzeltgoster.php

<script language = "PHP"> print ("<html>\n"); print ("<title>Kayt Dzeltme</title>\n");


8-85

Web Uygulamalar

print ("<meta http-equiv=\"content-type\" charset=IS0-8859-9\">\n"); http-equiv=\"Content-Type\" print ("<meta charset=windows-1254 ">\n"); print("<body>\n");

content=\"text/html; content=rtext/html;

$dsn = "ogrphp"; $sql = "SELECT * FROM PUB.ozluk where ozluk.ogr_no '$xogr_no"'; if ($conn_id=odbc_connect($dsn,"sysprogress","s",SQL_CUR_USE_ODB C))

if(Sresult=odbc do(Sconn_id, $sql))

print ("<form action='duzelt_onay.php' method='get'>"); print ("renci No :".odbc_result($result, 1)."<br>"); print ("<input type='hidden' value='$xogr_no' name=ixogr_no'>"); print ("Ad : <input type='text' name='xadi' value=' ".odbc_result($result, 2). "'><br>"); print ("Soyad : <input type='text' name='xsoyadi' value=' ".odbc_result($result, 3)."'><br>");

$xsinif = odbc_result($result,4); $xsinifl = "<option value=1 1'> 1.Snf</option>"; $xsinif2 = "<option value='2'> 2.S nf</option>"; $xsinif3 = "<option value='3'> 3.S nf</option>"; $xsinif4 = "<option value='4'> 4.S nf</option>";

switch ($xsinif)
8-86

PliP

case $xsinif '1' ; $xsinifl = "<option value='1' selected> 1.S n f</option>"; break; case $xsinif == '2' ; $xsinif2 = "<option value='2' selected> 2.S nf<loption>"; break; case $xsinif == '3' ; $xsinif3 = "<option value'3' selected> 3.S nf</option>"; break; case $xsinif == '4' ; $xsinif4 = "<option value='4' selected> 4.S nf</option>"; break;
}

print ("S nf :<select name'xsinift><br>"); print ($xsinifl); print ($xsinif2); print ($xsinif3); print ($xsinif4); print ("</select><br>");

$xcinsiyeti = odbcresult($result,9); if ($xcinsiyeti == "E")


{

print ("Cinsiyeti : Erkek<input type='radio' name='xcinsiyeti' value='E' checked>"); print ("Kz<input type='radio' name='xcinsiyeti' value='K'><br>");
}

8-87

W eb Uygulamalar

else if ($xcinsiyeti == "K") print ("Cinsiyeti : Erkek<input type='radio' name='xcinsiyeti' value='E'>"); print ("Kiz<input type='radio' name='xcinsiyeti' value='K' checked><br>");
}

$xd_tarihi = odbc_result($result,5); //dtarihi $xd_tarihi = date(ed/m/Y 1,strtotime($xd_tarihi)); $xilce_kodu = odbc_result($result,6); //ililce $xharc = odbc_result($result,7); //harc $xadres = odbc result($result,8); //adres // Adres diziye dnyor $xadr = explode(";",$xadres);

print ("Do um Tarihi : <input name='xd_tarihi' value='$xd_tarihi'><br>"); print ("Do um Yeri : <input type='text' name='xilce_kodu' value=Sxilcekodu'><br>"); if ($xharc == 1) print ("<input type='checkbox' name='xharc' checked> Har Alyor<br>");
}

else print ("<input type='checkbox' name='xharc' > Har Ahyor<bi->");


8-88

PHP

name='xadrl' print <input type='text' ("Adres 1 : value='$xadr[0]'><br>"); name='xadr2' print ("Adres2: <input type=itext' value='$xadr[ 1 ]'><br>"); print type='text' name='xadr3' ("Adres3: <input value='$xadr[2]'><br>"); print ("<input type='Submit' Value='Gnder' name='btonay'>"); print ("<input type='Reset' Value='Temizle'>"); print ("<input type=hidden value=duzelt_onay name=xislem>"); print ("</form>"); odbe_free_result(Sresult);
}

else { echo "Komut al tnlamad : '$sql' <br>";


}

odbc_close($conn_id);
}

else
{

echo"DSNebaglan lamad";

</script> duzeltonay.php

<script language = "PHP"> error_reporting(0);


8-89

Web Uygulamalar

$dsn = "ogrphp"; if ($xharc == "Off')


{

$xdumn = False;
}

else { $xdurum = True;


}

$sql = "UPDATE pub.ozluk SET ogr_no = '$xogr_no' ,adi = '$xadi',soyadi = '$xsoyadi', = '$xcinsiyeti',ilce_kodu sinif = $xsini fi,cinsiyeti '$xilce_kodu',hare_kredi = Sxdurume, d_tarihi = '$xd_tarihi' ,adres = '$xadr1;$xadr2;$xadr3' WHERE ogr_no = '$xogr_no'";

if ($conn_id=odbc_connect($dsn,"sysprogress","",SQL_CUR_USE_ODBC
{

if ($result = odbe_exec($conn_id, $sql))


{

print ("ilem Tamamland"); else


{

print ("Bir hata sonucu kayt gerekle tirilemedi...");


}

odbc_freeresult($result); print ("<br><a href='giris.php?xislem=duzelt'>Kart Dzelt</a>");


8-90

PHP

print ("<br><a href=giris.php'>Ana Sayfaya Dn</a,>");

else
{

print ("Balant ktrulamadt...");


}

</script> PHP Kaynaklar http://www.php.net http://www.techdevelopers.com http://www.lilali.net http://www.sqlcourse.com http://wwvv.apache.org http://www.linux.org http://tr.php.net http://php.org.tr http://www.progress.com.tr

8-91

You might also like