FORM ALANLARININ DOLULUĞUNUN KONTROL EDİLMESİ
Bir form oluşturduğum zaman istediğimiz alanların doldurulup doldurulmadığını kontrol etmemiz gerekir. Bunun için form alanının değerini sıfır uzunluğundaki bir stringle karşılaştırırız. Şimdi ekle2.asp’ye bir formHata isimli bir altrutin ekleyeceğiz:

<%@ Language=VBScript %>
‘Hata olduğunda çalışacak altrutin
<%
SUB formHata(Hata)
%>

<html>
<head><title>Hata</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=windows-1254″>
</head>

<body bgcolor=”#ECF5FF” text=”#000000″>

‘Bu kısım hatanın ne olduğunu ekrana yazdırır
<%=Hata%>
‘bizi ekle.asp’ye gönderecek buton
<form name=”hata” method=”post” action=”ekle.asp”>

<input type=”submit” name=”Submit” value=”Geri”>

</form>

</body>
</html>
<%
‘Response.End scripin çalışmasını durdurur, böylece sadece hata mesajının görüntülenmesi sağlanır.
Response.End
End SUB
%>

<%

KitapAdi=TRIM(Request(”KitapAdi”))
Yazari=TRIM(Request(”Yazari”))
YEvi=TRIM(Request(”YEvi”))
Fiyati=TRIM(Request(”Fiyati”))
Aciklama=TRIM(Request(”Aciklama”))

If YEvi=”" Then
YEvi=”???”
End If

If Aciklama=”" Then
Aciklama=”???”
End If

set Con=server.CreateObject(”ADODB.Connection”)
Con.open “DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=” & Server.MapPath(”/wwwliste/db.mdb”)

%>

<html>
<head>
<title>ekle2.asp</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=windows-1254″>
</head>

