ASP (ACTIVE SERVER PAGES) Bilinmesi gerekenler: HTML Asp de kodlama Javascript veya VBscript ile yapılır. Server, script dili belirtilmezse varsayılan olarak Vbscript’e göre yorumlar. Asp sayfasının ilk satırında script dili belirtilir. <%@ language="VBScript"%> <%@ language="javascript"%> Yüklenmesi gereken programlar: IIS (Internet Information Server): IIS asp kodlarının yorumlanmasını sağlar. 1. Program ekle/kaldır 2. Windows bileşeni yükle kaldır 3. IIS 4. Windows cd’sinden. Sayfaların tasarlanması ve bazı işlemlerde kolaylıklar sunması için görsel bir web tasarım programı, dreamweaver veya Frontpage vb. ASP Syntax Asp kodları html sayfası içine yazılır. 1. Asp kodları <% …………………… %> arasına yazılır. <html> <body> <% response.write("MERHABA!") %> </body> </html> <html> <body> <%="MERHABA!"%> </body> </html> 2. Açıklama Eklenmesi Açıklamalar ‘(tek tırnak) işaretinden sonra yazılabilir. Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY PHP (HYPERTEXT PREPROCESSOR) Bilinmesi gerekenler: HTML Php’nin kod yapısı C gibidir. Yüklenmesi gereken programlar: 1. Apache Server(http://httpd.apache.org/download.cgi) 2. PHP(http://www.php.net/downloads.php) 3. MySQL veri tabanı (http://www.mysql.com/downloads/index.html) Ya da bunların tamamının yüklenmesini sağlayan; Easyphp, appserv gibi paket yazılımlar. (http://www.easyphp.org)(http://www.appservnetwork.com) Sayfaların tasarlanması yine dreamweaver veya Frontpage gibi yazılımlarla yapılabilir. NOT: Sunucular (Apache, IIS) 80 numaralı portu kullandıkları için aynı anda çalışmazlar. Php sayfalarını denerken IIS’in durdurulması gerekir. Bunun için; BaşlatÇalıştır net stop w3svc Komutu kullanılır. IIS tekrar başlatmak için ise; BaşlatÇalıştır net start w3svc Komutu kullanılır. PHP Syntax Php kodları html sayfası içine yazılır. 1. Php kodları <?php ……………. ?> Arasına yazılır. <html> <body> <?php echo "Hello World"; ?> </body> </html> 2. Açıklama Eklenmesi <html> <body> <?php //Açıklama satırı /* Birden çok Satırlı açıklama */ ?> </body> </html> 1 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY Php Değişkenler Değişkenler değerleri, rakamları, stringleri veya fonksiyon sonuçlarını saklamak için kullanılır. Asp Değişkenler Php’de bütün değişkenler $ işareti ile başlar. Değişkenler verileri saklamak için kullanılır. <% dim ad, numara ad="Ali Osman" Numara="027411033" response.write("Benim adım: " & ad) %> $okul_ad = "Akören MYO"; <?php $yazi = "Hello World!"; $sayi = 16; ?> İsimlendirme kuralları: 1. Değişken isimleri harfler, rakamlar yada _ karakterinden oluşabilir. 2. değişken isimleri $ işareti ile başlamalıdır. 3. değişken isimlerinde ve komutlarda büyük küçük harf ayrımı vardır. Değişkenlerin veri tipi belirtilmek zorunda değildir. Atanan veriye göre otomatik olarak veri tipi belirlenir. Değişkenlerin veri tipi belirtilmek zorunda değildir. Atanan veriye göre otomatik olarak veri tipi belirlenir. Değişkenlerin Ömrü: Bir asp sayfasında tanımlanan değişkenler sayfa içindeki alt programlar tarafından da kullanılabilir. Alt program içinde tanımlanan değişkenler sadece alt program içinde kullanılabilir. Asp sayfasındaki değişkenler sadece o sayfada kullanılabilir. Oturum değişkenleri(Session Variables) Siteye giren her kullanıcı için oturum değişkeni oluşturulur ve o ziyaretçinin site içindeki tüm sayfalarından erişilebilir. Uygulama Değişkenleri(Application Variables) Bütün kullanıcılarda geçerli olan değişkenlerdir. Varsayılan olarak yayınlanan dizin ve sayfaların çağrılması: Varsayılan olarak yayınlanan dizin ve sayfaların çağrılması: Varsayılan olarak yayınlanan dizin: C:\Inetpub\wwwroot Easyphp kullanıldığında; Varsayılan olarak yayınlanan dizin: C:\Program Files\Easyphp\www IIS çalışırken: İnternet explorer’dan adres kısmına http://localhost http://127.0.0.1 Apache web server aktifken İnternet explorer’dan adres kısmına http://localhost http://127.0.0.1 2 http://bilgisayar_adı yazıldığında resimde gösterilen localstart.asp sayfası çalıştırılır. Site tasarlanırken C:\Inetpub\wwwroot İçerisine yeni klasör oluşturulur ve onun içine asp sayfalar saklanır. Sayfa çağrılırken http://localhost/klasör_adı/sayfa_adı.asp ile çağrılır. Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY http://bilgisayar_adı yazıldığında resimde gösterilen index.php sayfası çalıştırılır. Site tasarlanırken C:\Program Files\Easyphp\www İçerisine yeni klasör oluşturulur ve onun içine asp sayfalar saklanır. Sayfa çağrılırken http://localhost/klasör_adı/sayfa_adı.asp ile çağrılır. Örnek: Örnek: <% for i=1 to 6 %> <font size="<%= i %>">Akören MYO</font><br> <% next %> <?php for ($i=1; $i<=5; $i++) { echo "<font size=".$i.">Merhaba!<br /></font>"; } ?> FORMLAR Form Nesneleri 3 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY Nesne Özellikler penceresi Görünümü Adı Özellikleri Örnek kullanım/Açıklama Form name Action Form Method Textfield adı Char width Max chars Type Textfield Init val Wrap CheckBox Checked Value Initial State CheckBox RadioButton Checked Value Initial State Radio Button List/menu Type Height Allow Multiple Initialy_ Selected List/menu Form adı aynı kalabilir. Buraya form içerisindeki Submit form özellikli butona tıklandığında çalışacak asp sayfasının adını yazınız. Burada web formuna yazılan bilgilerin servera aktarılma şekli seçilir. Default değer get’dir. Kodla bilgi alırken kullanılacak ad Ekranda gösterilecek karakter genişliği Yazılabilecek maksimum karakter sayısı Single line: tek satırlı metin kutusu Multi Line: çok satırlı metin kutusu Password: Metin kutusuna girilen bilgiler yıldız”*” la kapatılır. İçinde varsayılan olarak yazılması istenen veri Muti line seçildiğinde sona gelindiğinde alt satıra geçilmesi Check boxa verilecek ad İşaretlendiğinde sunucuya göndereceği veri Varsayılan olarak işaretli yada işaretsiz olması Radiobuttona verilecek ad İşaretlendiğinde sunucuya göndereceği veri Varsayılan olarak işaretli yada işaretsiz olması List/Menu adı List Menu List seçildiğinde kutunun satır yüksekliği List seçildiğinde kutu içinden birden çok değer seçimine izin verilmesi Varsayılan olarak seçili gelmesi istenen değer seçilir. List Values Liste kutusunda veya açılan kutuda yer alması istenenler ve karşılarında da seçilen etiketin göndereceği değer (value) belirtilir. Button name Label Action Butonun kodlarda kullanılacak adı Butonun üzerinde yazılması istenen etiket Submit Form: Formdaki bilgileri form özelliklerinde belirtilen action sayfasına gönderilmesini sağlar. Reset Form: Form nesnelerinin varsayılan değerlerini almasını sağlar. None: hiçbir işlem yapılmaz Button İpuçları: Formun olduğu .htm sayfası ile .asp sayfasını aynı klasör içine kaydediniz ve klasörü sunucuya yayımlaması için tanıtınız. Sunucuya bilgi aktarılırken kullanılan get ve post metodunda şu farklar vardır. o Get metodu ile bilgi aktarılırken gönder butonuna tıklandığında explorerın adres çubuğunda aktarılan veriler gösterilir. Bakınız: o Post metodunda adres çubuğunda bilgi görüntülenmez. Bakınız: get metodu ile büyük formlardaki veriler aktarılmaz çünkü get metodu ile en fazla 8,192 karakter gönderilebilir. Kredi kartı numarası gibi başkalarının eline geçmesi sakıncalı olan bilgilerin gönderilmesinde de get metodu kullanılmamalıdır. Çünkü güvenli değildir. List/menu nesnesi eklenip list seçilerek allow multiple özelliği onaylandığında formda bilgiler seçilip gönder butonuna basıldığında list kutusundan seçilen değerler aralarına virgül konularak gönderilir. Bakınız: Bu durumda Submit butonuna basılarak sunucuda liste kutusundaki değer okutularak bir değişkene aktarılırsa çıkarma ve Bölme etiketlerine karşılık olarak verilen value lar aktarılır. Çıkarma için value=”-“ Bölme için value=”/” yazılmış olsun bu durumda Değişken=”-, /” Olarak alınır. o o 4 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY 1. Veri Girişi: (asp-php) Formun ekran görünümü Form sayfasının html kodları 2. REQUEST.FORM (asp) Request.form komutu post metodu ile formdan gönderilen verilerin alınmasını sağlar. Bu metotla gönderilen bilgide limit yoktur ve gönderilen bilgi gösterilmez. <form name="form1" method="post" action="veri_oku.asp"> …… </form> Bu kod sayfaya form eklenmesini sağlayan html komutudur. Görüldüğü gibi method post’dur bu durumda veriyi almak için Request.form(“form nesnesinin adı”) Komutu kullanılmaktadır. Yukarıda ekran görünümü ve kodları verilen formdan bilgileri alarak browserda gösteren asp sayfasının kodları aşağıdaki gibidir. 5 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY 3. REQUEST.QUERYSTRING (asp) Form dan veriler get metoduyla gönderildiğinde bilgileri almak için request.querystring komutu kullanılır. Get metoduyla bilgi gönderildiğinde, bilgiler browserın adres çubuğunda gösterilir. Veri giriş sayfası yukarıdaki gibidir sadece formun metodu get yapılmıştır ve action kısmına bilgiyi get metoduyla alacak olan sayfanın adıyazılmıştır. 6 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY 4. $_POST (php) Php’de veri giriş sayfasında belirtilen formdan gönderilen bilgileri almak için $_POST komutu kullanılır. $_POST[“form nesnesinin adı”]; 5. $_GET (php) 6. $_REQUEST (php) PHP’de $_REQUEST değişkeni $_GET, $_POST, ve $_COOKIE komutlarının tümünü içerir. Example Welcome <?php echo $_REQUEST["name"]; ?>.<br /> You are <?php echo $_REQUEST["age"]; ?> years old! 7 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY ASP Operators PHP Operators Matematiksel Operatörler (Arithmetic Operators) Operatör Anlamı Örnek Sonuç + Toplama S=3+4 S=7 - Çıkarma S=4-1 S=3 * Çarpma S=3*4 S=12 / Bölme S=9/3 S=3 ^ Üs alma S=2^3 S=8 Kalan S=23 mod 10 S=3 Tam bölme S=10\3 S=1 Mod \ Matematiksel Operatörler (Arithmetic Operators) Açıklama Örnek Sonuç Operator Description Example Result Karşılaştırma Operatörleri (Comparison Operators) Operatör Anlamı Örnek Sonuç = Eşit 4=3 False < Küçük 4<3 False > Büyük 4>3 True <= Küçük eşit 4<=3 False >= Büyük eşit 4>=3 True <> Farklı 4<>3 True & Birleştir Örnek Ad=”Ali” Soyad=”Ak” A_s=ad&soyad x=2 x+2 4 - Çıkarma Subtraction x=2 5-x 3 * Çarpma Multiplication x=4 x*5 20 / Bölme Division 15/5 5/2 3 2.5 % Mod(Bölmede kalan) Modulus (division remainder) 5%2 10%8 10%2 1 2 0 ++ Arttırma Increment x=5 x++ x=6 -- Azaltma Decrement x=5 x-- x=4 Atama Operatörleri (Assignment Operators) = Örnek Example Eşiti Is The Same As x=y x=y += x+=y x=x+y -= x-=y x=x-y *= x*=y x=x*y /= x/=y x=x/y .= x.=y x=x.y x%=y x=x%y %= Karşılaştırma Operatörleri (Comparison Operators) Açıklama Örnek Operator Description Example String Operatör (String Operator) Anlamı Toplama Addition Operator Mantıksal Operatörler (Logical Operators) Operatör Anlamı Örnek Sonuç F and F F F and T F And Ve T and F F T and T T F or F F F or T T Or Veya T or F T T or T T Not true False Not Değil Not false True Operatör + Sonuç A_s=Ali Ak == Eşit mi 5==8 returns false != Eşit değil mi 5!=8 returns true > Büyük mü 5>8 returns false < Küçük mü 5<8 returns true >= Büyük eşit mi 5>=8 returns false <= Küçük eşit mi 5<=8 returns true Mantıksal Operatörler (Logical Operators) Operator Description Example && ve and x=6 y=3 (x < 10 && y > 1) returns true || veya or x=6 y=3 (x==5 || y==5) returns false ! Değil not x=6 y=3 !(x==y) returns true 8 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY KARŞILAŞTIRMA İFADELERİ KARŞILAŞTIRMA İFADELERİ Farklı durumlarda farklı kodların çalıştırılması için karşılaştırma ifadeleri kullanılır. Farklı durumlarda farklı kodların çalıştırılması için karşılaştırma ifadeleri kullanılır. Vbscript’de dört koşul ifadesi kullanılabilir: If...Else İfadesi Koşul sağlandığında veya sağlanmadığında bir kodun çalışması gerekiyorsa fi komutu aşağıdaki gibi kullanılabilir. if …then ……… koşul sağlandığında kod yada kodların çalıştırılması için kullanılır. if...then...else …… Koşul sağlandığında veya sağlanmadığında belirli kod yada kodların çalıştırılmasını için kullanılır. if...then...elseif ………….. koşulun 2 den çok olduğu durumlarda sağlayan koşula ait işlemlerin yapılmasında kullanılır. select case – çok durumlu koşullarda koşulun sağlandığı duruma ait işlemlerin yapılmasını sağlar. Syntax if (koşul) koşul sağlandığında çalışacak kod; else koşul sağlanmadığında çalışacak kod; Örnek Aşağıdaki örnekte günlerden Cuma ise iyi hafta sonları yazmakta değilse iyi günler yazmaktadır: <html> <body> <?php If....Then.....Else $d=date("D"); if ($d=="Fri") if i=10 Then msgbox "Merhaba" echo "İyi hafta sonları!"; else Burada else ifadesi kullanılmamıştır. Koşul sağlandığında tek echo "İyi günler!"; bir komut çalışacaksa then’den sonra yazılabilir. ?> </body> Koşul sağlandığında birden çok komutun çalışması </html> istendiğinde her komut tek bir satıra yazılmalıdır ve if Koşul sağlandığında veya sağlanmadığında birden çok komut ifadesinin sonunu belirtmek için end If kelimesi kullanılır: çalışması gerekiyorsa komutlar { ….. } işaretleri arasına yazılır: if i=10 Then msgbox "Merhaba" i = i+1 end If Koşul sağlanmadığında çalışması istenen kodlar else kelimesinden sonra yazılır: if i=10 then msgbox "Merhaba" else msgbox "Güle güle" end If If....Then.....Elseif Birden çok durum için karar verilmesi gerektiğinde if komutu arka arkaya kullanılır: if odeme="Peşin" then msgbox "Peşin ödeme yapacaksınız!" elseif odeme="Visa" then msgbox "Visa ile ödeme yapacaksınız." elseif odeme="posta" then msgbox "Posta çeki ile ödeme yapacaksınız." else msgbox "Ödeme metodunuz belli değil." end If <html> <body> <?php $d=date("D"); if ($d=="Fri") { echo "Merhaba!<br />"; echo "İyi hafta sonları!"; echo "Pazartesi görüşürüz!"; } ?> </body> </html> ElseIf İfadesi Birden çok durumlar arasında karar verirken if komutları arka arkaya kullanılır. Syntax if (koşul) koşul sağlandığında çalışacak kodlar; elseif (koşul) koşul sağlandığında çalışacak kodlar; else koşul sağlanmadığında çalışacak kodlar; 9 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY Select Case Switch İfadesi Bir değişkenin alabileceği birçok durumdan birine karar verilmesi gerekiyorsa select case komutu kullanılabilir: Birçok komuttan birinin çalışması gerektiğinde php’de switch ifadesi kullanılır. select case odeme case "Peşin" msgbox "Peşin ödeme yapacaksınız!" case "Visa" msgbox "Visa ile ödeme yapacaksınız." case "posta" msgbox "Posta çeki ile ödeme yapacaksınız." case Else msgbox "Ödeme metodunuz belli değil."end select Syntax switch (değişken) { case durum1: değişken=durum1 ise çalışacak kodlar; break; case durum2: değişken=durum2 ise çalışacak kodlar; break; default: değişken durumlardan hiç birine uymazsa çalışacak kodlar; } Değişken case ile belirtilen durumlardan birine uyup uymadığı sırayla sınanır değişken hiçbir duruma uymazsa case else ifadesinden sonraki kodlar çalışır. Switch komutundan sonra değişkenin durumlara uyup uymadığı sırayla kontrol edilir uyduğu durum varsa ilgili kodlar çalıştırılır kodlar çalıştıktan sonra switch ifadesinden çıkılması için break komutu kullanılır. Değişken durumlardan hiçbirine uymuyorsa default: komutundan sonraki kodlar çalışır. <html> <body> <?php switch ($x) { case 1: echo "Bir"; break; case 2: echo "İki"; break; case 3: echo "Üç"; break; default: echo "Sayı 1-3 arasında değil"; } ?> </body> </html> ASP DÖNGÜLER PHP DÖNGÜLER For…….next döngüsü: Kaç defa çalışacağı belli olan döngülerde for…next döngüsü kullanılır. For i=2 To 10 kodlar Next for Kaç defa çalışacağı belli olan döngülerde for…next döngüsü kullanılır. For ifadesinde i değişkeninin başlangıç ve bitiş değerleri belirtilir, next ifadesinde i değişkeni 1 arttırılır. Step Step ifadesi sayaç değerinin artış değerinin değiştirilmesini sağlar. Negatif girilirse başlangıç değerinden geriye doğru sayılması sağlanabilir. Syntax for (başlangıç; koşul; artırım) { Çalışacak kodlar; } 10 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY For i=2 To 10 Step 2 kodlar Next For i=10 To 2 Step -2 kodlar Next For…next döngüsünden çıkış Exit For komutu ile döngü bitmeden de çıkılabilir. Örnek <html> <body> <?php for ($i=1; $i<=5; $i++) { echo "Merhaba!<br />"; } ?> </body> </html> For Each...Next Döngüsü foreach Bir For Each...Next döngüsü bir yığın verinin her bir değeri için değişkenin değer almasını sağlar. Yığın bir dizidir. Dizi içerisinden değer alınmasını sağlar. dim arabalar(2) arabalar (0)="Volvo" arabalar (1)="Saab" arabalar (2)="BMW" Syntax foreach (dizi as değişken) { Çalışacak kodlar; } For Each x in arabalar document.write(x & "<br />") Next Do...Loop Döngünün kaç defa çalışacağı belli değilse do..loop ifadesi kullanılır. While While iken anlamındanır. While dan sonra yazılan koşul doğru iken do…loop komutu arasındaki kodlar tekrarlanır. Koşulda kullanılan değişken do…loop içinde otomatik olarak artmaz yada azalmaz bu nedenle döngü içinde mutlaka değişkenin değerini değiştiren kod yazılmalıdır. Do While i>10 Kodlar ……………… i=i+2 Loop Örnek <html> <body> <?php $dizi=array("one", "two", "three"); foreach ($dizi as $d) { echo "değer: " . $d . "<br />"; } ?> </body> </html> while deyimi Koşul sağlandığı sürece döngü çalışır. Ön koşullu döngüdür yani döngüye girilmesi için şart sağlanıyor olmalıdır. Syntax while (koşul) { Çalışacak kodlar; } Okunuşu:i değişkeni büyük 10 iken döngü içindekileri tekrarla Örnek Burada while döngü başında yazıldığı için i değişkenin değeri 9 <html> ise döngü içindeki komutlar hiç çalışmaz ve program loop’dan <body> sonraki komuttan devam eder. <?php $i=1; while($i<=5) Kodlar { ……………… echo "Sayı i=i+1 $i++; Loop While i>10 } ?> </body> Okunuşu:i değişkeni büyük 10 iken döngü içindekileri tekrarla </html> Do " . $i . "<br />"; 11 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY Burada koşul döngü sonunda kontrol edilmiştir. Yani i değişkeninin değeri 9 olsa dahi döngü içi bir kez çalışır. do...while deyimi Until Until –e kadar anlamındadır. While da olduğu do yada loop dan sonra kullanılabilir ve döngü değişkenin değeri döngü içinde değiştirilmelidir. Do Until i=10 Kodlar ……………… i=i+1 Loop Anlamı: i eşit 10 olana kadar döngüyü tekrarla. Eğer i değişkeninin değeri 10 ise döngü içindeki komutlar hiç çalışmaz. Do Kodlar ……………… i=i+1 Loop Until i=10 Anlamı: i eşit 10 olana kadar döngüyü tekrarla. koşul sağlandığı sürece döngü çalışır. Ancak son kontrollü döngü olduğu için koşul sağlanmıyorsa bile döngü içi bir kez çalıştırılmış olur. Syntax do { code to be executed; } while (condition); Örnek <html> <body> <?php $i=0; do { $i++; echo "Sayı " . $i . "<br />"; } while ($i<5); ?> </body> </html> Eğer i değişkeninin değeri 10 olsa bile döngü içi bir defa çalışır. Do...Loop’dan çıkış Not: Break komutu döngünün kırılmasını sağlar. Exit Do komutu döngünün kırılarak(yazılan şart sağlanmadan) çıkılmasını sağlar. Do Until i=10 i=i-1 If i<10 Then Exit Do Loop 12 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY DİZİLER DİZİLER Dim renk(3),isim(3,4) array( ) Şeklide vbscript ile dizi tanımlanabilir. Yukarda üç elemanlı bir renk dizisi ve iki boyutlu bir isim dizisi tanımlanmıştır. array() komutu anahtar ve değerden oluşan bir dizi oluşturur. Eğer anahtar belirtilmezse anahtar otomatik olarak atanır ve anahtar değeri 0 dan başlayarak her bir değer için bir artar. e. Diziye değer atanması: Renk(0)=”red” Renk(1)=”gren” Renk(2)=”blue” İsim(0,0)=”Ali” isim(0,1)=”Ayşe” ……………… Şeklinde diziye değer atanabilir. Veya bir dizi aşağıdaki gibi de oluşturularak değer girilebilir. Syntax array(key => value) Parametre Açıklama Parameter Description key value Seçmeli. Sayısal veya karakterlerden oluşan bir anahtar verilebilir. Eğer anahtar verilemzse 0,1,2 şeklinde otomatik olarak bir anahtar verilir. Zorunlu. Kullanıcının istediği değerler. <% aylar = Array("Ocak","Subat","Mart","Nisan","Mayıs","Haziran", Temmuz","Agustos","Eylul","Ekim","Kasim","Aralik") %> Burada aylar dizisine ay isimleri girilerek oluşturulmuştur.<%=aylar(2)%> komutu ile dizinin 2. elemanını ekrana yazdırırsak mart yazacaktır çünkü ocak dizinin 0. elemanıdır. Bu durumu düzeltmek için ilk değer boş bırakılabilir. Örnek 1 <?php $a=array("a"=>"ali","e"=>"elif","k"=>"kerem"); print_r($a); ?> <% Dim ay, ayadi aylar = Array("yok","Ocak","Subat","Mart","Nisan","Mayıs","Haziran", Temmuz","Agustos","Eylul","Ekim","Kasim","Aralik") ay=month(date) ayadi=aylar(ay) response.write(ayadi) %> Yukarıdaki örnekte $a dizisi tanımlanmıştır. Bu dizide a anahtarı ali değerini e anahtarı elif değerini k anahtarı kerem değerini işaret etmektedir. Bu kodlar çalıştığında ekran çıktısı aşağıdaki gibidir: Burada 0. ay yok girilmiştir. Month(date) komutu ile bulunulan ay (1,2,3.. şeklinde) ay değişkenine aktarılmış sonrada bu sayı ile dizi indexlenerek ay adı bulunmuş ve ekrana yazdırılmıştır. Örnek 2 <?php $a=array("mavi","yeşil","kırmızı"); print_r($a); ?> Array ( [a] => ali [e] => elif [k] => kerem ) Dizinin yazdırılması: <% Rakamlar=array("sıfır","bir","iki","üç","dört","beş","altı", "yedi","sekiz","dokuz") For Each rakam in rakamlar Response.write(rakam&"<br>") Next Response.Write("<hr>")'aynı dizi şu şekilde de yazdırılabilir For i=0 to ubound(rakamlar) Response.write(rakamlar(i)&"<br>") next %> Split fonksiyonu: Bütün halinde gelen, arada boşluk virgül, veya noktalı virgül; gibi karakterlerle ayrılmış olan verilerin elemanlarına ayrı ayrı kullanabilmek için split komutu ile dizi haline getirilebilir. <% x=”sıfır,bir,iki,üç” ‘elemanlar , ile ayrılmış bir text dizi=split(x,”,”) response.write(dizi(0))’ekrana sıfırıncı eleman olan sıfırı yaz %> Ekran çıktısı aşağıdaki gibi olur: Array ( [0] => mavi [1] => yeşil [2] => kırmızı ) Örnek 3 <?php $a=array("bir","iki","üç"); echo "<pre>"; print_r($a); echo "<pre>"; echo "<hr>"; foreach ($a as $i) { echo $i."<br>"; } echo "<hr>"; for($x=0;$x<count($a);$x++) { echo $x.". değer= ".$a[$x]."<br>"; } ?> 13 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY Dizi fonksiyonları Dizi fonksiyonları Fonksiyon Açıklama Function Description PHP Array Varyant elemanlı dizi oluşturur array() Dizi oluşturur. 3 Filter Biri dizi içinden belli kriterlere uyan elemanların seçilerek bir alt dizi oluşturulmasını sağlar. Bir değişken adının dizi olup olmadığını test eder, dizi ise true olur. Bir dizinin elemanlarını birleştirerek string olarak döndürür. array_change_key_case() Dizinin değerlerini büyük harfe 4 veya küçük harfe çevirir. array_chunk() Diziyi bölmeyi sağlar. 4 array_combine() İki dizinin birleştirilmesini 5 sağlar 1. dizi anahtar 2. dizi anahtara karşılık gelen değerler olur. LBound Dizinin alt sınır indisini öğrenmeyi sağlar. array_count_values() Bir stringin diziye dönüştürülmesini sağlar. Dizideki elemanların sayısını verir yani aynı elemana sahip kaç anahtar olduğunu sayar. 4 Split UBound Bir dizinini üst sınırını öğrenmeyi sağlar. array_diff() Dizilerin karşılaştırılmasını sağlar ilk diziyi diğerleri ile karılaştırır ve diğer dizilerde olmayan elemanlarını seçer. 4 array_diff_assoc() Array_diff ile aynıdır ek olarak aynı anahtarlı olanların frkını verir. 4 array_diff_key() İlk dizinin anahtarı farklı olan elemanlarını seçer. 5 IsArray Join Php’de dizilerle ilgili yaklaşık 70 tane fonksiyon vardır. 14 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY TARİH SAAT FONKSİYONLARI(ASP) TARİH SAAT FONKSİYONLARI(PHP) Fonksion Açıklama Fonksiyon Açıklama CDate String olan tarih veya saati tarih saat formatına çevirir. checkdate() Verilen ay,gün,yıl’In geçerli 3 olup olmadığını test eder. Date Sistem tarihini öğrenmeyi sağlar Bir tarih saat değişkenine yıl,ay,gün saat vb. eklemeyi sağlar. date_default_timezone_get() Varsayılan tarih bölgesini verir. 5 DateAdd İki tarihi çıkarmayı sağlar. Sonuç gün ay yıl saat vb. olarak alınabilir. date_default_timezone_set() Varsayılan bölgenin ayarlanmasını sağlar. 5 DateDiff date_sunrise() Tarih değişkeninden gün ay veya yılı almayı sağlar. Returns the time of sunrise for a given day / location 5 DatePart date_sunset() 5 DateSerial Yıl, ay, gün şeklinde yazılı tarihe ekleme veya çıkarma yapılmasını sağlar. Returns the time of sunset for a given day / location date() Tarih döndürür. Tarihten günün alınmasını sağlar.(1-31) Tarih saatin veya bileşenlerinin öğrenilmesini sağlar. 3 DateValue Day getdate() Tarihin dizi olarak alınmasını 3 sağlar. Returns an array that 3 contains current time information Formats a GMT/UTC 3 date/time FormatDateTime 0 dan 4 e kadar belirlenmiş formatta tarih saat yazılmasını sağlar. gettimeofday() PHP Hour Bir saat değişkeninden saatin alınmasını sağlar. (0-23) IsDate Bir stringin tarih olup olmadığının test edilmesini sağlar. gmdate() Minute Saat değişkeninden dakikanın alınmasını sağlar(0-59) gmmktime() Month Tarih değişkeninden ay’ın alınmasını sağlar.(1-12) Returns the Unix timestamp 3 for a GMT date gmstrftime() 3 MonthName Numarası verilen ay adının öğrenilmesini sağlar. Sistem tarih saatinin öğrenilmesini sağlar. Formats a GMT/UTC time/date according to locale settings idate() Tarih saat bileşnlerinin integer olarak alınmasını sağlar. 5 Second Saat değişkeninden saniyenin alınmasını sağlar.(0-59) localtime() 4 Time Sistem saatinin öğrenilmesini sağlar. Timer saat 12:00 AM’den beri kaç dk geçtiğinin öğrenilmesini sağlar. Returns an array that contains the time components of a Unix timestamp microtime() Saat, dakika saniye eklindeki özel veriyi forma sokar. Returns the microseconds for the current time 3 TimeSerial mktime() TimeValue Zaman döndürür. Returns the Unix timestamp 3 for a date Weekday Haftanın gününü rakam olarak döndürür. 1-7 arasında bir değer alır. strftime() Formats a local time/date according to locale settings 3 WeekdayName Sayı olarak verilen haftanın gününün adını öğrenmeyi sağlar. Yılın alınmasını sağlar. strptime() Parses a time/date generated with strftime() Parses an English textual date or time into a Unix timestamp 5 Now Year strtotime() time() 3 Returns the current time as 3 a Unix timestamp 15 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY VBscript String Fonksiyonları PHP String Fonksiyonları Function Description Function Description P InStr addcslashes() Stringin istenilen karakterinden önce “/” işareti eklenmesini sağlar. addcslashes(string,characters) 4 addslashes() 3 single quote (') double quote (") backslash (\) NULL Tanımlanmış bu karakterlerden önce / işareti eklenmesini sağlar. bin2hex() String karakterlerinin asci kodlarını hexadesimal olarak yazar. bin2hex(string) 3 chop() String içindeki bazı karakterlerin kaldırılmasını sağlar. 3 String1 içinde string2’nin aranmasını sağlar. Arama ilk karakterden başlanarak yapılır. InStr([start,]string1,string2[,compar e]) Şeklinde kullanılır. Bir fonksiyon olduğu için sonucu bir değişkene aktarılmalıdır. InStrRev Instr ile aynıdır tek fark arama sondan başa doğru yapılır bulunulan yer yine başlangıca göre verilir. LCase Stringi küçük harfe çevirir. LCase(string) Left Stringin solundan karakter alınmasını sağlar. Left(string,length) Len Stringin kaç karakter uzunluğunda olduğunu bulur. chop(string,charlist) Len(string|varname) LTrim "\0" - ASCII 0, NULL "\t" - ASCII 9, a tab "\n" - ASCII 10, a new line "\x0B" - ASCII 11, a vertical tab. "\r" - ASCII 13, a carriage return " " - ASCII 32, an ordinary white space Stringin solundaki boşlukların silinmesini sağlar. LTrim(string) RTrim Stringin solundaki boşlukların silinmesini sağlar. RTrim(string) Trim Stringin her iki tarafındaki boşlukları siler. Trim(string) Mid Replace Right Bir stringin içindeki kelime ya da karakterlerin değiştirilmesini sağlar. Replace(string,aranan,yerine konacak [,start[,count[,compare]]]) chunk_split() count_chars() İstenilen karakterle istenilen uzunlukta string oluşturulmasını sağlar. String(number,character) StrRevers Stringi ters çevirir. e StrReverse(string) UCase implode() join() 4 Stringin bölünerek dizi yapılmasını 3 sağlar. Tablonun tüm elemanlarını bir stringe çevirir. 3 implode(separator,array) join(separator,array) 3 implode ile aynı işi yapar. Stringin solundaki ekranda 3 gösterilemeyen karakterleri siler. ltrim(string,charlist) "\0" - NULL "\t" - tab "\n" - new line "\x0B" - vertical tab "\r" - carriage return " " - ordinary white space nl2br() String içindeki “\n” komutunu <br/> yapar. Örnekler: txt="Bügün güzel bir gün!" document.write(pos)%> Çıktısı: 3 Stringde karakterlerin kaç defa tekrarlandığının bulunmasını sağlar. ltrim() UCase(string) pos=InStr(txt,"gün") 3 explode(separator,string ,limit) Stringi büyük harfe çevirir. <%dim txt,pos Stringin içine istenilen aralıklarla istenilen karakterin eklenmesini sağlar. count_chars(string,mode) explode() Space(number) String 3 chunk_split(string,lengt h,end) İstenilen sayıda boşluk oluşturulmasını sağlar. StrComp İki stringin karşılaştırılmasını sağlar. Eşitse o değilse -1 döndürür. StrComp(string1,string2[,compare]) Asci kodu verilen karakterin bulunmasını sağlar. chr(ascii) Bir stringin sağından belli sayıda karakter alınmasını sağlar. Right(string,length) Space chr() Stringin istenilen karakterinden itibaren istenilen sayıda karakter alınmasını sağlar. Mid(string,başlangıç[,uzunl uk]) 3 nl2br(string) number_format() Sayıların 3 lü gruplanmasını sağlar. 3 number_format(number,dec imals,decimalpoint,separ ator) 16 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY <%dim txt,uz Txt=”ASP” Uz=len(txt) For i=1 to uz Response.write(left(txt,i)) next For i=1 to uz Response.write(right(txt,i)) next For i=1 to uz Response.write(mid(txt,i,1)) Next%> Çıktısı: A AS ASP P SP ASP A S P _____________________________________________________ dim txt txt="bugun guzel bir gun!" document.write(UCase(txt)) Çıktısı: BUGUN GUZEL BİR GUN! _____________________________________________________ dim txt txt=" bugun guzel bir gun! " document.write(Trim(txt)) Çıktısı: "bugun guzel bir gun!" _____________________________________________________ dim txt txt="Bugün güzel bir gün!" document.write(Replace(txt,"güzel","kötü")) Çıktısı: Bugün kötü bir gün _____________________________________________________ StrComp(string1,string2[,compare] ) -1 (if string1 < string2) 0 (if string1 = string2) 1 (if string1 > string2) Null (if string1 or string2 is Null) ord() Karakterin ascii kodunu verir. 3 parse_str() Stringin içindekideğişkenlerin alınmasını sağlar. 3 parse_str(string,array) print() Stringi yazar. 3 printf() Stringi formatlı yazmayı sağlar. 3 printf(format,arg1,arg2,arg++) sscanf() Parses input from a string according to a format 4 str_ireplace() Stringin istenilen karakterlerinin değiştirilmemsini sağlar. (büyükküçük harfe duyarlı değildir) 5 str_ireplace(find,replace,stri ng,count) str_pad() Stringin soluna sağına veya iki tarafına belirtilen karakterlerin eklenerek istenilen uzunluğa tamamlanmasını sağlar. 4 str_pad(string,length,pad_stri ng,pad_type) str_repeat() Stringin istenildiği kadar tekrarlanmasını sağlar. 4 str_repeat(string,repeat) str_replace() Str_ireplace ile aynıdır. Ancak büyük küçük harf duyarlıdır. 3 str_split() Stringi parçalayarak diziye atar. 5 str_split(string,length) str_word_count() Stringin içindeki kelimeleri sayar. 4 strcasecmp() İki stringi karşılaştırır. B-k harf duyarsızdır. İki stringi karşılaştırır. B-k harf duyarlıdır. 3 stripos() Bir stringin içindeki başka bir stringin yerini öğrenmeyi sağlar. (case-insensitive) 5 strlen() Stringin uzunluğunu bulur. 3 strpos() Bir stringin içindeki başka bir stringin yerini öğrenmeyi sağlar. (case-sensitive) 3 strtolower() Stringi küçük harfe çevirir. 3 strtoupper() Stringi büyük harfe çevirir. 3 trim() Stringin heriki tarafındaki ekranda 3 gösterilmeyen karakterleri siler. ucfirst() ucwords() Stringin ilk harfini büyüe çevirir. 3 Stringin her kelimesinin ilk harfine 3 büyüğe çevirir. strcmp() 3 <?php $str = "Hello world. It's a beautiful day."; print_r (explode(" ",$str)); ?> Çıktısı: Array ( document.write(StrComp("VBScript","VBScript")) [0] => Output: [1] => 0 [2] => document.write(StrComp("VBScript","vbscript")) [3] => Output: [4] => -1 [5] => document.write(StrComp("VBScript","vbscript",1 ) )) Output: 0 Hello world. It's a beautiful day. 17 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY FileSystemObject Nesnesi Dosya sistemi nesnesi sunucudaki dosya sistemine erişmek için kullanılır. Bu nesne dosyaları, klasörleri ve klasör yollarını yönetir. PHP Dosya Sistemi Fonksiyonları Function Description P H P basename() Yolda belirtilen dosya adını alır. 3 basename(path,suffix) Aşağıdaki kodlar bir text dosyası açar(c:\test.txt) ve içine merhaba yazar. <% dim fs,f_ad set fs=Server.CreateObject("Scripting.FileSystemObject") set f_ad=fs.CreateTextFile("c:\test.txt",true) f_ad.WriteLine("Merhaba!") f_ad.Close set f_ad=nothing set fs=nothing %> <?php $path = "/testweb/home.php"; //Uzantısıyla birlikte dosya adını yaz echo basename($path) ."<br/>"; //Dosya adını uzantı olmadan yaz echo basename($path,".php"); ?> chgrp() Dosyanın grubunu değiştirir. 3 chgrp(file,group) <?php chgrp("test.txt","admin") ?> chmod() Erişim izinlerini değiştirir. 3 chmod(file,mode) Methods Method Description CopyFile Bir yada daha çok dosyayı bir yerden başka bir yere kopyalar. FileSystemObject.CopyFile source,destination[,overwrite] <% dim fs set fs=Server.CreateObject("Scripting.FileSystemObject") fs.CopyFile "c:\mydocuments\web\*.htm","c:\webpages\" set fs=nothing %> CopyFolder Bir yada daha çok klasörü bir konumdan başka bir konuma kopyalar. <?php // Read and write for owner, nothing for everybody else chmod("test.txt",0600); // Read and write for owner, read for everybody else chmod("test.txt",0644); // Everything for owner, read and execute for everybody else chmod("test.txt",0755); // Everything for owner, read for owner's group chmod("test.txt",0740); ?> chown() Sahibini değiştirir. <?php chown("test.txt","charles") ?> copy() Dosya kopyalar. <?php echo copy("target.txt","source.txt"); ?> CreateFolder dirname() CreateTextFile Text dosya oluşturur ve okumak veya yazmak için bir dosya sistemi nesnesi döndürür FileSystemObject.CreateTextFile (filename[,overwrite[,unicode]]) FolderObject.CreateTextFile (filename[,overwrite[,unicode]]) Konunun başındaki örneğe bakınız. DeleteFile Bir veya daha çok belirlenmiş dosyayı siler. Yoldaki klasör adını döndürür. 3 disk_free_space() Returns the free space of a directory fclose() Açılan dosyayı kapatır. 4 3 feof() Açılan dosyanın sonuna gelinip gelinmediğini test eder. 3 fgetcsv() Parses a line from an open file, checking for CSV fields 3 fgets() Returns a line from an open file 3 fgetss() Returns a line, with HTML and PHP tags 3 removed, from an open file file() Reads a file into an array 3 file_exists() Checks whether or not a file or directory exists 3 FileSystemObject.CreateFolder(name) <% dim fs,f set fs=Server.CreateObject("Scripting.FileSystemObject") set f=fs.CreateFolder("c:\asp") set f=nothing set fs=nothing %> 3 copy(file,to_file) FileSystemObject.CopyFolder source,destination[,overwrite] <% ‘c:\mydocuments\web içindeki tüm klasörleri ‘c:\webpages klasörünün içine kopyala dim fs set fs=Server.CreateObject("Scripting.FileSystemObject") fs.CopyFolder "c:\mydocuments\web\*","c:\webpages\" set fs=nothing %> Yeni klasör oluşturur. 3 chown(file,owner) file_get_contents( Reads a file into a string ) 4 file_put_contents Writes a string to a file 5 FileSystemObject.DeleteFile(filename[,force]) 18 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY <% dim fs Set fs=Server.CreateObject("Scripting.FileSystemObject") fs.CreateTextFile("c:\test.txt",True) if fs.FileExists("c:\test.txt") then fs.DeleteFile("c:\test.txt") end if set fs=nothing %> fileatime() Returns the last access time of a file 3 filectime() Returns the last change time of a file 3 filegroup() Returns the group ID of a file 3 fileinode() Returns the inode number of a file 3 filemtime() Returns the last modification time of a 3 file fileowner() Returns the user ID (owner) of a file 3 fileperms() Returns the permissions of a file 3 filesize() Returns the file size 3 filetype() Returns the file type 3 flock() fnmatch() Locks or releases a file 3 Matches a filename or string against a 4 specified pattern fopen() Opens a file or URL fpassthru() Reads from an open file, until EOF, and 3 writes the result to the output buffer fputcsv() Formats a line as CSV and writes it to an open file 5 fputs() Alias of fwrite() 3 fread() fscanf() 3 4 fseek() Reads from an open file Parses input from an open file according to a specified format Seeks in an open file fstat() Returns information about an open file 4 ftell() Returns the current position in an open 3 file ftruncate() Truncates an open file to a specified length 4 fwrite() Writes to an open file 3 glob() Returns an array of filenames / directories matching a specified pattern 4 is_dir() is_executable() Checks whether a file is a directory Checks whether a file is executable 3 3 <% dim fs,f set fs=Server.CreateObject("Scripting.FileSystemObject") set f=fs.GetFile("c:\test\test.htm") Response.Write("The file was last modified on: ") Response.Write(f.DateLastModified) set f=nothing set fs=nothing %> Çıktısı: The file was last modified on 01/01/20 4:23:56 AM is_file() Checks whether a file is a regular file 3 is_link() Checks whether a file is a link 3 is_readable() Checks whether a file is readable 3 GetFileName DeleteFolder Belirlenmiş bir veya daha çok klasörü siler. FileSystemObject.DeleteFolder(foldername[,fo rce]) <% dim fs set fs=Server.CreateObject("Scripting.FileSystemObject") if fs.FolderExists("c:\temp") then fs.DeleteFolder("c:\temp") end if set fs=nothing %> DriveExists FileExists FolderExists GetBaseName Belirtilen sürücünün olup olmadığını test eder. Belirtilen dosyanın olup olmadığını test eder. Belirtilen klasörün olup olmadığını test eder. Belirlenen dosya yada klasörün temel adını verir. FileSystemObject.GetBaseName(path) <% dim fs set fs=Server.CreateObject("Scripting.FileSystemObject") Response.Write(fs.GetBaseName("c:\winnt\cursors\3dga rro.cur")) set fs=nothing %> Çıktısı: 3dgarro GetFile Belirlenen yoldaki dosya nesnesini alır. FileSystemObject.GetFile(path) Belirtilen yoldaki dosya yada klasör adını döndürür. FileSystemObject.GetFileName(path) 3 3 is_uploaded_file() Checks whether a file was uploaded via 3 HTTP POST is_writable() is_writeable() Checks whether a file is writeable Alias of is_writable() 4 3 link() Creates a hard link 3 linkinfo() Returns information about a hard link 3 lstat() Returns information about a file or symbolic link 3 mkdir() Creates a directory 3 move_uploaded_f Moves an uploaded file to a new ile() location 4 FileSystemObject.GetFolder(path) parse_ini_file() pathinfo() Parses a configuration file Returns information about a file path 4 4 GetParentFolderName pclose() Closes a pipe opened by popen() 3 popen() Opens a pipe 3 readfile() Reads a file and writes it to the output 3 buffer readlink() Returns the target of a symbolic link 3 realpath() rename() Returns the absolute pathname Renames a file or directory 4 3 GetFolder Belirtilen yoldaki klasör nesnesini döndürür. Belirtilen yoldaki klasör adlarını verir. FileSystemObject.GetParentFolderName(path) <% dim fs,p set fs=Server.CreateObject("Scripting.FileSystemObject") p=fs.GetParentFolderName("c:\winnt\cursors\3dgarro.c ur") 19 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY Response.Write(p) set fs=nothing %> Output: c:\winnt\cursors MoveFile Dosya yada dosyaları bir konumdan başka bir konuma taşır. Klasör yada klasörleri bir konumdan başka bir konuma taşır. MoveFolder OpenTextFile Dosyaya erişim için bir textstream nesnesi döndürür. rewind() Rewinds a file pointer 3 rmdir() Removes an empty directory 3 set_file_buffer() Sets the buffer size of an open file 3 stat() Returns information about a file 3 symlink() Creates a symbolic link 3 tempnam() tmpfile() Creates a unique temporary file Creates a unique temporary file 3 3 touch() Sets access and modification time of a 3 file umask() Changes file permissions for files 3 unlink() Deletes a file 3 Dosya Açma FileSystemObject.OpenTextFile(fname,mode,create,format) PHP’de dosya açmak için fopen() fonksiyonu kullanılır. Dosya Açma Dosya açmak için opentextfile komutu kullanılır. Bu komutun parametreleri aşağıdaki gibidir: FileSystemObject.OpenTextFile(fname,mode,create,format) Parameter Description fname Gerekli. Açılacak dosyanın adı. mode Seçmeli. Dosyanın nasıl açılacağı 1=Okuma – Dosya okumak için açılır yazılamaz. 2=Yazma – Dosya yazmak için açılır. 8=Ekleme – Dosya yazmak için açılır işaretçi dosyanın sonuna konulanır. create format 1. parametre açılacak olan dosyanın ismi 2. parametre açılma modunu belirler. <html> <body> <?php $file=fopen("welcome.txt","r"); ?> </body> </html> Dosya aşağıdaki modlarda açılabilir: Modes r Description Sadece okuma, dosya başına konumlanılır. r+ Okuma/Yazma. Dosyanın başına konumlanılır. Seçmeli. Dosya formatı w Sadece yaz. Dosya açılır ve tüm içeriği silinir, eğer dosya yoksa oluşturulur. 0=TristateFalse - Open the file as ASCII. This is default. -1=TristateTrue - Open the file as Unicode. -2=TristateUseDefault - Open the file using the system default. w+ Okuma/Yazma. Dosya açılır ve tüm içeriği silinir, eğer dosya yoksa oluşturulur. a Append(ekleme). Dosya sonuna yazılması için açılır. Dosya yoksa oluşturulur. Seçmeli. Dosya yoksa oluşturulsunmu. True yapılırsa dosya yoksa oluşturulur. False yağılırsa dosya yoksa oluşturulmaz. a+ The TextStream Object x Sadece yazma. Dosya oluşturulur. Dosya varsa FALSE döndürülür. x+ Okuma/Yazma. Yeni dosya açılır. Dosya varsa FALSE döndürülür. Properties Property AtEndOfLine Description Okuma yaparken satır sonuna gelindiğinde true değerini alır. Diğer durumlarda False dır. AtEndOfStream Dosya işaretçisi TextStream ın sonuna geldiğinde True değerini alır. Değilse false olur. Column Dosya işaretçisinin gösterdiği karakterin sutun numarasını verir. Line Dosya işaretçisinin bulunduğu satır numarasını verir. Okuma/Append(ekleme). Dosya içeriği korunarak yazmak için dosya sonuna konumlanılır. Örnek <html> <body> <?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); ?> </body> </html> Methods Method Close Read Description TextStream dosyasının kapatır. Read(karakter sayısı) Dosyadan bulunulan satırdan karakter 20 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY sayısı kadar veriyi okumayı sağlar. Dosyanın tümünü okur. Dosya işaretçisinin bulunduğu satırı okumayı sağlar. Skip Skip(karakter sayısı) Karakter sayısı kadar atlamayı sağlar. SkipLine Dosyada sonraki satıra atlamayı sağlar. Write TextStream dosyasına yazmayı sağlar. WriteLine Dosyaya satır yazarak alt satıra geçer. WriteBlankLines TextStream dosyasına boş bir satır yazmayı sağlar. ReadAll ReadLine Dosyanın Kapatılması fclose() fonksiyonu dosyayı kapatmak için kullanılır: <?php $file = fopen("test.txt","r"); //some code to be executed fclose($file); ?> Örnek Bu örnekte c sürücüsündeki test.txt dosyasının tüm içeriği okunarak exploreda gösterilmektedir. <% dim fs,f,t,x set fs=Server.CreateObject("Scripting.FileSystemObject") set f=fs.CreateTextFile("c:\test.txt") set t=fs.OpenTextFile("c:\test.txt",1,false) x=t.ReadAll t.close Response.Write("Dosyanın içeriği..: " & x) %> Dosyanın Kapatılması Dosyanın kapatılması için dosya.close komutu kullanılır. Satır satır dosya okuma Aşağıdaki örnekte sitenin yolu server.mappath komutu ile öğrenilmektedir. Dosya okuma modunda açılarak while not dosya.atendofstream komutu dosya sonuna kadar okuma yapmak için bir döngü kurulmuştur. Örnek <% set fs=server.CreateObject("Scripting.filesystemobject") yol=server.MapPath("mesaj.txt") set dosya=fs.opentextfile(yol,1) do while not dosya.atendofstream Response.Write(dosya.readline) Response.Write("<br>") loop set dosya=nothing set fs=nothing %> Dosya Sonu Testi feof() fonksiyonu dosya sonuna gelinip gelinmediğini test etmeyi sağlar. Uzunluğu bilinmeyen dosyayı okurken döngülerde kullanılır. Not: Dosya w, a, ve x modunda açılırsa okunamaz. if (feof($file)) echo "Dosya Sonu"; Satır satır dosya okuma fgets() fonksiyonu tek bir satır okumak için kullanılır. Note: Bu fonksiyon çalıştıktan sonra işaretçi sonraki satıra konumlanır. Örnek <?php $file = fopen("welcome.txt", "r") or exit("Unable to open file!"); //Output a line of the file until the end is reached while(!feof($file)) { echo fgets($file). "<br />"; } fclose($file); ?> Uygulama 1: Karakter Karakter dosya okuma Aşağıdaki uygulamada kullanıcının veri girişi yapacağı sayfanın tasarım görünümü gösterilmiştir. Burada fgetc() fonksiyonu tek bir karakter okumak için kullanılır. kullanıcının giriş yapacağı formun altında da daha önce girilmiş tüm mesaklar gösterilmektedir. Note: dosya işaretçisi sonraki karaktere konumlanır. Örnek <?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); while (!feof($file)) { echo fgetc($file); } fclose($file); ?> 21 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY Yukarda tasarımı verilen sayfanın kodları aşağıdaki gibidir: Aşağıda da formdan girilen bilgilerin dosyaya kaydedilmesini sağlayan m_kaydet.asp sayfasının kodları gösterilmektedir. 22 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY Uygulama 2: <%@LANGUAGE="VBSCRIPT" CODEPAGE="1254"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9"> <title>Untitled Document</title> </head> <body> Attributes: <% dosya=request.QueryString("dosya") set fs=server.CreateObject("Scripting.FileSystemObject") set d=fs.getfile(dosya) Response.Write(d.attributes) %> <p>0 = Normal file<BR> 1 = Read-only file<BR> 2 = Hidden file<BR> 4 = System file<BR> 16 = Folder or directory<BR> 32 = File has changed since last backup<BR> 1024 = Link or shortcut<BR> 2048 = Compressed file</p> <p>Oluşturulma tarihi(d.datecreated):<%= d.datecreated %></p> <p>Son Erişim Tarihi(d.datelastaccessed):<%= d.datelastaccessed %></p> <p>Son düzenleme Tarihi(d.datelastmodified):<%= d.datelastmodified %> </p> <p>Sürücü(d.drive):<%= d.drive %></p> <p>Dosya Adı(d.name):<%= d.name %> </p> <p>Bulunduğu klasör (d.parentfolder):<%= d.parentfolder %> </p> <p>Dosyanın yolu(d.path):<%= d.path %> </p> <p>Dosaynın yolu-kısaltılmış(d.shortpath):<%= d.shortpath %> </p> <p>Dosyanın Adı-kısaltılmış(d.shortname):<%= d.shortname %></p> <p>Dosyanın türü(d.type):<%= d.type %></p> <p>Dosyanın Boyutu(d.size):<%= d.size %></p> <% set d=nothing set fs=nothing %> </body> </html> 23 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY ASP Uyulama Nesnesi (Application Object) Yayınlanmakta olan sitenin bütünü bir uygulamadır. Server çalıştığı sürece uygulama açıktır ve uygulama nesnesi tüm kullanıcılar(sitede dolaşan) tarafından paylaşılır. Uygulama nesnesi değişkenlerde değer saklamak ve bunlara erişmek için kullanılır, tüm sayfalarda ve kullanıcılarda geçerlidir. Uygulama nesnesi çok sayıda sayfada kullanılan uygulamalara(veri tabanı bağalantısı bilgileri gibi) ait bilgileri tutmak için kulanılır. Bunun anlamı tüm sayfalaradan bu bilgilere erişilebilir hemde bu bilgilerden biri değiştirildiğinde bu değişiklik tüm sayfalara otomatik olarak yansıtılır. Uygulama nesnesinin koleksiyonları, metodları ve olayları aşağıda tanımlanmıştır: Koleksiyon(Collections) Collection Description Contents Uygulamada script komutları vasıtası ile eklenen tüm öğeleri içerir. <% Application("tarih")="2001/05/05" Application("yazar")="Saray" for each x in Application.Contents Response.Write(x & "=" & Application.Contents(x) & "<br />") next %> Çıktısı: tarih=2001/05/05 yazar=Saray StaticObjects Html komutları ile eklenen bütün nesneleri içerir. Metod(Methods) Method Description Contents.Remove İçerik koleksiyonundan öğe siler. Application.Contents.Remove(name|index) <% Application("test1")=("Bir") Application("test2")=("İk") Application("test3")=("Üç") Application.Contents.Remove("test2") Application.Contents.Remove(2) for each x in Application.Contents Response.Write(x & "=" & Application.Contents(x) & "<br />") next %> Output: test1=Bir test3=Üç Contents.RemoveAll() Lock İçerik koleksiyonundaki tüm öğeleri siler. Diğer kullanıcıların uygulama nesnesindeki değişkenleri düzenlemesini engeller. Unlock Kullanıcıların uygulama nesnesindeki değişkenleri düzenlemesini aktif hale getirir. Olay(Events) Event Description Application_OnEnd Tüm kullanıcıların oturumu kapatıldığında ve uygulama sonlandırıldığında bu olay gerçekleşir. Application_OnStart İlk oturum oluşturulduğunda bu olay meydana gelir. 24 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY Oturum Nesnesi (Session Object) Kullanıcı siteye girdiğinde her kullanıcı için benzersiz bir numara verilir. Bu numara kullanıcı browser penceresini kapatıncaya kadar geçerlidir. Oturum nesnesinde kullanılan değişkenler oturum boyunca devam eder. Bunun sayesinde şifreli giriş yapılan sayfaların her birinde kullanıcının siteye girerken girdiği kullanıcı adı ve şifre bilgileri her sayfada test edilebilir, alış-veriş sitelerinde kullancıların farklı sayfalardan ürün seçmeleri ve seçtiği ürünler üzerinde daha sonra işlem yapma imkânı sağlanır. PHP Session Variables(oturum değişkenleri) Bir sitedeki sayfayı açtığınızda sunucuda bir oturum açmış olursunuz. Sayfa kapatıldığında ise oturum sonlanır. Kullanıcının oturum boyunca yaptığı işlemlerin takip edilebilmesi için oturum değişkenleri kulalnılır. Özelikle üye girişi ve alışveriş sitelerinde yaygın olarak kullanılır. Oturum değişkenleri kullanıcının oturumu boyunca sunucuda saklı kalır. Sunucu siteye giren her kullanıcı için benzersiz bir numara oluşturur ve kullanıcının işlemlerini buna göre takip eder. Collections Collection Description Contents Uygulamada script komutları vasıtası ile eklenen tüm öğeleri içerir. Application.Contents(Key) Session.Contents(Key) StaticObjects Html komutları ile eklenen bütün nesneleri içerir. Properties Property Description CodePage Dinamik içerik görüntülendiği zaman kullanılacak olan karakter kümesini tanımlar. Bir bölge veya yeri tanımlayan bir tamsayının atanmasını veya ayarlanmasını sağlar. İçeriği tarih, saat veya para birimi gibi olan nesnelerin görünümü bölge veya yere bağlıdır. LCID <% response.write("<p>") response.write("Default LCID is: " & Session.LCID & "<br />") response.write("Date format is: " & date() & "<br />") response.write("Currency format is: " & FormatCurrency(350)) response.write("</p>") Session.LCID=1036 %> SessionID Her kullanıcı için benzersiz bir numara döndürür. Benzersiz numara server tarafından üretilir. <% Response.Write(Session.SessionID) %> Çıktısı: 772766038 Timeout Oturumun süresini öğrenmeyi veya yeni değer vermeyi sağlar.(dakika olarak) <% response.write("<p>") response.write("Varsayılan zaman aşımı süresi: " & Session.Timeout) response.write("</p>") Session.Timeout=30 response.write("<p>") response.write("Şimdiki zaman aşımı süresi: " & Session.Timeout) response.write("</p>") PHP’de oturumu başlatmak Php’de kullanıcı bilgilerini oturumda saklamadan önce oturumun başlatılması gerekir. Note: session_start() fonksiyonu <html> iminden önce yazılmalıdır. <?php session_start(); ?> <html> <body> </body> </html> Oturum değişkeninde değişken saklama $_SESSION[] komutu kullanılarak oturumda değişkenler saklanır ve değerleri okunur: <?php session_start(); // veri saklama $_SESSION['gorunum']=1; ?> <html> <body> <?php //veriyi okuma echo "Sayfa gorunumu=". $_SESSION['gorunum']; ?> </body> </html> Çıktı: Pageviews=1 Aşağıdaki örnekte basit bir sayaç yapılmıştır. İsset() fonksiyonu sayac değişkeninin oluşturulup oluşturulmadığını test eder. eğer sayac değişkeni varsa değeri 1 artırılır. Yoksa oluşturularak ilk değerine 1 verilir. <?php session_start(); if(isset($_SESSION['sayac'])) 25 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY %> $_SESSION['sayac']=$_SESSION['sayac']+1; Çıktısı: Varsayılan zaman aşımı süresi: 20 Şimdiki zaman aşımı süresi: 30 Methods else $_SESSION['sayac']=1; echo "Sayaç=". $_SESSION['sayac']; ?> Oturumun sonlandırılması Method Description Abandon Dosya1.asp: Kullanıcı oturumunu sonlandırır. <% Session("name")="Ali" Session.Abandon Response.Write(Session("name")) %> Çıktı: Ali Bazı oturum verilerini silmek için unset() veya session_destroy() fonsiyonu kullanılır. Unset() fonksiyonu istenilen oturum değişkenini siler: <?php unset($_SESSION['sayc']); ?> Dosya2.asp: <% Response.Write(Session("name")) %> Çıktı: (yok) Contents.Remove İerik koleksiyonundan bir öğeyi siler. Session.Contents.Remove(name|index) <% Session("test1")=("Bir") Session("test2")=("İk") Session("test3")=("Üç") Session.Contents.Remove("test2") Session.Contents.Remove(2) for each x in Session.Contents Response.Write(x & "=" & Session.Contents(x) & "<br />") next %> Tüm oturum değişkenleri silmek için session_destroy() fonksiyonu çağrılmalıdır: <?php session_destroy(); ?> Note: session_destroy() fonksiyonu oturumu sıfırlar ve oturumda saklanan bütün veriler kaybolur. Çıktı: test1=Bir test3=Üç Contents.RemoveAll() İçerik koleksiyonundaki oturuma ait tüm öğeleri siler. Events Event Description Session_OnEnd Oturum sonlandığında bu olay gerçekleşir. Session_OnStart Oturum başladığında bu olay gerçekleşir. Örnek Uygulama 1: global.asa dosyası kullanılarak sitedeki aktif kullanıcıların ve ziyaret eden kullanıcıların sayısını öğrenmek. Global.asa <SCRIPT LANGUAGE=VBScript RUNAT=Server> Sub Application_OnEnd() End Sub Session.Timeout=1 Sub Application_OnStart() Application("SuankiZiyaretciSayisi") = 0 Application("toplamziyaret") = 0 End Sub 26 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY Sub Session_OnEnd() Application("SuankiZiyaretciSayisi") = Application("SimdikiZiyaretciSayisi") -1 End Sub Sub Session_OnStart() Application("SuankiZiyaretciSayisi") = Application("SimdikiZiyarteciSayisi") +1 Application("toplamziyaret") = Application("toplamziyaret") +1 End Sub </SCRIPT> Bu sayfayı siteklasörünün içine global.asa olarak kaydedin. Şimdide aktif ziyaretçi sayısını ve toplam ziyaretçi sayısını sayfamıza eklemek için kullanacağımız komutları yazalım: <% Response.Write "<h4> Su Anda Sitemizde " &Application ("SuankiZiyaretciSayisi" ) & " Kisi Surf Yapmaktadir... </h4>" Response.Write "<h4>Simdiye Kadar Sitemizi " &Application("toplamziyaret" )&" Kisi Ziyaret Etmistir...</h4>" %> Örnek Uygulama 2: Şimdide sitemize bir üyelik girişi yapalım ve giriş yapmayanların tüm sayfalara girmesini engelleyelim: Kullanıcı girişi formu ve kodları Uye_giris.asp <%@LANGUAGE="VBSCRIPT" CODEPAGE="1254"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9"> <title>Untitled Document</title> </head> <body> <form name="form1" method="post" action=""> <p>Kullanıcı Adı...: <input name="kad" type="text" id="kad"> </p> <p> ifre...............: <input name="sifre" type="text" id="sifre"> <input type="submit" name="Submit" value="Giri "> </p> 27 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY </form> <% kullanici_ad=array ("user","ali","fazıl","mehmet") 'tanımlı kullanıcı adları sifre=array("u123","a123","f123","m123") 'kullanıcı adları için tanımlı ifreler user için u123 vb. g_ad=request.Form("kad") 'formdan girilen ad g_sifre=request.Form("sifre") 'formdan girilen ifre session.Contents("gecerli")=0 ' tüm sayfalarda giri yapılıp yapılmadı ının testi için oturumda kullanıcak gecerli anahtarı. for i=0 to ubound(kullanici_ad) if kullanici_ad(i)=g_ad and sifre(i)=g_sifre then session.Contents("gecerli")=1 session.Contents("s_ad")=g_ad session.Contents("s_sifre")=g_sifre end if next if session.Contents("gecerli")=1 then response.Redirect("index.asp") %> </body> </html> Burada form ve asp kodları aynı sayfa içine yazılmıştır. Formun altında yer alan kodlarda: Kullanici_ad dizisinde kullanıcı adları sifre dizisinde de şifreler tanımlanmıştır. Formdan girilen kullanıcı adı ve şifre g_ad ve g_sifre değişkenlerine aktarılmıştır. For döngüsünde girilen kullanıcı adı ve şifrenin dizilerde olup olmadığı test edilmektedir, eğer varsa oturumda tanımlanmış olan gecerli değişkenine 1 verisi s_ad değişkenine kullanıcı adı s_sifre değişkenine şifre bilgisi aktarılmaktadır böylece tüm sayfalarda gerektiğinde kullanıcı adı ve şifre verisine erişilebilir. Bundan sonra yapılacak iş sitede yer alan tüm sayfaların başında gecerli değişkenini test etmek ve değeri 1 değilse uy_giris.asp sayfasına yönlendirme yapmaktır. Sayfaların başına eklenecek kod aşağıdaki gibi olabilir: <% if session.Contents("gecerli")=0 then response.Redirect("uye_giris.asp") %> ASP Cookies(kişi-çerez) PHP Cookies(kişi-çerez) Cookie Nedir? Cookie Nedir? Cookie kullanıcıyı tanımlamak için kullanılır. Cookie küçük bir A cookie is often used to identify a user. A cookie is a small dosyadır bu dosya sunucu tarafından kullanıcının file that the server embeds on the user's computer. Each bilgisayarına gömülür. time the same computer requests a page with a browser, it 28 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY will send the cookie too. With PHP, you can both create and retrieve cookie values. Cookie nasıl oluşturulur? "Response.Cookies" komutu ile cookie oluşturulur. How to Create a Cookie? Note: Response.Cookies komutu <html> komutundan önce kullanılır. The setcookie() function is used to set a cookie. Aşağıdaki örnekte ad isimli bir cookie oluşturularak içine ali değeri atanmıştır: Note: The setcookie() function must appear BEFORE the <html> tag. <% Response.Cookies("ad")="Ali" %> Syntax setcookie(name, value, expire, path, domain); Example Cookie ye ne zaman sonlandırılacağını belirten bir özellikde atanabilir: <% Response.Cookies("ad")="Ali" Response.Cookies("ad").Expires=#May 10,2008# %> In the example below, we will create a cookie named "user" and assign the value "Alex Porter" to it. We also specify that the cookie should expire after one hour: <?php setcookie("user", "Alex Porter", time()+3600); ?> <html> Cookie değeri nasıl okunur? <body> </body> "Request.Cookies" komutu cookie nin değerini öğrenmek için </html> kullanılır. Aşağıdaki örnekte ad cookie sindeki veri adi değişkenine aktarılarak yazdırılmaktadır: <% adi=Request.Cookies("ad") response.write("adi=" & adi) %> Çıktı: Note: The value of the cookie is automatically URLencoded when sending the cookie, and automatically decoded when received (to prevent URLencoding, use setrawcookie() instead). How to Retrieve a Cookie Value? The PHP $_COOKIE variable is used to retrieve a cookie value. Adi=Ali In the example below, we retrieve the value of the cookie named "user" and display it on a page: Cookie ile anahtarlar Eğer cookie çok sayıda değer içeriyorsa buna cookie anahtarlara sahip denir. <?php // Print a cookie echo $_COOKIE["user"]; // A way to view all cookies print_r($_COOKIE); ?> Aşağıda buna bir örnek verilmiştir: <% Response.Cookies("kullanici")("ad")="Ali" Response.Cookies("kullanici ")("soyad")="Eser" Response.Cookies("kullanici ")("sehir")="Turkey" Response.Cookies("kullanici ")("yas")="25" %> Tüm cookie leri okuma <html> <body> In the following example we use the isset() function to find out if a cookie has been set: <html> <body> <?php if (isset($_COOKIE["user"])) echo "Welcome " . $_COOKIE["user"] . "!<br />"; else echo "Welcome guest!<br />"; ?> 29 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY <% dim x,y for each x in Request.Cookies response.write("<p>") if Request.Cookies(x).HasKeys then for each y in Request.Cookies(x) response.write(x & ":" & y & "=" & Request.Cookies(x)(y)) response.write("<br />") next else Response.Write(x & "=" & Request.Cookies(x) & "<br />") end if response.write "</p>" next %> </body> </html> </body> </html> How to Delete a Cookie? When deleting a cookie you should assure that the expiration date is in the past. Delete example: <?php // set the expiration date to one hour ago setcookie("user", "", time()-3600); ?> Eğer browser cookie yi desteklemiyorsa? What if a Browser Does NOT Support Cookies? Eğer browser cookie leri desteklemiyorsa bilgileri bir sayfadan diğerine aktarmak için diğer yöntemler kullanılmalıdır. Bu aşağıdaki iki yolla yapılabilir: If your application deals with browsers that do not support cookies, you will have to use other methods to pass information from one page to another in your application. One method is to pass the data through forms (forms and user input are described earlier in this tutorial). 1. URL’ye parametre ekleme The form below passes the user input to "welcome.php" when the user clicks on the "Submit" button: URL’ye parametreler şu şekilde eklenir: <a href="giris.asp?ad=Ali&soyad=Eser"> Giriş sayfası</a> Gönderilen parametreleri giris.asp sayfasında okumak için kullanılacak kodlar: <% ad=Request.querystring("ad") soyad=Request.querystring("soyad") response.write("<p>Merhaba " & ad & " " & soyad & "!</p>") response.write("<p>Siteme hoşgeldiniz!</p>") %> 2. Form kullanımı You can use a form. The form passes the user input to "welcome.asp" when the user clicks on the Submit button: <html> <body> <form action="welcome.php" method="post"> Name: <input type="text" name="name" /> Age: <input type="text" name="age" /> <input type="submit" /> </form> </body> </html> Retrieve the values in the "welcome.php" file like this: <html> <body> Welcome <?php echo $_POST["name"]; ?>.<br /> You are <?php echo $_POST["age"]; ?> years old. </body> </html> <form method="post" action="welcome.asp"> First Name: <input type="text" name="fname" value=""> Last Name: <input type="text" name="lname" value=""> <input type="submit" value="Submit"> </form> Retrieve the values in the "welcome.asp" file like this: <% fname=Request.form("fname") lname=Request.form("lname") 30 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY response.write("<p>Hello " & fname & " " & lname & "!</p>") response.write("<p>Welcome to my Web site!</p>") %> 31 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY SQL Nedir? SQL SQL SQL SQL SQL SQL SQL SQL SQL ‘in açılımı Structured Query Language veri tabanına erişmeyi sağlar. bir ANSI stabdardı programlama dilidir veritabanı içinde sorgulama yapabilir veri tabanından veri getirebilir veri tabanına yeni kayıt ekleyebilir veritabanından kayıt silebilir veritabanında kayıtgüncelleyebilir öğrenilmesi kolaydır SQL standardı SQL bir ANSI (American National Standards Institute) standardı dilidir. Veri tabanına erişimi ve yönetimi sağlar. SQl veri tabanı prıgramlarında kullanılır.( Access, DB2, Informix, MS SQL Server, Oracle, Sybase, vb.) Maalesef çok farklı sürümlerde SQL dili vardır ancak bunlarda ANSI satandart dilini destekler. Bunların da asıl anahtar kelimeleri benzer işlevleri içerir. ( SELECT, UPDATE, DELETE, INSERT, WHERE, ve diğerleri gibi). Tablo Bir veritabanı genellike bir daha çok tablo içerir. Her tablonun adı ile tanımlanır. Tablo verilerin tutulduğu kayıtları içerir. Sorgu Bir sorgu aşağıdaki gibidir: SELECT Soyad FROM Kisiler SQL Veri işleme (Data Manipulation Language -DML) SQL sorguları çalıştıran bir sintaksdır. SQL dili aynı zamanda update, insert, ve delete kelimelerini kullanan yazımlarda içerir. SELECT – veri tabanı tablosundan veri seçmeyi sağlar Syntax SELECT column_name(s) FROM table_name Not: SQL deyimleri büyük küçük harf duyarlı değildir. SELECT Soyad,Ad FROM Persons UPDATE – tabloda veri günceller Syntax UPDATE Tablo_Adı SET Sütun_adı = new_value WHERE sütun_adı = deger Örnek: UPDATE Kisiler SET ad = 'Ayşe' WHERE soyad = 'Evren' DELETE – tablodan veri siler 32 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY Syntax DELETE FROM table_name WHERE column_name = some_value Örnek: DELETE FROM Kisiler WHERE soyad = 'Evren' INSERT INTO – tabloya yeni kayıt ekler Syntax INSERT INTO tablo_adı VALUES (değer1, değer2,....) Verilerin tabloda hangi alanlara eleneceğide yazılabilir: INSERT INTO Tablo_adı (sütun1, sütun2,...) VALUES (değer1, dğer2,....) Örnek: INSERT INTO Kisiler VALUES ('Ali', 'Çınar', 'Meram 24', 'Konya') SQL Veri Tanımlama Dili (Data Definition Language - DDL) Veri tanımlama dili tablo oluşturmak veya silmek için veri tabanına erişimi sağlar. CREATE TABLE – yeni bir tablo oluşturur CREATE DATABASE database_name ‘veri tabanı oluşturur. CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, ....... ) CREATE TABLE Person ( LastName varchar, FirstName varchar, Address varchar, Age int ) CREATE TABLE Person ( LastName varchar(30), FirstName varchar, Address varchar, Age int(3) ) Data Type Description integer(size) int(size) smallint(size) tinyint(size) Hold integers only. The maximum number of digits are specified in parenthesis. decimal(size,d) Hold numbers with fractions. numeric(size,d) The maximum number of digits are specified in "size". The maximum number of digits to the right of the decimal is specified in "d". char(size) Holds a fixed length string (can contain letters, numbers, and special characters). The fixed size is specified in parenthesis. varchar(size) Holds a variable length string (can contain letters, numbers, and special characters). The maximum size is specified in parenthesis. date(yyyymmdd) Holds a date ALTER TABLE – tabloyu değiştirmeyi sağlar. ALTER TABLE table_name ADD column_name datatype ALTER TABLE table_name DROP COLUMN column_name DROP TABLE – veritabanı veya tabloyu silmeyi sağlar. 33 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY DROP TABLE tablo_adı DROP DATABASE veritabanı_adı CREATE INDEX – indeks oluşturur (arama anahtarı) CREATE UNIQUE INDEX index_name ON table_name (column_name) CREATE INDEX index_name ON table_name (column_name) CREATE INDEX PersonIndex ON Person (LastName) CREATE INDEX PersonIndex ON Person (LastName DESC) CREATE INDEX PersonIndex ON Person (LastName, FirstName) DROP INDEX – indeks siler Syntax for Microsoft SQLJet (and Microsoft Access): DROP INDEX index_name ON table_name Syntax for MS SQL Server: DROP INDEX table_name.index_name Syntax for IBM DB2 and Oracle: DROP INDEX index_name Syntax for MySQL: ALTER TABLE table_name DROP INDEX index_name 34 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY ASP sayfasından veri tabanına erişim 1. 2. 3. 4. 5. 6. 7. Veri tabanına ADO bağlantısı oluştur Veri tabanı bağlantısını aç ADO kayıt kümesi(recordset) oluştur Kayıt kümesini(recordset) aç Kayıt kümesinden istediğin veriyi seç al. Kayıt kümesini kapat Bağlantıyı kapat ADO nedir? ADO bir Microsoft teknelojidir ADO - ActiveX Data Objects ADO bir Microsoft Active-X componentidir ADO IIS ile otomatik olarak kurulur ADO veri tabanı içinde veriye erişmeyi sağlayan bir proglamlama arayüzüdür DSN-siz veri tabanı bağlantısı oluşturma Öreneğin c sürücüsünde bulunan ornek.mdb veri tabanına erişmek için aşağıdaki kodlar kullanılabilir: <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/ornek.mdb" %> ODBC veri tabanı bağlantısı oluşturma ODBC’de veri1 adıyla oluşturulmuş olan bir veri tabanına bağlantı oluşturmak için aşağıdaki kodlar kullanılabilir: <% set conn=Server.CreateObject("ADODB.Connection") conn.Open "veri1" %> MS Access veri tabanını ODBC de tanımlama 1. 2. 3. 4. 5. 6. 7. Denetim masası/yönetimsel araçlar/veri kaynakları (ODBC) penceresini aç System DSN sekmesini seç. Sistem dsn tabından ekle butonuna tıkla Veri kaynağı oluştur penceresinden Microsoft Access Driver’ı seç. Son u tıkla. Sonraki pencerede veri kaynağı adı kısmına erişim için kullanılacak DSN(Data Source Name) ismini ver. seç butonuna tıklayarak veri tabanını seç. Tamam butonunu tıkla. ADO ile tablo kayıt kümesi oluşturma PHP sayfasından mysql veri tabanına erişim MySQL nedir? Mysql ilişkisel bir veri tabanı yönetim sistemidir. Verileri saklamak için farklı veri tabanları ve bu veri tabanlarında talolar oluşturma imkanı sağlar. Veri tabanında işlemler için SQL dilini kullanılmasını sağlar. Bir İsveç firması tarafından geliştirilmiştir ve bu gelişim sürdürülmektedir. Çok hızlı, güvenilir ve kullanımı kolaydır. Birçok programlama dili tarafından mysql veri tabanına erişilebilir. 60000'in üzerinde tablo, 5 milyarın üzerinde satır ile çalıştığı söylenen MySQL sistemler bulunuyor. MySQL'DE KULLANICILAR ve YETKİLENDİRME MySQL'de tüm kullanıcılar ve yetkileri, "mysql" isimli bir veritabanında tutulur. Bir kullanıcı iki parçadan oluşur : kullanici_ismi@bilgisayar_ismi (hostname). Bu ikiliyi MySQL tek bir kullanıcı olarak algılar. Yani ahmet@localhost ile ahmet@penguen aynı kullanıcılar değildir (localhost ve penguen aynı makinalar olsa dahi). Bir kullanıcının 4 yetki seviyesi vardır. Her yetki seviyesi için mysql isimli veritabanında birer tablo bulunur. Hiyerarşik olarak bu tablolar en genelden özele doğru tanımlama yapar. User tablosu : Bağlanan kullanıcının sunucuya bağlanma hakkı olup olmadığını kontrol eder. Eğer erişim hakkı varsa, kullanıcı tabloda kendisi için belirtilen yetkilere sahip olur. Db tablosu : Hangi kullanıcıların hangi veritabanlarına hangi bilgisayarlardan ulaşabileceğini belirler. Eğer kullanıcının ilgili veritabanına erişim hakkı varsa, tabloda kendisi için belirtilen yetkilere sahip olur. Tables_priv tablosu : Aynı db tablosu gibi çalışır, ancak veritabanları yerine içindeki tablolara erişimi düzenler. Columns_priv tablosu : Aynı db ve tables_priv tabloları gibi çalışır, ancak veritabanlarının içindeki tabloların içindeki kolonlara erişimi düzenler. mysql veritabanı | | user | | db | | tables_priv | | columns_priv Veri abanı bağlantısı oluşturulduktan sonra kayıt kümesi oluşturulabilir. Veri Tabanı adını ornek.mdb kabul edelim ve bu veri tabanındaki uyeler tablosuna bağlanmak için bu kodlar 35 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY kullanılabilir: phpMyAdmin <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/ornek.mdb" set rs=Server.CreateObject("ADODB.recordset") rs.Open "uyeler", conn %> ADO ile SQL kayıt kümesi oluşturma Ornek.mdb veri tabanındaki uyeler tablosuna SQL ile erişmek için: <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "ornek.mdb" set rs=Server.CreateObject("ADODB.recordset") rs.Open "Select * from uyeler", conn %> Kayıt kümesindeki verileri listelemek Kayıt kümesi açıldıktan sonra bu kümeden veri alınabilir: <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "ornek.mdb" set rs=Server.CreateObject("ADODB.recordset") rs.Open "Select * from uyeler", conn for each x in rs.fields response.write(x.name) response.write(" = ") response.write(x.value) next %> Bu kodlar sadece 1. kaydı göstermektedir. Tablodaki tüm kayıtları göstermek için: <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "ornek.mdb" set rs=Server.CreateObject("ADODB.recordset") rs.Open "Select * from uyeler", conn do until rs.eof for each x in rs.fields response.write(x.name) response.write(" = ") response.write(x.value) next Response.Write("<hr>") rs.movenext loop rs.close conn.close %> phpMyAdmin, özellikle MySQL'in web-veritabanı çözümlerde kullanımında her geçen gün defacto standart haline gelen yönetim arayüzüdür. Web üzerinden çalıştığı için bir ek istemci programa ihtiyaç duymaksızın, herhangi bir bilgisayardan uzaktaki MySQL sunucuyu yönetilebilir. "Root" olarak tüm bir MySQL sunucusunu yönetebileceğiniz gibi sadece belirli bir veritabanını da yönetebilirsiniz. phpMyAdmin hangi kullanıcı ismi ile veritabanına bağlanırsa, onun haklarına sahip olur. Birden fazla MySQL sunucusunu da, her birinin kendi ayarlarıyla tek bir phpMyAdmin ile yönetebilirsiniz. Türkçe de dahil olmak üzere 45+ dilde kullanılabilir. Her türlü kayıt ekleme, silme, değiştirme; veritabanı/tablo yaratma; kullanıcı açma/yetkilendirme; kısacası aklınıza gelen her şeyi phpMyAdmin ile SQL komutlarına ihtiyaç duymaksızın yapabilirsiniz. Veritabanının içeriğini SQL komutlarından oluşan bir dosyaya boşaltabilir, daha sonra o dosyadan veritabanını istediğiniz başka herhangi bir sunucuda oluşturabilirsiniz. Bu hazır tanımlanmış işlemlerin dışında her tür SQL komutunu kendiniz yazarak çalıştırabilir, phpMyAdmin'i tam bir SQL istemcisi gibi kullanabilirsiniz. MySQL veritabanına bağlanma Veriler üzerinde işlem yapabilmek için önclikle veritabanına bir bağlantı kurulmalıdır. PHP ile bağlantı için mysql_connect() fonksiyonu kullanılır. Mysql_connect(sunucuadı,kullanıcıadı,sifre); Parametre Açıklam sunuadı Seçmeli Varsayılan değeri "localhost:3306" kullanıcıadı Seçmeli Kullanıcı adını tanımlamayı sağlar. password Seçmeli tanımalanan kullanıcının şifresini belirtir. Örnek Aşağıdaki örnekte bağlantı değişkeni $bag’dır. Eğer bağlantı başarısız olursa die kısmı çalışır ve scripti sonlandırır: <?php $bag = mysql_connect("localhost","root",""); if (!$bag) { die('Bağlanılamadı: ' . mysql_error()); } // kodlar ?> Bağlantıyı kapatma Scriptin sonunda bağlantı kapatılmalıdır. Bağlantıyı kapatmak için on as the script ends. To close the connection before, mysql_close() fonksiyonu kullanılır. <?php $bag = mysql_connect("localhost","root",""); if (!$bag) { 36 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY Seçilen verileri gösterme Uyeler tablosundan uye adı S ile başlayan kayıtları bir tabloda göstermek için kullanılacak kodlar: <html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "ornek.mdb" set rs=Server.CreateObject("ADODB.recordset") sql="SELECT Uye_ad, Sifre FROM uyeler WHERE Uye_ad LIKE 'S%'" rs.Open sql, conn %> <table border="1" width="100%"> <tr> <%for each x in rs.Fields response.write("<th>" & x.name & "</th>") next%> </tr> <%do until rs.EOF%> <tr> <%for each x in rs.Fields%> <td><%Response.Write(x.value)%></td> <%next rs.MoveNext%> </tr> <%loop rs.close conn.close%> </table> </body> </html> Verileri Sıralama Sıralama yapmak için SQL cümlesinde ORDER BY deyimini kullanmak yeterlidir. Bu şekilde açılan kayıt kümesinde kayıtlar sıaralı olarak yer alacaktır. die('Bağlanılamadı: ' . mysql_error()); } // kodlar mysql_close($bag); ?> Veri tabanı oluşturma CREATE DATABASE deyimi veri tabanı oluşturmak için kullanılır. Syntax CREATE DATABASE veritabanı_adı bu deyimi çalıştırmak için mysql_query() fonksyonu kullanılır. Bu fonksiyon mysql bağlantısına sorgu veya komut göndermek için kullanılır. Örnek Aşağıdaki kodlarla deneme adlı veri tabanı oluşturulmaktadır: <?php $bag = mysql_connect("localhost","root",""); if (!$bag) { die('Bağlanılamadı: ' . mysql_error()); } if (mysql_query("CREATE DATABASE deneme",$bag)) { echo "Veri tabanı oluşturuldu"; } else { echo "Veri tabanı oluşturulurken hata oluştu: " . mysql_error(); } mysql_close($bag); ?> Select * from uyeler [where ……..] order by Uye_ad,… Tablo oluşturma Tabloya kayıt ekleme Kayıt eklemek için iki ayrı sayfa kullanılacaktır. 1. sayfada kullanıcı uye ad ve sifre girecek 2. sayfada ise girilen bilgiler alınarak SQL komutu kullanılarak tabloya eklenecektir. 1 sayfanın(k_gir.asp) ekran görünümü ve kodları aşağıdaki gibidir: CREATE TABLE deyimi mysql de tablooluşturmak için kullanılır. Sintaks CREATE TABLE tablo_adı ( sütun_adı veri_tipi, sütun_adı veri_tipi, sütun_adı veri_tipi, ....... ) CREATE TABLE deyimini mysql_query() fonksiyonunu kullanarak çalıştırmalıyız. Örnek Aşağıdaki örnekte kisiler adlı 3 sütunlu bir tablo oluşturulmaktadır. Sütun adları ad, soyad ve yas ‘tır: 37 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY İkinci sayfanın(kaydet.asp) kodları aşağıdaki gibidir: <?php $bag = mysql_connect("localhost","root",""); if (!$bag) { die('Bağlanılamadı: ' . mysql_error()); } // Veritabanı oluştur if (mysql_query("CREATE DATABASE deneme",$bag)) { echo "Veritabanı oluşturuldu"; } else { echo "Hata : " . mysql_error(); } // deneme veritabanında tablo oluştur mysql_select_db("deneme", $bag); $sql = "CREATE TABLE kisiler ( Ad varchar(15), Soyad varchar(15), Yas int )"; mysql_query($sql,$bag); mysql_close($bag); ?> Açıklama: tablo oluşturulmadan veritabanı seçilmelidir. Veri tabanını seçmek için mysql_select_db() fonksiyonu kullanılır. Not: alan veri türü varchar yapıldığında parantez içerisinde maksimum uzunluk belirtilir. Ör: varchar(15). MySQL Veri Tipleri Mysql’de kullanılabilecek veri türleri: Sayısal veri tipleri Açıklama int(size) smallint(size) tinyint(size) mediumint(size) bigint(size) Sadece tamsayıları tutar. Parantez içinde maksimum hane sayısı belirtilir. decimal(size,d) double(size,d) float(size,d) Gerçel sayıları tutar. Maksimum hane sayısı siz parametresinde belirtilir.ondalık kısımdaki hane sayısı d parametresinde belirtilir. Kayıt Güncelleştirme Metinsel veri türleri Kayıt güncelleme için yine 2 sayfa yapmamız gerekmektedir. char(size) Birinci sayfa tablodaki kayıtları listeleyecek ve güncellemek istediğimiz kaydın sçilmesini sağlayacaktır. Seçilen kaydın ID’si diğer sayfaya aktarılacak ve bu sayfada seçilen kaydın bilgilerini veri düzenlememize imkan sağlamak için textfield varchar(size) içerisinde gösterecektir. Burada düzenlemeler yapıldıktan sonra güncelle butonuna tıklandığında aynı sayfada yer alan güncelleme kısmı çalışacak ve veriler tabloya yazılacaktır. Açıklama Birinci sayfa(gun1.asp): tinytext Maksimum 255 karakter uzunluğunda metin saklar. <html> text blob Değişken uzunlukta metin saklar. maksimum 65535 karakter Sabit uzunlukta metin tutar(harfler, rakamlar, ve özel karakterler). Size parametresinde uzunluk belirtilir. Değişken uzunlukta metin saklanmasını sağlar(harfler, rakamlar, ve özel karakterler). Meksimum karakter sayısı size parametresinde belirtilir. 38 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" yol=server.MapPath("kisi_2000.mdb") conn.Open yol set rs=Server.CreateObject("ADODB.Recordset") rs.open "SELECT * FROM uyeler",conn %><h2>List Database</h2> <table border="1" width="100%"> <tr> <% for each x in rs.Fields response.write("<th>" & ucase(x.name) & "</th>") next %> </tr> mediumtext mediumblob Değişken uzunlukta metin saklar. Maksimum 16777215 karakter longtext longblob Değişken uzunlukta metin saklar. Maksimum 4294967295 karakter Tarih veri türleri Açıklama date(yyyy-mm-dd) Tarih veya saat tutar. datetime(yyyy-mm-dd hh:mm:ss) timestamp(yyyymmddh hmmss) time(hh:mm:ss) Karışık(misc.) veri Açıklama türü enum(value1,value2,ect ENUM kısa sıralanmış listedir. Can ) store one of up to 65535 values listed within the ( ) brackets. If a value is inserted that is not in the list, a blank value will be inserted set SET ENUM gibidir. However, SET can have up to 64 list items and can store more than one choice <% do until rs.EOF %> <tr> <form method="post" action="gun2.asp"> <% for each x in rs.Fields if lcase(x.name)="id" then%> <td> <input type="submit" name="id" value="<%=x.value%>"> </td> <%else%> <td><%Response.Write(x.value)%></td> <%end if next %> </form> <%rs.MoveNext%> </tr> <% loop conn.close %> Birincil anahatarlar ve otomatik artırmalı alanlar Her tablo bir birincil anahtar içermelidir. Birincil anahtar tabloda satırları(kayıt) tanımlamak için kullanılır. Tablodaki her birincil anahtar benzersiz olmalıdır. Bunun yanında birincil anahtar alanı boş(null) olamaz çünkü veritabanı motoru kaydın yerleşimi için bir değere ihtiyaç duyar. Birincil anahtar daima indeksdir. Bu kural dışına çıkılamaz. Birincil anahtara göre indeks yapılır böylece veritabanı motoru hızlıca satıra konumlanabilir. Aşağıdaki örnekte kişiID alanı birincil anahtardır. Birincil anahtar sıklıkla ID içerir ve otomatik artan(auto increment) olarak ayarlanır. Otomatik artan alan her kayıt eklendiğinde değeri 1 artar. Böylece anahtar alan boş değer içermez. Örnek $sql = "CREATE TABLE kisiler ( kisiID int NOT NULL AUTO_INCREMENT, PRIMARY KEY(kisiID), Ad varchar(15), Soyad varchar(15), Yas int )"; mysql_query($sql,$con); </table> </body> UYGULAMA 1: Kütüphane işlemleri için bir veritabanı </html> oluşturalım. İnternet üzerinden kütüphanelerde ne tür işlemler yapıldığını düşünerek gerek li tabloları, sorguları ve gerekli işlemlerin web üzerinden yapılmasını sağlayan siteyi yapalım. Site Adımız: Kütüphane Veri tabanı adı: Kutuphane Tablolar: 1. Kitap Alanlar ve veri türleri: İkinci sayfa(gun2.asp): <html> <body><h2>Update Record</h2> <% ID varchar(30) 39 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY set conn=Server.CreateObject("ADODB.Connection") K_ad varchar(200) conn.Provider="Microsoft.Jet.OLEDB.4.0" Yazari varchar(100) yol=server.MapPath("kisi_2000.mdb") Icindekiler blob conn.Open yol T_adet int(3) cid=cint(Request.Form("id")) M_adet tinyint(3) if Request.form("Uye_ad")="" then Yer varchar(20) K_türü varchar(50) set rs=Server.CreateObject("ADODB.Recordset") rs.open "SELECT * FROM uyeler WHERE ID=" & cid ,conn Bu tablo kütüphanemizdeki tüm kitapların listesini tutacaktır. Kitap arama, içindekilere göre arama, mevcut durumu gibi işlemler bu tablo üzerinden yapılacaktır. Bu tabloya kayıt girilmesi ziyaretçiler tarafından yapılmayacaktır. Ancak tüm bilgilerin personel tarafından girilmesi gerekmektedir. Bu durumda bu tabloya kayıt girişi için gerekli php sayfası admin kısmında yer almalıdır. Biz yinede kayıt girişinin nasıl olduğunu görmek için gerekli sayfayı yapalım. Veri tabanını ve tabloyu PhpMyAdmin aracılığıyla oluşturalım name="<%=x.name%>" Kayıt girişi: Kayıt girişi için 2 sayfa kullanılacaktır. Birincisi %> <form method="post"> <table> <%for each x in rs.Fields%> <tr> <td><%=x.name%></td> <td><input value="<%=x.value%>"></td> kayit_gir.php ikincisi kitap_kaydet.php sayfasıdır. Kitap_gir.php sayfasının ekran görünümü: <%next%> </tr> </table> <br /><br /> <input name="submit" type="submit" id="submit" value="Kaydı Güncelle"> </form> <% else sql="UPDATE uyeler SET " sql=sql & "Uye_ad='" & Request.Form("Uye_ad") & "'," sql=sql & "Sifre='" & Request.Form("Sifre") & "'" sql=sql & " WHERE ID=" & cid on error resume next conn.Execute sql if err<>0 then response.write("No update permissions!") else response.write("Record " & cidx & " was updated!") end if end if conn.close %></body> </html> Kayıt Silme Birinci sayfa(sil1.asp) <html> <body> <% Kitap_kaydet.php <?php $barkod=$_POST["barkod"]; $k_adi=$_POST["kad"]; $yazari=$_POST["yazar"]; $icindekiler=$_POST["icindekiler"]; $t_adet=$_POST["tad"]; $m_adet=$_POST["mad"]; $yeri=$_POST["yer"]; $turu=$_POST["tur"]; $vt=mysql_connect("localhost","fazil","123"); if (!$vt){die('Bağlantı Kurulamadı '.mysql_error()); mysql_select_db("kutuphane",$vt); $sql = "INSERT INTO kitap (ID, K_ad, Yazari, Icindek K_türü) VALUES ('$barkod', '$k_adi', '$yazari', '$icindekile '$yeri', '$turu')"; mysql_query($sql,$vt); mysql_close($vt); 40 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" yol=server.MapPath("kisi_2000.mdb") conn.Open yol set rs=Server.CreateObject("ADODB.Recordset") rs.open "SELECT * FROM uyeler",conn %><h2>List Database</h2> <table border="1" width="100%"> <tr> <% for each x in rs.Fields response.write("<th>" & ucase(x.name) & "</th>") next %> </tr> <% do until rs.EOF %> <tr> <form method="post" action="sil2.asp"> <% for each x in rs.Fields if x.name="ID" then%> <td> <input name="ID" type="submit" id="ID" value="<%=x.value%>"> </td> <%else%> <td><%Response.Write(x.value)%></td> <%end if ?> Kitap_listele.php Bu sayfa veri tabanında kayıtlı tüm kitapları listelemektedir. Kodları aşağıdaki gibidir: <?php $bag=mysql_connect("localhost","fazil","123"); if (!$bag){die ('Bağlanılamadı'.mysql_error());} mysql_select_db("kutuphane",$bag); $veriler=mysql_query("select * from kitap"); echo "<table border='1' align='center' width='600'>"; echo "<tr>"; while ($alan = mysql_fetch_field($veriler)) { echo "<th>".$alan->name . "</th>"; } echo "</tr>"; while($row = mysql_fetch_array($veriler)) { echo "<tr>"; echo "<td>".$row['ID'] . "</td><td>" . $row['K_ad']. "</td><td>" . $row['Yazari']. "</td><td>" . $row['Icindekiler']. "</td><td>" . $row['T_adet']. "</td><td>" . $row['M_adet']. "</td><td>" . $row['Yer']. " </td><td> " . $row['K_türü']."<td>"; echo "</tr>"; } echo "</table>"; echo "<hr>"; mysql_close($bag); ?> Duzenle_Sil.php Düzenle_sil sayfasının ekran görünümü aşağıdaki gibidir. Düzenle sütunundaki resme tıklandığında düzenle.php sayfası açılmaktadır. Sil sütunudaki resme tıklandığında ilgili kayıt silinmektedir. next %> </form> <%rs.MoveNext%> </tr> <% loop conn.close %> </table></body> </html> İkinci sayfa(sil2.asp) <html> <body><h2>Delete Record</h2> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" yol=server.MapPath("kisi_2000.mdb") conn.Open yol <?php $bag=mysql_connect("localhost","fazil","123"); if (!$bag){die ('Bağlanılamadı'.mysql_error());} mysql_select_db("kutuphane",$bag); $veriler=mysql_query("select * from kitap order by ID"); echo "<table border='1' align='center' width='600' cellpadding='3' cellspacing='0'>"; echo "<tr>"; echo "<th>Düzenle</th>"; echo "<th>Sil</th>"; while ($alan = mysql_fetch_field($veriler)) { echo "<th>".$alan->name . "</th>"; } echo "</tr>"; while($row = mysql_fetch_array($veriler)) 41 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY cid=cint(Request.Form("id")) if Request.form("Uye_ad")="" then set rs=Server.CreateObject("ADODB.Recordset") rs.open "SELECT * FROM Uyeler WHERE ID=" & cid ,conn %> <form method="post" action=""> <table> <%for each x in rs.Fields%> <tr> <td><%=x.name%></td> <td><input name="<%=x.name%>" value="<%=x.value%>"></td> <%next%> </tr> { echo "<tr>"; echo "<td align='center' valign='middle'><a href='duzenle.php?id=".$row['ID']."'><img src='edit.png' width='25' height='25' alt='Düzenle'></a></td>"; echo "<td align='center' valign='middle'><a href='sil.php?id=".$row['ID']."'><img src='editdelete.png' width='25' height='25' alt='Sil'></a></td>"; echo "<td>".$row['ID'] . "</td><td>" . $row['K_ad']. "</td><td>" . $row['Yazari']. "</td><td>" . $row['Icindekiler']. "</td><td>" . $row['T_adet']. "</td><td>" . $row['M_adet']. "</td><td>" . $row['Yer']. " </td><td> " . $row['K_türü']."<td>"; echo "</tr>"; } echo "</table>"; mysql_close($bag); ?> Duzenle.php </table> <br /><br /> <input type="submit" value="Delete record"> </form> <% else sql="DELETE FROM uyeler" sql=sql & " WHERE ID=" & cid on error resume next conn.Execute sql if err<>0 then response.write("No update permissions!") else response.write("Record " & cid & " was deleted!") end if end if conn.close %></body> </html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-88599"> <title>Untitled Document</title> <style type="text/css"> <!-.style1 { font-size: 12px; font-weight: bold; } --> </style> </head> 42 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY <body> <?php $bag=mysql_connect("localhost","fazil","123"); if (!$bag){die ('Ba lanılamadı'.mysql_error());} mysql_select_db("kutuphane",$bag); $sorgu="select * from kitap where ID='".$_REQUEST["id"]."'"; $veriler=mysql_query($sorgu); $kayit=mysql_fetch_assoc($veriler); ?> <form action="duzenle_kaydet.php" method="post" enctype="multipart/form-data" name="form1"> <table width="443" border="1" align="center" cellpadding="5" cellspacing="0"> <tr> <th scope="col"><div align="left" class="style1">Barkod</div></th> <th scope="col"><div align="left"> <input name="barkod" type="text" id="barkod" value="<?php echo $kayit['ID']; ?>" size="50"> <input name="bar" type="hidden" id="bar" value="<?php echo $kayit['ID']; ?>"> </div></th> </tr> <tr> <td><div align="left" class="style1">Kitap Adı </div></td> <td><div align="left"> <input name="kad" type="text" id="kad" value="<?php echo $kayit['K_ad']; ?>" size="50"> </div></td> </tr> <tr> <td><span class="style1">Yazarı</span></td> <td><input name="yazar" type="text" id="yazar" value="<?php echo $kayit['Yazari']; ?>" size="50"></td> </tr> <tr> <td><span class="style1"> çindekiler</span></td> <td><p> <textarea name="icindekiler" cols="50" rows="8" id="icindekiler"><?php echo $kayit['Icindekiler']; ?></textarea> </p> </td> </tr> <tr> <td><span class="style1">Toplam Adet </span></td> <td><input name="tad" type="text" id="tad" value="<?php echo $kayit['T_adet']; ?>" size="10"></td> </tr> <tr> 43 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY <td><span class="style1">Mevcut Adet </span></td> <td><input name="mad" type="text" id="mad" value="<?php echo $kayit['M_adet']; ?>" size="10"></td> </tr> <tr> <td><span class="style1">Yeri</span></td> <td><input name="yer" type="text" id="yer" value="<?php echo $kayit['Yer']; ?>" size="50"></td> </tr> <tr> <td><span class="style1">Türü</span></td> <td><input name="tur" type="text" id="tur" value="<?php echo $kayit['K_türü']; ?>" size="50"></td> </tr> </table> <p align="center">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb sp;&nbsp; <input type="image" name="Submit" value="Submit" src="kaydet.gif"> </p> </form> </body> </html> Duzenle_kaydet.php <?php $barkod=$_POST["barkod"]; $k_adi=$_POST["kad"]; $yazari=$_POST["yazar"]; $icindekiler=$_POST["icindekiler"]; $t_adet=$_POST["tad"]; $m_adet=$_POST["mad"]; $yeri=$_POST["yer"]; $turu=$_POST["tur"]; $vt=mysql_connect("localhost","fazil","123"); if (!$vt){die('Bağlantı Kurulamadı '.mysql_error());}//die kodları sonlandırır. mysql_select_db("kutuphane",$vt); $sql = "UPDATE kitap SET ID='$barkod',K_ad='$k_adi',Yazari='$yazari', Icindekiler='$icindekiler',T_adet='$t_adet',M_adet='$m_adet',Yer ='$yeri',K_türü='$turu' WHERE ID='".$_REQUEST["bar"]."'"; mysql_query($sql,$vt); mysql_close($vt); ?> Sil.php <?php $bag=mysql_connect("localhost","fazil","123"); if (!$bag){die('bağlanamadı'.mysql_error());} mysql_select_db("kutuphane",$bag); $silid=$_REQUEST["id"]; $sorgu="DELETE FROM kitap WHERE ID='".$silid."'"; mysql_query($sorgu); mysql_close($bag); ?> 44 Akören Ali Rıza Ercan M.Y.O. Öğr. Gör. Fazıl SARAY 45