<body bgcolor=”#ECF5FF” text=”#000000″>
<%
‘Gerekli alanların doluluğu kontrol edilir. Alanlar boş değilse kayıt işlenir
If (KitapAdi<>”" and Yazari<>”" and Fiyati<>”") Then

sqlString = “INSERT INTO liste ” &_
“( KitapAdi, YEvi, ” &_
“Fiyati ) VALUES ( ” &_
” ‘” & KitapAdi & “‘, ” &_
” ‘” & YEvi & “‘, ” &_
” ‘” & Fiyati & “‘)”
Con.Execute sqlString

sqlString2 = “INSERT INTO ayrinti ” &_
“( Yazari, Aciklama ) VALUES ( ” &_
” ‘” & Yazari & “‘, ” &_
” ‘” & Aciklama & “‘)”
Con.Execute sqlString2

%>

<table width=”100%” border=”0″ align=”center”>
<tr>
<td><font color=”#CC3300″><b><%=KitapAdi%></b></font> kaydedildi</td>
</tr>
</table>
‘Şart sağlanmıyorsa altrutine ilgili hata gönderilir
<%
Else
If KitapAdi=”" Then
formHata “Kitap adını girmediniz!”
End If

If Yazari=”" Then
formHata “Kitap yazarını girmediniz!”
End If

If Fiyati=”" Then
formHata “Kitap fiyatını girmediniz!”
End If

End If
%>

</body>
</html>


FORM ALANLARININ TEKRAR GÖRÜNTÜLENMESİ
Uzun bir form doldurduğunuzu düşünün, sonra da bir hata mesajı aldığınızı. Zorunlu alanlardan biri gözünüzden kaçmış. Geri dönüp bütün formu tekrar doldurmak oldukça sıkıcı olsa gerek. Bu problemi çözmek için ekle.asp ve ekle2.asp de değişiklik yapmamız gerekiyor.

Ekle2.asp’de, hata oluştuğunda çalışan formHata altrutinini değiştirmemiz gerekiyor. Bizi ekle.asp’ye geri döndüren formumuza form alanlarına girdiğimiz bilgilerinde geri döndürülmesi için aşağıdaki döngüyü ekleyelim:

<%=Hata%>

<form name=”hata” method=”post” action=”ekle.asp”>

<% For Each item In Request.Form %>
<input type=”hidden” name=”<%=item%>” value=”<%=Server.HTMLEncode(Request.Form(item))%>”>
<% Next %>

<input type=”submit” name=”Submit” value=”Geri”>
</form>

Bu script formdaki her bir öğe için gizli bir alan oluşturuyor. Geri butonu tıklandığında bütün form verileri gizli olarak ekle.asp’ye geri döndürülüyor.
Son olarak, ekle.asp’de de değişiklik yapmalıyız:

‘ekle2.asp’den alınan değerler değişkenlere atanıyor.
<%
KitapAdi=TRIM(Request.Form(”KitapAdi”))
Yazari=TRIM(Request.Form(”Yazari”))
YEvi=TRIM(Request.Form(”YEvi”))
Fiyati=TRIM(Request.Form(”Fiyati”))
Aciklama=TRIM(Request.Form(”Aciklama”))
%>

<html>
<head>
<title>Kayıt Ekle</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=windows-1254″>
</head>

<body bgcolor=”#ECF5FF” text=”#000000″>
<form name=”kekle” method=”post” action=”ekle2.asp”>
<table width=”100%” border=”0″>
<tr>
<td colspan=”3″ bgcolor=”#FF6600″ height=”11″>
<div align=”center”>
<p><b><font color=”#FFFFFF”>Kayıt Ekleme Formu<br>
</font></b><font color=”#FFFFFF”><font size=”1″>(*) alanlar zorunlu</font></font></p>
</div>
</td>
</tr>
<tr>
<td width=”24%”>Kitap Adı*:</td>
<td colspan=”2″>
<input type=”text” name=”KitapAdi” size=”30″ maxlength=”50″ style=”color: #006FA4; font-family: Tahoma; font-size: 8pt; border-style: solid; border-width: 1″ value=”<%= KitapAdi%>”>
</td>
</tr>
<tr>
<td width=”24%”>Yazarı*:</td>
<td colspan=”2″>
<input type=”text” name=”Yazari” size=”25″ maxlength=”50″ style=”color: #006FA4; font-family: Tahoma; font-size: 8pt; border-style: solid; border-width: 1″ value=”<%= Yazari%>”>
</td>
</tr>
<tr>
<td width=”24%”>Yayın Evi:</td>
<td colspan=”2″>
<input type=”text” name=”YEvi” size=”20″ maxlength=”50″ style=”color: #006FA4; font-family: Tahoma; font-size: 8pt; border-style: solid; border-width: 1″ value=”<%= YEvi%>”>
</td>
</tr>
<tr>
<td width=”24%”>Fiyatı*:</td>
<td colspan=”2″>
<input name=”Fiyati” type=”text” size=”10″ maxlength=”25″ style=”color: #006FA4; font-family: Tahoma; font-size: 8pt; border-style: solid; border-width: 1″ value=”<%= Fiyati%>”>
</td>
</tr>
<tr>
<td width=”24%”>Açıklama:</td>
<td colspan=”2″>
<textarea name=”Aciklama” wrap=”VIRTUAL” rows=”5″ cols=”35″ style=”color: #006FA4; font-family: Tahoma; font-size: 8pt; border-style: solid; border-width: 1″><%= Aciklama%></textarea>
</td>
</tr>

Orijinal form verileri ekle2.asp’deki gizli form alanlarından alınıyor.Her form alanına value özelliğinin eklendiğine dikkat edin. Bu özellik orjinal form alanlarının tekrar görüntülenmesi için kullanılıyor.

BİR KAYDI GÜNCELLEMEK
Yeni kayıtlar ekledik. Peki ürün bilgilerimizde değişiklik olursa ne olacak? Elbette kayıtların güncellenmesi gerekecek. Bunun için UPDATE SQL ifadesini kullanacağız. Genel yazılımı:

UPDATE tablo_adi SET sutun_adi=ifade WHERE anahtar_sutun_adi=ifade

Burada tablo_adi güncellenecek kaydın bulunduğu tablonun adını, sutun_adi ise güncellenecek kaydın bulunduğu sütunu temsil etmektedir. anahtar_sutun_adi güncellenecek kaydın sütununun belirlenmesini sağlıyor. Buradaki sütun adı bir kaydı diğerinden ayıran bir değer olmalıdır. Bizim örneğimizdeki KayitID gibi. Her ürünün farklı bir KayitID değeri vardır.

İlk önce ayrinti.asp’de gerekli değişiklikleri yapalım:

<tr>
<td width=”13%”>Fiyatı:</td>
<td width=”23%”><%=rs.Fields.Item(”Fiyati”)%> TL</td>
</tr>

</table>

<table width=”100%” border=”0″>
<tr>
<td><a href=”guncelle.asp?kid=<%=RS(”KayitID”)%>”>Güncelle</a></td>
</tr>
<%RS2.MoveNext
wend
%>
<%RS.MoveNext
wend
%>
</table>

</body>
</html>


Burada bir “Güncelle” linki oluşturuyoruz ve bu linkin bulunduğumuz kaydın bilgilerini gösterecek şekilde ayarlıyoruz.

Şimdi de bahsettiğimiz guncelle.asp sayfasını tasarlayalım. Bu sayfa, ayrintilar.asp sayfasında “Güncelle” linki tıklandığında ayrinti.asp’deki gösterilen ürünün bilgilerini gösteren bir form içeriyor. Burada değişiklik yapılıyor ve Güncelle butonuna bastığımızda kayıt güncelleniyor. guncelle.asp ekle.asp’ye çok benziyor. Fakat bazı farklılıkları var:

<%@Language=VBScript%>

<!–#Include file=”adovbs.inc”–>
‘Geçerli ürünün KayitID’sini bir önceki sayfadan al.
‘Buraya ayrinti.asp’den geldik. O da geçerli ID’yi index.asp’den almıştı
<%
KaID=TRIM(Request(”kid”))

‘Veritabanı bağlantısını oluştur.
set Con=server.CreateObject(”ADODB.Connection”)
Con.open “DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=” & Server.MapPath(”/wwwliste/db.mdb”)

‘Bağlantı aç
‘Burada, iki tablo kullandığımız için her iki tablo için kayıtseti oluşturuyoruz
‘Where SQL ifadesi veritabanımızdan KayitID’si KaID’ye yani geçerli kayda eşit olan kaydı çekiyor.

‘Kayıt güncellerken adLockOptimistic imleç türü seçilir. İmleç türü kayıtseti açılmadan belirtilir.
‘İmleç türünü kullanabilmek için “adovbs.inc” dosyası sayfaya dahil edilir.

sqlString= “select * from liste where KayitID=” & KaID
set RS = server.CreateObject(”ADODB.Recordset”)
RS.CursorType= adLockOptimistic
RS.ActiveConnection=Con
RS.Open sqlString

%>

<%

sqlString= “select * from ayrinti where KayitID=” & KaID
set RS2 = server.CreateObject(”ADODB.Recordset”)
RS2.CursorType= adLockOptimistic
RS2.ActiveConnection=Con
RS2.Open sqlString

%>

<%
‘Kayıt sonu değilse değişkenleri ata
‘Parantez kullanıyoruz çünkü şartımız her iki kayıtseti için geçerli
If Not (RS.EOF and RS2.EOF) Then

KitapAdi=rs.Fields.Item(”KitapAdi”)
Yazari=rs2.Fields.Item(”Yazari”)
YEvi=rs.Fields.Item(”YEvi”)
Fiyati=rs.Fields.Item(”Fiyati”)
Aciklama=rs2.Fields.Item(”Aciklama”)
End If

‘Kayıtsetlerini kapat
RS.Close
RS2.Close
%>

<HTML>
<HEAD>
<META NAME=”GENERATOR” Content=”Microsoft Visual Studio 6.0″>
</HEAD>
<BODY bgcolor=”#ECF5FF” text=”#000000″>
<form name=”kekle” method=”post” action=”guncelle2.asp”>
<table width=”100%” border=”0″>
<tr>
<td colspan=”3″ bgcolor=”#FF6600″ height=”11″>
<div align=”center”>
<p><b><font color=”#FFFFFF”>Kayıt Güncelleme Formu<br>
</font></b><font color=”#FFFFFF”><font size=”1″>(*) alanlar zorunlu</font></font></p>
</div>
</td>
</tr>
<tr>
<td width=”24%”>Kitap Adı*:</td>
<td colspan=”2″>
<input type=”text” name=”KitapAdi” size=”30″ maxlength=”50″ style=”color: #006FA4; font-family: Tahoma; font-size: 8pt; border-style: solid; border-width: 1″ value=”<%=Server.HTMLEncode(KitapAdi)%>”>
</td>
</tr>
<tr>
<td width=”24%”>Yazarı*:</td>
<td colspan=”2″>
<input type=”text” name=”Yazari” size=”25″ maxlength=”50″ style=”color: #006FA4; font-family: Tahoma; font-size: 8pt; border-style: solid; border-width: 1″ value=”<%=Server.HTMLEncode(Yazari)%>”>
</td>
</tr>
<tr>
<td width=”24%”>Yayın Evi:</td>
<td colspan=”2″>
<input type=”text” name=”YEvi” size=”20″ maxlength=”50″ style=”color: #006FA4; font-family: Tahoma; font-size: 8pt; border-style: solid; border-width: 1″ value=”<%=Server.HTMLEncode(YEvi)%>”>
</td>
</tr>
<tr>
<td width=”24%”>Fiyatı*:</td>
<td colspan=”2″>
<input name=”Fiyati” type=”text” size=”10″ maxlength=”25″ style=”color: #006FA4; font-family: Tahoma; font-size: 8pt; border-style: solid; border-width: 1″ value=”<%=Server.HTMLEncode(Fiyati)%>”>
TL </td>
</tr>
<tr>
<td width=”24%”>Açıklama:</td>
<td colspan=”2″>
<textarea name=”Aciklama” wrap=”VIRTUAL” rows=”5″ cols=”35″ style=”color: #006FA4; font-family: Tahoma; font-size: 8pt; border-style: solid; border-width: 1″><%=Server.HTMLEncode(Aciklama)%></textarea>
</td>
</tr>
<tr>
<td width=”24%”>&nbsp;</td>
<td width=”7%”>
<input type=”submit” name=”btnGuncelle” value=”Güncelle” style=”color: #006FA4; font-family: Tahoma; font-size: 10pt; border-style: solid; border-width: 1″>
</td>
<td width=”69%”>&nbsp;</td>
</tr>
</table>
KayitID’yi tutan gizli alan
<input type=”hidden” name=”KitapID” value=”<%=KaID%>”>
<input type=”hidden” name=”guncelle” value=”1″>
</form>

</BODY>
</HTML>

Dikkat ettiniz mi? Değişkenler görüntülenmeden önce HTMLEncode metodunu kullandık. Bu metot değişkenleri HTML için kodlar. Örneğin HTML (”) tırnak işaretlerini bir stringin başlangıcı ve bitişi olarak kabul eder. Eğer değişkenlerimizin birinde (”) tırnak işareti olsaydı değişken düzgün görüntülenemezdi. (Örneğin; Kitap Adı: Çağ; “Bil?”gi çağı . Tırnak işaretleri sringin sonunun yanlış işaretlenmesine yol açacaktı). HTMLEncode her tırnak işaretini &quot HTML koduyla değiştirir. Bu, tırnak işaretlerinden doğacak problemi önler.

Guncelle2.asp

<%@ Language=VBScript %>

<%
‘UPDATE stirnginden kaynaklanan (’) tek tırnak problemini çözmek için bu fonksiyon kullanılır.
‘Tek tırnak işareti çift tırnakla değiştirilir.
Function tirnak(string)
tirnak=Replace(string,”‘”,”””)
End Function

KaID=TRIM(Request(”KitapID”))
KitapAdi=TRIM(Request(”KitapAdi”))
Yazari=TRIM(Request(”Yazari”))
YEvi=TRIM(Request(”YEvi”))
Fiyati=TRIM(Request(”Fiyati”))
Aciklama=TRIM(Request(”Aciklama”))

If YEvi=”" Then
YEvi=”???”
End If

If Aciklama=”" Then
Aciklama=”???”
End If

set Con=server.CreateObject(”ADODB.Connection”)
Con.open “DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=” & Server.MapPath(”/wwwliste/db.mdb”)

%>

<HTML>
<HEAD>
<META NAME=”GENERATOR” Content=”Microsoft Visual Studio 6.0″>
</HEAD>
<BODY bgColor=#ECF5FF>

<%

‘Zorunlu alanlar doldurulmuşsa kaydı güncelle
‘formHata altrutinini bu forma da ekleyebilirsiniz

If (KitapAdi<>”" and Yazari<>”" and Fiyati<>”") Then

‘ KitapAdi= -veritabanımızdaki alan adı-
‘tirnak fonksiyonunun içindeki değerler ise formdaki alan değerlerini temsil eden değişkenlerimizdir.
‘Böylece KayitID değeri bulunduğumuz değer olan ürün güncellenir.
sqlString = “UPDATE liste SET ” &_
“KitapAdi=’” & tirnak( KitapAdi ) & “‘,” &_
“YEvi=’” & tirnak( YEvi ) & “‘,” &_
“Fiyati=’” & tirnak( Fiyati ) & “‘” &_
“WHERE KayitID=” & KaID

Con.Execute sqlString

sqlString2 = “UPDATE ayrinti SET ” &_
“Yazari=’” & tirnak( Yazari ) & “‘,” &_
“Aciklama=’” & tirnak( Aciklama ) & “‘” &_
“WHERE KayitID=” & KaID

Con.Execute sqlString2

%>

<table width=”100%” border=”0″ align=”center”>
<tr>
‘Güncellenen ürünün adı görüntülenir.
<td><font color=”#CC3300″><b><%=KitapAdi%></b></font> güncellendi</td>
</tr>
</table>

<%
End If
%>
</BODY>
</HTML>

Favorilerinize Ekleyin.
  • BlinkList
  • del.icio.us
  • Digg
  • Netvouz
  • DZone
  • ThisNext
  • MisterWong
  • Wists
  • blogmarks
  • Furl
  • Netscape
  • NewsVine
  • Reddit
  • Shadows
  • Technorati
  • YahooMyWeb
  • Fark
  • feedmelinks
  • Fleck
  • kick.ie
  • LinkaGoGo
  • Linkter
  • MyShare
  • Spurl
  • Webride