• 01-04-2008, 16:42:15
    #10
    Eposta Aktivasyonu Gerekmekte
    AspHttp şuanda başka sitelerden bilgi almak için kullanılan
    bileşenlerin arasında benim en iyisi olarak gördüğüm bir bileşendir.
    AspTear ve XmlHttp ile başka web istelerinden bilgi alımı yapılabilir ama
    kullandığınız Server’da AspTear veya XmlHttp yoksa ama AspHttp varsa işte size çözüm:
    AspHttp’nin kullanımına geçmeden AspHttp’nin kurulumuna bir gözatalım.
    AspHttp’yi http://www.serverobjects.com/comp/asphttp3.zip adresinden indirebilirsiniz.
    AspHttp bileşeni deneme sürümüdür. AspHttp ile ilgili düşünceleriniz olumlu ise
    bileşeni kullanabilmeniz için satın almanız gerekiyor.
    AspHttp’yi kullanabilmeniz için asphttp3.zip içerisindeki “Asphttp.dll” dosyasını register etmeniz gerekmektedir. asphttp3.zip dosyasının içerisinde bulunan “Asphttp.dll” dosyasının Windows ‘un sistem klasörüne kopyalayınız (NT için ‘\winnt\system32′, Win9x için ‘\Windows\System’). Daha sonra “Başlat/Start” menüsünden “çalıştır/Run” menüsünü seçiniz. Açılan ufak pencereye “regsvr32 asphttp.dll” yazıp “Tamam” ‘ı tıklayınız. Bu sayede register işlemimiz gerçekleşecektir.

    AspHttp ‘nin Kullanımı:
    ısterseniz AspHttp ile istediğiniz web sitesinin tamamını (resimler hariç) gösterim yapabilirsiniz.
    AspHttpHTM.Asp
    <%
    Server.ScriptTimeout = 240
    ‘Bağlantımızı Kuralım
    Set HttpObj = Server.CreateObject(”AspHTTP.Conn”)
    HttpObj.Url = “http://www.microsoft.com”
    rem HttpObj.Port = 80
    rem HttpObj.TimeOut = 80
    HttpObj.FollowRedirects = true
    HttpObj.RequestMethod = “GET”
    HttpObj.UserAgent = “Mozilla/2.0 (compatible; MSIE 3.0B; Windows NT)”
    strResult = HttpObj.GetURL
    ‘Sayfamızı Yazdılarım…
    Response.Write strResult
    Response.Write “<blockquote><hr>URL is now: ” & HttpObj.URL
    Response.Write “<hr><pre>” & HttpObj.Headers & “</pre>”
    ‘Bileşenimizin Kayıtlı Olup Olmadığını öğrenelim…
    Response.Write “<hr>”
    strRegName = HttpObj.RegisteredUser
    if Left(strRegName, 5) <> “Unreg” then
    Response.Write “Bileşenin Kayıtlı Olduğu ısim: ” & strRegName & “<br>”
    else
    Response.Write “Bileşen Kayıtlı Değil.<br>”
    end if
    %>
    ‘AspHttpHTM.Asp Bitti
    AspHttp ile yapabileceğimiz diğer bir işlem ise verilen web sitesi adresindeki tüm linkleri
    listeleyebilmektir.
    ASpHttpList.Asp
    <html>
    <body>
    <%
    Server.ScriptTimeout = 240
    ‘Bağlantımızı Kuralım
    Set HttpObj = Server.CreateObject(”AspHTTP.Conn”)
    HttpObj.Url = “http://www.genusa.com/asp/tools.html”
    rem HttpObj.Port = 80
    rem HttpObj.TimeOut = 80
    HttpObj.RequestMethod = “GET”
    HttpObj.UserAgent = “Mozilla/2.0 (compatible; MSIE 3.0B; Windows NT)”
    strResult = HttpObj.GetURL
    ‘Linklerimizi Listeleyelim…
    Response.Write “<h2>A HREF Listesi</h2>”
    varHREFArray = HttpObj.GetHREFs
    intHREFArrayLimit = UBound(varHREFArray) -1
    For I = 0 to intHREFArrayLimit
    Response.Write varHREFArray(I) & “<br>” & VBCrLF
    Next
    %>
    ‘ASpHttpList.Asp Bitti
    Bu bileşenin diğer bir avantajı başka web sitelerinden istediğimiz satır veya bilgiyi alabilmektir. Buna bir örnek olarak TR.Net sitesinden hava durumunu nasıl alabileceğimizi bir örnekle gösterelim:
    Hava.Asp
    <%
    ‘Bağlantımızı Kuralım
    set HttpObj = Server.CreateObject(”AspHTTP.Conn”)
    HTTPObj.Url = “http://www.tr.net”
    odunc = HTTPObj.GetURL
    ‘Sayada Ankara nın yerini belirleyelim.
    yer = Instr(1,odunc,”Ankara”)
    ankara = Mid(odunc,yer+89)
    son = Instr(1,ankara,”<”)
    son = son - “1″
    ‘Ankara nın HavaDurumunu öğrenelim
    ankara = Mid(odunc,yer+89,son)
    ‘Sayada ıstanbul un yerini belirleyelim.
    yer = Instr(1,odunc,”ıstanbul”)
    istanbul = Mid(odunc,yer+103)
    son = Instr(1,istanbul,”<”)
    son = son - “1″
    ‘ıstanbul un HavaDurumunu öğrenelim
    istanbul = Mid(odunc,yer+103,son)
    ‘Sayada ızmir in yerini belirleyelim.
    yer = Instr(1,odunc,”ıstanbul”)
    izmir = Mid(odunc,yer+103)
    son = Instr(1,izmir,”<”)
    son = son - “1″
    ‘ızmir in HavaDurumunu öğrenelim
    izmir = Mid(odunc,yer+103,son)
    %>
    <html>
    <head><title>AspHttp ile TR.Net ‘ten HavaDurumu</title>
    <meta http-equiv=”Content-Type” content=”text/html; charset=windows-1254″>
    <style>
    table {font-family: verdana; font-size: 7pt};
    </style>
    </head>
    <body>
    <table border=”0″>
    <tr><td>Ankara</td><td><%=ankara%></td></tr>
    <tr><td>ıstanbul</td><td><%=istanbul%></td></tr>
    <tr><td>ızmir</td><td><%=izmir%></td></tr>
    </table>
    </body></html>
    ‘Hava.Asp Bitti
  • 01-04-2008, 16:43:06
    #11
    Eposta Aktivasyonu Gerekmekte
    Önce veritabanını hazırlayalım. Program bir veritabanından ve şimdilik iki tablodan oluşuyor.
    “db” isimli bir veritabanı oluşturun. Daha sonra da liste isimli bir tablo.
    Alan AdıVeri türüKayitIDOtomatik SayıKitapAdiMetinYEvi MetinFiyatiMetinKayitIDKitapAdiYEviFiyatiKayitIDYazariAciklama
    *** Alan adlarında Türkçe karakter girmemeye dikkat edin. Türkçe karakterler hataya sebep olacaktır. Kodlarınız doğru olsa da programınız hata verecektir.
    *** Elimizde ufak bir veritabanı ve tablolar var. Bu kadar küçük tabloları ikiye bölmek saçma gelebilir ama büyük ölçekli tablolar için uygun bir yöntemdir. Böylece veritabanınızın şişmesini engellemiş olursunuz.

    Tablolar KayıtID alanı ile birbirleriyle ilişkilendirilmiştir. Yani KitapID’si 3 olan kitap:
    KayitIDKitapAdiYEviFiyatiYazariAciklama
    Değerlerine sahiptir.
    ***Fiyat değerlerini salladım ama herhalde böyle birşeylerdir. Ayrıntılı bilgi için yayınevlerinin web adreslerini ya da en yakın kitapçıyı ziyaret edebilirsiniz.
    TABLO İÇERİĞİNİN ASP SAYFASINA YAZDIRILMASI
    Tablomuzu hazırladık peki nasıl görüntüleyeceğiz? İlk önce sayfamızın tasarlanması gerekiyor. Bunun için birçok editör kullanabilirsiniz. Endişelenmeyin NotePad de işinizi görür. Ama ben yine de Dreamweaver ya da FrontPage gibi bir editör kullanmanızı tavsiye ederim. Elle kod girmekten daha kolay. Ama Asp kodlarını yazmaktan kurtulamazsınız
    <%@Language=VBScript%>
    <%
    ‘Veritabanı bağlantısını yap
    set Con=server.CreateObject(”ADODB.Connection”)
    ‘Bu durumda veritabanının yeri asp server içinde wwwliste/db.mdb’dir
    Con.open “DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=” & Server.MapPath(”/wwwliste/db.mdb”)
    ‘Bağlantıyı aç
    set RS = server.CreateObject(”ADODB.Recordset”)
    RS.ActiveConnection=Con

    ‘liste tablosundaki bütün alanları KitapAdı’na göre sırala
    sqlString= “select * from liste order by KitapAdi”
    RS.Open sqlString
    %>

    <html>
    <head>
    <meta http-equiv=”Content-Type” content=”text/html; charset=windows-1254″>
    <meta name=”GENERATOR” content=”Microsoft FrontPage 4.0″>
    <meta name=”ProgId” content=”FrontPage.Editor.Document”>
    <title>İndex</title>
    </head>

    <body bgcolor=”#ECF5FF”>
    <table border=”1″ width=”100%” bordercolor=”#000000″ cellspacing=”0″>
    <tr>
    <td width=”100%” height=”2″ valign=”top”>
    <table border=”1″ width=”100%” bordercolor=”#FFFFFF” cellspacing=”0″>
    <tr>
    <td width=”13%”>Kitap Adı</td>
    <td width=”15%”>Yayın Evi</td>
    <td width=”14%”>Fiyatı</td>
    </tr>
    </table>
    </td>
    </tr>
    <tr>
    <td width=”100%” height=”29″ valign=”top”>
    <table border=”1″ width=”100%” bordercolor=”#808080″>
    <%

    ‘Son kayıda kadar döngü
    while not rs.EOF
    %>
    <tr>
    <td width=”13%”>
    ‘KitapAdi alanının değeri browser’a yazdırılır
    <%=rs.Fields.Item(”KitapAdi”)%></td>
    ‘Yevi alanı yazdırılır
    <td width=”15%”><%=rs.Fields.Item(”YEvi”)%></td>
    ‘Fiyati alanı yazdırılır
    <td width=”14%”><%=rs.Fields.Item(”Fiyati”)%></td>
    </tr>
    ‘Sonraki kayıta git
    <%RS.MoveNext
    wend
    %>
    </table>
    </td>
    </tr>
    </table>
    </html>


    AYRINTI SAYFALARI OLUŞTURMAK
    Bu bölümde index.asp’deki Kitap Adı’na link verip bu linki kitap ayrinti.asp sayfasına yönlendireceğiz. Bunu yaparken index.asp’de tıkladığımız kayıt ile ayrıntı.asp de göstereceğimiz kayıtın “KayitID” alanlarının aynı olmasından yararlanacağız.
    İlk önce index.asp’de gerekli eklemeyi yapalım:
    Eklediğimiz kod index.asp’deki listelenen kaydın KaytID’si ile ayrinti.asp’de görüntülenecek kaydın KayitID’sinin eşit olduğunu sorgular. Bir başka değişle ayrinti.asp’de, tıkladığınız kaydın KayitID’si ile eşit olan kaydın ayrıntıları görüntülenecektir. “kid” index.asp’deki listelenen kayıtların KayitID değerini tutmaktadır.

    <table border=”1″ width=”100%” bordercolor=”#808080″>
    <%
    while not rs.EOF
    %>
    <tr>
    <td width=”13%”><a href=”ayrinti.asp?kid=<%=RS(”KayitID”)%>”><%=rs.Fi elds.Item(”KitapAdi”)%></a></td>
    <td width=”15%”><%=rs.Fields.Item(”YEvi”)%></td>
    <td width=”14%”><%=rs.Fields.Item(”Fiyati”)%></td>
    </tr>
    <%RS.MoveNext
    wend
    %>
    </table>

    Şimdi sırada ayrinti.asp’nin yazılması var:

    <%@Language=VBScript%>
    <%
    ‘KaID değişkeni index.asp’deki tıklanan kaydın KayitID’sini tutar.

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

    ‘liste tablosundaki KayitID’si geçerli olan kayda eşit olan (KaID’ye) kaydı al.
    sqlString= “select * from liste where KayitID=” & KaID
    ‘Bağlantıyı aç
    set RS = server.CreateObject(”ADODB.Recordset”)
    RS.ActiveConnection=Con

    RS.Open sqlString
    %>
    <%
    ‘İki tablo kullandığımız için ayrinti tablosunun da değerlerinin alınması gerekir.
    ‘İkinci bir bağlantı oluşturulur ve istenen değerler ayrinti tablosundan da alınır.


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

    RS2.Open sqlString
    %>
    <html>
    <head>
    <title>Ayrıntı</title>
    <meta http-equiv=”Content-Type” content=”text/html; charset=windows-1254″>
    </head>

    <body bgcolor=”#ECF5FF” text=”#000000″>
    <table width=”100%” border=”0″>
    ‘Döngüler başlatılır
    <%
    while not rs.EOF
    %>

    <%
    while not rs2.EOF
    %>
    <tr>
    <td colspan=”3″>&nbsp;</td>
    </tr>
    <tr>
    <td width=”13%”>Kitap Adı:</td>
    ‘Kayıtlar browser’a yazdırılır
    <td width=”23%”><%=rs.Fields.Item(”KitapAdi”)%></td>
    <td rowspan=”4″><%=rs2.Fields.Item(”Aciklama”)%></td>
    </tr>
    <tr>
    <td width=”13%”>Yazarı:</td>
    <td width=”23%”><%=rs2.Fields.Item(”Yazari”)%>
    </td>
    </tr>
    <tr>
    <td width=”13%”>Yayın Evi:</td>
    <td width=”23%”><%=rs.Fields.Item(”YEvi”)%></td>
    </tr>
    <tr>
    <td width=”13%”>Fiyatı:</td>
    <td width=”23%”><%=rs.Fields.Item(”Fiyati”)%></td>
    </tr>
    <tr>
    <td width=”13%”>&nbsp;</td>
    <td colspan=”2″>&nbsp;</td>
    </tr>
    <%RS2.MoveNext
    wend
    %>
    <%RS.MoveNext
    wend
    %>
    </table>
    </body>
    </html>


    TABLOYA YENİ KAYIT EKLEMEK
    Peki database’imiz hep böyle mi kalacak? Elbette hayır. Yeni kayıtlar girmek gerek:
    İlk önce index.asp’nin sonuna aşağıdaki kodu ekleyelim:
    <table width=”100%” border=”0″>
    <tr>
    <td><a href=”ekle.asp”>Kayıt Ekle</a></td>
    </tr>
    </table>

    Bu değişikle sadece sayfa sonuna “Kayıt Ekle” linkini oluşturduk.
    Sıra bu link tıklanınca ekrana gelecek olan sayfanın hazırlanmasına geldi:
    <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 içeriği ekle2.asp’ye gönderilir
    <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
    </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″>
    </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″>
    </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″>
    </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″>
    </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″></textarea>
    </td>
    </tr>
    <tr>
    <td width=”24%”>&nbsp;</td>
    <td width=”7%”>
    <input type=”submit” name=”btnEkle” value=”Ekle” style=”color: #006FA4; font-family: Tahoma; font-size: 10pt; border-style: solid; border-width: 1″>
    </td>
    <td width=”69%”>
    <input type=”reset” name=”Reset” value=”Temizle” style=”color: #006FA4; font-family: Tahoma; font-size: 10pt; border-style: solid; border-width: 1″>
    </td>
    </tr>
    <tr>
    <td width=”24%”>&nbsp;</td>
    <td colspan=”2″>&nbsp;</td>
    </tr>
    </table>
    </form>
    </body>
    </html>

    Dikkat ederseniz bu sayfada database’e kayıt yazdıracak herhangi bir kod yok. Sayfada bir form var ve bu formdaki değerler, “ekle2.asp”‘ye gönderiliyor. Tahmin ettiğiniz gibi veritabanına kaydı girecek olan kodlar “ekle2.asp”‘de:
    <!–#INCLUDE FILE=”adovbs.inc”–>
    <%
    ‘Değişkenler atanır
    KitapAdi=TRIM(Request(”KitapAdi”))
    Yazari=TRIM(Request(”Yazari”))
    YEvi=TRIM(Request(”YEvi”))
    Fiyati=TRIM(Request(”Fiyati”))
    Aciklama=TRIM(Request(”Aciklama”))
    Alanlar boşsa varsayılan değerleri gir
    If KitapAdi=”" Then
    KitapAdi=”???”

    If Yazari =”" Then
    Yazari =”???”

    If Fiyati =”" Then
    Fiyati =”???”

    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″>
    <%

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

    ‘ayrinti tablosuna ilgili alanları gir
    sqlString2 = “INSERT INTO ayrinti ” &_
    “( Yazari, Aciklama ) VALUES ( ” &_
    ” ‘” & Yazari & “‘, ” &_
    ” ‘” & Aciklama & “‘)”
    Con.Execute sqlString2

    %>
    <table width=”100%” border=”0″ align=”center”>
    <tr>
    ‘Eklenen kaydın adını göster.
    <td><font color=”#CC3300″><b><%=KitapAdi%></b></font> kaydedildi</td>
    </tr>
    </table>

    </body>
    </html>
  • 01-04-2008, 16:44:07
    #12
    Eposta Aktivasyonu Gerekmekte
    w=65
    For i = 1 to 7
    X=-280 + w*(i-1) + 10*i
    Y=-i*50
    call dk.rect(x,180,w,y)
    Next

    (Yukarıdaki satırda veri i değişkenidir.)
    Soruyu sormadık ama ne olduğunu hepimiz tahmin edebiliyoruz, o halde hemen aklımıza gelen bir cevabı yazalım;
    1- İlk cevabımız kodlar arasına veritabanına bağlantı yapan satırları eklemek olabilir. Ama scriptimiz kullanıcı taraflı. Bu riskli olur, veri
    tabanı bağlantı parametreleri görüldüğü için.
    2- İkinci bir alternatif ise asp sayfası hazırlayıp veritabanından alınan değişkeni grafik kodları arasına yazmak ? Bu da çalışmayacaktır. Çünkü asp sayfaları sonuçları HTML olacak şekilde kullanıcıya bilgi gönderir. Bu şekilde çalışabilmesi için istemciye boyutlu bir değişkeni gönderebiliyor
    olmamız gerekir veya sunucu tarafında DIRECTX i kullanıyor olmamız gerekir, ama DIRECTX sunucu taraflı çalışınca grafiği istemciye gönderemeyiz.
    3- Peki HTML kodlarının bir çoğunu değişken olarak kullanmayı önersem ? Evet benim çözüm önerim bu olacak ve bu yazıda bu kodların yazımını ve kullanımını açıklayacağım. (Farklı yöntemlerle çözüm bulanlarında bilgisini paylaşması dileğiyle)
    Hepimiz web sayfası tasarımına geçmeden önce HTML komutlarını öğreniriz. (aslında mecburuz )
    Şimdi HTML nin şu komutlarına dikkat edin bunlar arasından bizim amacımıza en uygun olanlarını kullanabiliriz :

    TABLE (Table, Tr, Td)
    INPUT
    IMAGE

    Elbette burdaki amacımız verimizin türüne bağlı olarak veri taşıyacak değişkeni saptamak. Bizim için önemli olan bu komutların kullandığı VALUE
    veya TITLE parametresidir.
    VALUE INPUT tag’ının parametresi TITLE ise yukarıda yazılanların ve bir çok HTML tag’larının parametresidir. VALUE parametresi eğer INPUT tag’ının tipi TEXT ise girilen değeri, BUTTON ise butonun üzerindeki yazısı olur. TITLE ise mouse bu HTML elemanlarından birinin üzerine getirdiğinizde onun ne işe yaradığını anlatan açıklama satırlarını oluşturur.
    Örneğin;
    <INPUT type=”TEXT” title=”Bu bir textbox’dur.”>
    İşte biz bu TITLE veya VALUE parametrelerini değişken olarak kullanacağız. Şimdi aşağıdaki örneği inceleyelim. Bu örnek yazılar arasında süreklilik sağlamak amacıyla bir önceki yazıda kullandığım örneğe bugünkü konunun eklenmiş halidir.
    Ben veri tabanı olarak SQL Server kullanıyorum. Sizde verilerinizi nerede saklıyorsanız aşağıdaki kodda veri tabanı bağlantısı kısmını düzenleyerek çalıştırabilirsiniz. Veri tabanı bağlantısı kısmını açıklamıyorum bu konu ile ilgili bu sitede (www.aspnedir.com) yeteri kadar bilgi var.
    Şimdi basit (görece basit) faydalı ve ilginç satırımı cımbızla çekip biraz analiz edeyim.
    response.write “<TR><TD ID=’Xeks” & i & “‘ title=” & rst(”X”) & “>” &
    rst(”X”) & “</TD><TD id=’Yeks” & i & “‘ title=” & rst(”Y”) & “>” & rst(”X”)
    & “</TD></TR>”

    Bu satırda bizim için ID ve TITLE parametresi önemli. ID kullandığımız taga isim vererek onu diğerlerinden ayırmamızı sağlar. Bazı tagların içinde ID yerine NAME vardır aynı görevi yapar. işte bizde verilerimizi TD tagı içinde saklarken hangi sutunda hangi bilginin olduğunu unutmamak için ona bir isim verdik. X Eksen bilgilerini saklayan sutunun ID sine Xeks, Y Eksen bilgilerini saklayan sutunun ID sine Yeks diyelim. Ama elimizde 1 den fazla veri var. Eğer boyutlu değişkenleri kullanabiliyor olsaydık A(1)=10, A(2)=20, … A(N)=M şeklinde yazabilirdik. işte ortam HTML olunca bizde her bir satıra farklı isim vererek boyutlu değişkeni kendimiz oluşturuyoruz. Herbir satıra farklı bir isim vermek yerine bir ismin önüne rakam ekleyerek onu türetiyoruz;
    ID=”Xeks” & i
    i=0 için Xeks0
    i=1 için Xeks1
    i=2 için Xeks2

    i=N için XeksN
    Buraya kadar tamam. N veri için N tane TD değişkeni oluşturduk. Şimdi bu değişkende verileri toplayalım. Aşağıdaki kodu inceleyelim ;
    … “<TD ID=’Xeks” & i & “>” & rst(”X”) & “</TD>” (tam kod için bkz. yukarı)
    bu şekilde bir kodlama yaparsak istemci verileri Tablo içinde görecek ama grafiği göremeyecektir. kodumuzu düzenleyelim;
    … “<TD ID=’Xeks” & i & “‘ title=” & rst(”X”) & “>” & rst(”X”) & “</TD>” (tam kod için bkz. yukarı)
    Evet şimdi istemcinin ne göreceğine bakalım. Ekranda X ekseni için verilen değerleri görecek. Hepsi bu kadar mı ? Elbette hayır. Eğer kodu
    çalıştırırsanız mouse’unuzu rakamların üzerine götürmeyi unutmayın. Evet açıklama satırı olarak aynı rakamları okuyacaksınız. İşte bizim
    kullanacağımız TITLE içinde saklanan bu veriler. Tabi birde sütunun adı olan ID parametresi.
    (Hımm biraz eğlenelim bu kodlarla ne dersiniz ? )
    Şöyle bir soru akla gelebilir; Yüzlerce veri var hepsi ekranda gözükecek tablo uzayacak görüntü bozulacak. Kolayı var tabloda Border=0 yapın, bir de title dışında verileri yazdırmayın. Oldu olacak bir de style=’visibility:hidden’ css komutu ekleyelim tabloya ve görünürlüğünü
    tamamen kaldıralım şöyle ki;
    Response.write ” <TABLE Border=’0′ style=’visibility:hidden’>”
    Response.write ” <TR><TD ID=’Xeks” & i & “‘ title=” & rst(”X”) &
    “></TD></TR>”
    Response.write ” </TABLE>”

    Yine de işlem zamanı ve istemcinin bu verileri görebilmesi veri büyüklüğüyle doğru orantılı. Her ne kadar tabloda gözükmesede title içine aktarılan verilerin istemciye gönderilmesi zaman alacatır. Ama bir faydasıda veriler üzerinde herhangi bir matematiksel düzenlemeyi istemciye butonlar sunarak verebiliriz. Bu durumda istemci grafik üzerinde yaptığı her değişiklik için sadece kendi bilgisayarının hızı kadar beklemek zorunda. Her seferinde web üzerinden bu bilgileri alması gerekmez. (Ama sizde herşeyi HTML den beklemeyin )
    Unutmayalım ki biz burada DIRECTX, HTML, ASP ve DHTML kullanarak biraz uzun yoldanda olsa grafik çizdirmeye çalışıyoruz. Bunun en kısa yolu grafik cizip onu JPG kayıt eden bir ActiveX DLL yazıp sonra o DLL’i ASP içinden çağırmaktır. Konumuza tekrar dönelim.
    Önemli bir kod satırımızda DHTML (Dinamik HTML) ile ilgili;
    document.all.item(”Xeks1″).title
    Yukarıdaki satır DHTML kodudur. Buradaki DOCUMENT ifadesi bizim sayfamızı, ALL bu sayfa üzerindeki tüm tagları, ITEM ise bu taglardan herhangi birini seçmemizi sağlıyor.
    Dikkat ederseniz item(”Xeks1″) yazdık. Buradaki Xeks1 yukarıda bahsedilen verilerin saklandığı sütunun adıdır. Yani Xeks1 TD tagının ID ’sidir. İşte istemci tarafında tablo veya diğer bir HTML kodu içindeki bilgilere ulaşmamıza yarayan güzel bir DHTML kodudur. TITLE TD tagının parametresiydi ve yukarıda kullanacağımız verileri oraya yazdırmıştık. O halde
    For i = 1 to M
    X = document.all.item(”Xeks” & i).title
    y = document.all.item(”Yeks” & i).title
    next
    M veri sayımız diğer bir değişle tablonun satır sayısı olmak üzere, TD tagı içine sakladığımız tüm verilere bu şekilde ulaşabiliriz. Ayrıca madem IE kullanıyoruz. O halde IFRAME kullanarak fazla verilerin sayfa düzenini bozmasını engelleyebiliriz. verileri IFRAME içinde sunabiliriz. Butonlarla
    IFRAME in kaynağını değiştirip farklı verilere ulaşıp farklı grafikler çizdirebiliriz.
    örneğin;
    <IFRAME ID=”VERI” HEIGHT=”30%” WIDTH=”100%” FRAMEBORDER=1 SCROLLING=YES
    SRC=”veri.asp”></IFRAME>
    veri.asp dosyası veri tabanından verileri okuyup yine aynı sayfada tablolar halinde yayınlasın.
    Bu durumda grafik çizdireceğimiz sayfamızın asp olmasına gerek olmayacak. Tek sorun IFRAME içindeki tablodan veri okutmak olacaktır. Bunu ise;
    M = document.frames(”VERI”).document.all.item(”sayi”). value
    şeklinde yapabiliriz. bu bize veri.asp dosyasında yer alan
    <input name=’sayi’ value=10></input>
    satırındaki Value yani 10 değerini okuyacaktır. Son olarak önemli bir HTML kodunu açıklayalım;
    <META HTTP-EQUIV=”REFRESH” CONTENT=”60″>
    META tagı HEAD tagı içinde tanımlanır. Daha çok sayfanın içeriği dili vb. hakkında bilgi içerir.
    Yukarıdaki parametreleriyle kullanıldığında sayfanın yeniden yüklenmesi sağlanır. yani bu kod için 60 saniye sonra sayfa Refresh edilerek yeniden yüklenir. Böyle bir parametre veritabanına belli zaman aralıklarıyla bağlanıp verilerimizi vede grafiklerimizi güncellemeye yarayabilir.
    Aşağıda anlatmaya çalıştığım konuyla ilgili geçen yazımdaki örneğin değiştirilmiş halini bulacaksınız. Satırlar arasında yine açıklama satırları
    var. Umarım anlaşılır bir örnek olmuştur.
    Bu makaleyi okuyan ve katkı koyabilecek herkese şimdiden teşekkür ediyorum.
    Bilgi Paylaştıkça Çoğalır. Farkınız bilmek değil, bilginizi kullanabilmek
    olsun.
    İlk sayfamızın adı veri.asp olsun;
    ‘ Bu sayfada veritabanı bağlantısı kurulabilir.
    <!@ Language=”VBScript”>
    <html>
    <body>
    <%
    Dim X, Y, i
    response.write “<TABLE width=’100%’ align=’center’ border=’0′ >”
    response.write “<TR><TD>X Ekseni</TD><TD>Y Ekseni</TD></TR>”
    for i = 1 to 7
    X = i*5
    Y = int(70*rnd(1))
    response.write ” <TR><TD ID=’Xeks” & i & “‘ title=” & X & ” >” & X &
    “</TD><TD id=’Yeks” & i & “‘ title=” & Y & ” >” & Y & “</TD></TR>”
    next
    response.write “</TABLE>”

    ‘ i veri sayisi ise input ile saklıyor görünür olmaması içinde visible false
    yapıyoruz.

    Response.Write “<input type=’hidden’ name=’sayi’ Value=” & (i-1) &
    “></input>”
    %>
    </body>
    </html>


    İkinci sayfamızın adı drx.htm olsun;
    <html>
    <head>
    <META HTTP-EQUIV=”REFRESH” CONTENT=”60″>
    <title>DIRECT-X ile Dinamik Grafik Çizdirmek.</title>
    </head>
    <body>
    <TABLE width=”100%”>
    <TR><TD>
    <input type=”BUTTON” name=”button” value=”Grafik”>
    <IFRAME ID=”VERI” HEIGHT=”30%” WIDTH=”100%” FRAMEBORDER=1 SCROLLING=YES
    SRC=”veri.asp”></IFRAME>
    </TD><TD>
    <Table border=”1″ align=”center” bordercolorlight=”#C0C0C0″
    bordercolordark=”#808080″ bordercolor=”#808080″ bgcolor=”#808080″
    cellspacing=”5″ cellpadding=”4″>
    <TR><TD bgcolor=”#FFFFFF”>
    <OBJECT ID=DRW STYLE=”WIDTH:600; HEIGHT:400; Z-INDEX:1″
    CLASSID=”CLSID:369303C2-D7AC-11d0-89D5-00A0C90833E6″>
    </OBJECT>
    </TD></TR>
    </TABLE>
    </TD></TR>
    </body>
    <SCRIPT LANGUAGE=VBSCRIPT >
    <!–
    sub button_onclick()
    Dim dk, lib, M
    set lib = DRW.Library ‘ DirectX kütüphanesi açılıyor.
    set dk=DRW.DrawSurface ‘ Çizim kütüphanesi açılıyor.
    call dk.fillcolor(lib.ColorRGB255(0,0,0)) ‘ Cizgi Rengi
    call dk.linecolor(lib.ColorRGB255(0,0,0)) ‘ Dolgu Rengi
    call dk.oval(0,0,5,5) ‘ 0,0 merkez noktasının yerine dikkat edin.
    ‘ X ekseni
    call dk.rect(-280,180,560,5) ‘ dörtgen,kare çizen komut
    ‘ Y ekseni
    call dk.rect(-280,-180,5,360) ‘ dörtgen,kare çizen komut
    ‘ BAR GRAFIK
    call dk.fillcolor(lib.ColorRGB255(0,100,0)) ‘ Dolgu Rengi
    call dk.linecolor(lib.ColorRGB255(0,100,0)) ‘ Cizgi Rengi

    ‘ M veri sayisi <input> tagından alınıyor. <input> tagının type özelliğine
    dikkat edin.

    M = document.frames(”VERI”).document.all.item(”sayi”). value
    w=65
    For i = 1 to M
    YY = document.frames(”VERI”).document.all.item(”Yeks” & i).title ‘ Tablodan
    Y değerleri okunuyor
    X=-280 + w*(i-1) + 10*i
    Y=-YY*5
    call dk.rect(x,180,w,y)
    Next
    ‘ TEXT GRAFIK
    call dk.fillcolor(lib.ColorRGB255(255,0,0)) ‘ Dolgu Rengi
    call dk.linecolor(lib.ColorRGB255(255,0,0)) ‘ Cizgi Rengi
    call dk.Font(”Times New Roman”,18,300,0,0,0) ‘ Text adi,boyu
    w=65
    For i = 1 to M
    YY = document.frames(”VERI”).document.all.item(”Yeks” & i).title ‘ Tablodan
    Y değerleri okunuyor
    X=-260 + w*(i-1) + 10*i
    Y=175-YY*5
    call dk.text(YY,x,y) ‘ Y değerleri grafik üzerine yazdırılıyor.
    XX = document.frames(”VERI”).document.all.item(”Xeks” & i).title ‘ Tablodan
    X değerleri okunuyor
    call dk.text(XX,x,200) ‘ X değerleri grafik üzerine yazdırılıyor.
    Next

    ‘ Çizimlerin ekranda gösterilmesisini sağlamak için
    ‘ aşağıdaki komutlar eklenir.

    dk.RestoreGraphicsState()
    DRW.DrawSurface=dk
    end sub
    –>
    </SCRIPT>
  • 01-04-2008, 16:44:55
    #13
    Eposta Aktivasyonu Gerekmekte
    ASP bildiğiniz gibi temelde VBScript’i kullanır ve VBScriptte geçen tüm fonksiyonlar,Operatörler,Metodlar ve diğer işlemler aynı şekilde ASP içinde geçerlidir.
    Burada aklınıza “O zaman neden VBScript kullanmıyoruzda ASP kullanıyoruz ?” diye bir soru gelebilir. Bunu ASP ile VBScript farkları olarak şöyle açıklayabiliriz.
    • ASP Server tabanlı bir script dilidir ve Webserver olmadan çalışmaz. VBScript ise normal HTML sayfalarında da kullanılabilir.
    • ASP hem VBScript in getirdiği özellikleri kullanabilir hem de objelerle ilişkilidir. VBScript ise ASP kadar obje yönelimli değildir.
    • ASP nin tabanında yapı objeleri ( Built-In Objects ) vardır fakat VBScriptte bu şekilde objeler yoktur.
    • ASP , VBScript ‘ e göre veritabanları ile daha kolay anlaşabilir ve daha çarpıcı işlemler yapabilir.
    • ASP de yazdığınız kodlar kullanıcının bilgisayarına gittiğinde HTML tagları olarak görünür fakat VBScript kodları kullanıcının bilgisayarına gittiğinde yazıldığı gibi görünür.

    Bu farkları gördüğümüzde neden ASP kullandığımızı daha iyi anlıyoruz.
    ASP 2.0 da 5 adet yapı objesi bulunurken ASP 3.0 da bu sayı 7 ye çıkarılmıştır.
    ASP 2.0 da bulunan yapı objeleri :
    • Response
    • Request
    • Session
    • Application
    • Server
    ASP 3.0 da bulunan yapı objeleri :
    • Response
    • Request
    • Session
    • Application
    • Server
    • Errors Object
    • ObjectContext Object
    Gördüğünüz gibi ASP 3.0 ile birlikte hata kontrolleri için Errors objesi ve Transaction işlemleri için ObjectContext objesi gelmiştir.
    Bu yazımızda bu objelerden Response ve Request objesini inceleyeceğiz.
    RESPONSE :
    Bu obje ASP’de en çok kullanılan objelerden biridir. Webserver’ın kullanıcıya ( Client ) cevap vermesi anlamına gelir.
    Yani kullanıcı Webserver dan bir istekte bulunur ve Webserver da kullanıcıya Response objesi ile cevap verir.
    Örneğin, kullanıcı herhangi bir ASP sayfasını çağırdığında ekrana gelen değişken değerleri veya kişinin bilgisayarına çerezlerin ( Cookie ) gönderilmesi gibi işlemler bu obje sayesinde olur.
    Şimdi Response objesine ait özellikleri ve metodları inceleyelim …
    Response.Write : Bu metod ASP sayfalarında çok fazla kullanılır. Bir değişkenin değerini yada herhangi bir yazıyı ekranda görüntülemek için kullanılır.
    Örnek kullanımı : Response.write (“ bu bir deneme yazısıdır…”)
    şeklindedir. Bu örneği kullandığınızda ekranda “ bu bir deneme yazısıdır…” yazısını görürsünüz.
    Bunun dışında tek satırlık işlemler yapıyorsanız “ = “ işareti kullanabilirsiniz.Bu işlem Response.Write metodunun yaptığı işi yapar. Örnek kullanımı : <%=data(“kisiadi”)%> Şeklindedir.
    Response.Redirect : Bu metod bulunduğunuz sayfadan başka bir sayfaya yada başka bir internet adresine yönlendirilmek istediğinizde size yardımcı olacaktır.Örneğin bir kişiyi sitenize kayıt ettikten sonra otomatikman o kişiyi kayıt olmuş kişiler sayfasına yönlendirmek isterseniz redirect metodunu kullanabilirsiniz.
    Örnek kullanımı : Response.Redirect (“default.asp”)
    şeklindedir. Bu örneği kullandığınızda bulunduğunuz sayfadan default.asp sayfasına yönlendirilirsiniz.
    Response.Expires : Bu özellik sayfanın kaç saniye sonra iptal ( Expire ) olacağını belirler. Örneğin kullanıcı hiçbir işlem yapmadan 20 saniye beklerse sayfa expire olur.tabi burada 20 saniye yada diğer zaman birimlerini belirlemek size kalmış.
    Örnek kullanımı : Response.Expires=50
    Şeklindedir. Burada 50 rakamı sayfanın 50 saniye sonra expire edileceğini belirtmektedir.
    Response.Cookies : Bu koleksiyon Zzyaretçinin bilgisayarına Cookie ( Çerez ) denilen, genelde içinde kişi ve site hakkında bilgi barındıran küçük bilgi dosyacıkları gönderir.Cookieler siteler tarafından fazlaca kullanılır ve kullanıcıyı tekrar tekrar sitede bir takım olayları gerçekleştirmekten kurtarır. Örneğin kişi bilgilerini içeren bir Cookie niz varsa ziyaretçi sizin sitenize girdiğinde
    O kişiye ismi ile hitap edebilirsiniz ve bunun o kişiyi memnun edeceğinden emin olabilirsiniz.
    Örnek kullanımı : Response.Cookies(“isim”)=”ismail AKTAŞ”
    Şeklindedir. Bu Örneği kullandığınızda ziyaretçinin bilgisayarına isim adında ismail AKTAŞ değerini içeren bir cookie göndermiş olursunuz .
    Response.IsClientConnected : Bu özellik sitenizde herhangi ziyaretçinin olup olmadığı hakkında size bilgi vermektedir.
    Eğer sitenizde ziyaretçi var ise geriye değer olarak true döndürmektedir.
    Örnek kullanımı : Response.IsClientConnected
    Şeklindedir. Burada size döndürecek True , False değerlerinden birine göre işlemler yapabilirsiniz.
    Response.Buffer : Bu özellik sayfanın tam olarak yüklenmeden gösterilmemesini sağlar. Yani bu özelliği kullandığınızda sayfanızdaki objeler,elemanlar ve diğer tüm işlemlerin oluşması tamamlanmadan sayfanız ekranda görünmez.
    Örnek kullanımı : Response.Buffer=True
    Şeklindedir. Burada True değerini girmezseniz yada buffer özelliğini hiç kullanmazsanız mevcut değeri olan False aktif olacaktır.
    Response.Charset : Bu özellik bölgesel ayarlarda kullanılır ve sayfada kullanılan karakterlerin set edilmesi işlemini içerir.
    Örnek kullanımı : Response.Charset=1254
    Şeklindedir.Buradaki 1254 değeri türkçe karakterlerin yazılacağını belirtir.
    Response.End : Bu metodu sayfanın neresine koyarsanız kodlar oraya kadar normal bir şekilde çalışır ve response.end satırını gördüğü anda durur. Bu metod daha çok kodlama sırasında kontrol işlemlerinde kullanılır fakat bazı sayfalarda da işlemleri sonlandırmak için kullanıldığı görülmüştür.
    Örnek kullanımı : Response.End şeklindedir.
    Response.ContentType : Kullanacağınız ASP sayfasının içeriğini tanımlamakta kullanılır.Örneğin Browser’ ınızda bir Excel,Word yada bir PowerPoint sayfasını ContentType özelliğini kullanarak açabilirsiniz.
    Örnek kullanımı : Response.ContentType=”application/msword” yazdığınızda browser bir Word sayfası açar.
    Eğer Excel sayfası açmak isterseniz ; Response.ContentType = “application/vnd.ms-excel” yazarak bu işlemi de yapabilirsiniz.
    Şimdi de Request objesinin özelliklerini ve metodları görelim.
    REQUEST :
    Request objesi Webserver ‘ ın ziyaretçiden bilgi alması anlamına gelmektedir.
    Request.QueryString : Formlarda GET metodu ile bilgi gönderilmek istediğinde bu bilgi request objesinin QueryString koleksiyonu ile alınır.Ayrıca linkler aracılığı ile bilgi gönderilmek istendiğinde de bu bilgi GET metodu ile gönderilmiş sayılıp yine QueryString koleksiyonu ile alınır.
    Örnek kullanımı : Response.QueryString(“formdan gelen bilgi”) Şeklindedir.
    Request.Form : Bu koleksiyon ise QueryString in yaptığı işlemlerinin bir benzerini yapmaktadır. Tek farkı formlarda GET metodu yerine POST metodu aktif olduğunda kullanılır ve linkler aracılığıyla gönderilen veriler bu koleksiyon ile alınmaz.
    Örnek kullanımı : Response.Form(“formdan gelen bilgi”) Şeklindedir.
    Request.ServerVariables : Bu koleksiyon server bilgilerini almak için kullanılır. Webserver’ların tuttuğu bilgilere ihtiyacımız olduğunda bu koleksiyonu kullanırız.
    Örnek kullanımı : Response.Servervariables(“REMOTE_ADDR”)
    Şeklindedir. Bu örneği uyguladığınızda sitenize gelen ziyaretçinin IP ( Internet Protokol ) numarasını almış olursunuz.
    Request.Cookies : Bu koleksiyon ise Response objesi ile gönderilen cookieleri alma da kullanılır.
    Örnek kullanımı : Request.Cookies(“isim”)=”İsmail AKTAŞ”
    Şeklindedir.Bu örneği uyguladığınızda ziyaretçinin sisteminde bulunan içeriği İsmail AKTAŞ olan cookie ‘ yi okumuş olursunuz.
  • 01-04-2008, 16:45:50
    #14
    Eposta Aktivasyonu Gerekmekte
    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üncell e</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>
  • 01-04-2008, 16:46:31
    #15
    Eposta Aktivasyonu Gerekmekte
    Bu yazımızda ASP ile File System objesini kullanarak basit bir windows gezgini yazacağız.
    Bu işlem için Database yada benzeri bir harici dosya kullanmadan, bir tek dosya ile bu işlemi gerçekleştireceğiz.
    Bu iş için öncelikle bir asp dosyası yaratalım ve de adını Filesystem.asp verdelim.daha sonra yarattığımız bu Filesystem.asp dosyasının içerisine aşağıdaki ASP kodunu ekleyelim.
    ——————- Filesystem.asp ————————
    <HTML>
    <HEAD>
    <TITLE>Windows Gezgini…</TITLE>
    </HEAD>
    <BODY>
    <div id=divdrives>
    <font face=verdana size=2>Sisteminizdeki Sürücüler :<p>
    <%
    dim objfso
    set objfso=server.CreateObject(”Scripting.FileSystemOb ject”)
    for each x in objfso.Drives
    set drivename=objfso.GetDrive(x)
    Response.Write “<a href=filesystem.asp?drive=”&drivename.DriveLetter& ”>”&drivename.DriveLetter&”</a> “
    next
    if Request(”drive”)<>”" then call FolderList(Request(”drive”))
    if Request(”foldername”)<>”" then call FileList(cstr(Request(”foldername”)))
    if Request(”filename”)<>”" then call FileDetails(cstr(Request(”filename”)))
    ‘Sürücüler.
    Function FolderList(Drivename)
    Response.Write ” &nbsp;<img src=ustfolder.gif id=ustfolder style=cursor:hand alt=”&chr(34)& _
    “bir üst klasöre gitmek için tıklayınız.”&chr(34)&”>”
    Response.Write “<br><br>”
    set RootFolders=objfso.GetDrive(Drivename).RootFolder
    set Folders=RootFolders.SubFolders
    set SubFiles=RootFolders.Files
    for each i in Folders
    Response.Write “<img src=folder.gif> <a href=filesystem.asp?foldername=”&i.ShortPath& _
    ” style=text-decoration:none>”&i.name&”</a><br>”
    next
    for each x in SubFiles
    Response.Write “<img src=file.gif> <a style=text-decoration:none href=”&chr(34)&”filesystem.asp?filename=”& _
    x.path&chr(34)&”>”&x.name&”</a><br>”
    next
    End Function
    ‘Klasör içeriğini listeleme.
    Function FileList(Foldername)
    Response.Write ” &nbsp;<img src=ustfolder.gif id=ustfolder style=cursor:hand alt=”&chr(34)& _
    “bir üst klasöre gitmek için tıklayınız.”&chr(34)&”>”
    Response.Write “<br><br>”
    set filesname=objfso.GetFolder(Foldername).Files
    set Foldersname=objfso.GetFolder(Foldername).SubFolder s
    for each i in Foldersname
    Response.Write “<img src=folder.gif> <a href=filesystem.asp?foldername=”&i.ShortPath& _
    ” style=text-decoration:none>”&i.name&”</a><br>”
    next
    for each x in filesname
    Response.Write “<img src=file.gif> <a style=text-decoration:none href=”&chr(34)& _
    “filesystem.asp?filename=”&x.path&chr(34)&”>”&x.na me&”</a><br>”
    next
    End Function
    Function FileDetails(Filename)
    set filesdetail=objfso.GetFile(cstr(Filename))
    Response.Write ” &nbsp;<img src=ustfolder.gif id=ustfolder style=cursor:hand alt=”& _
    chr(34)&”bir üst klasöre gitmek için tıklayınız.”&chr(34)&”>”
    Response.Write “<div id=divfiles class=divstyle>”
    Response.Write “&nbsp;<b>Seçilen Dosyanın Ayrıntıları : </b><br><br>”
    Response.Write “&nbsp;<b>Path:</b> ” & cstr(Filename) & “<br>”
    Response.Write “&nbsp;<b>Dosya Adı :</b> ” & filesdetail.Name & “<br>”
    Response.Write “&nbsp;<b>Dosya Büyüklüğü :</b> ” & filesdetail.Size & ” KB <br>”
    Response.Write “&nbsp;<b>Dosya Tipi :</b> ” & filesdetail.Type & ” <br>”
    Response.Write “&nbsp;<b>Son Düzenleme Tarihi :</b> ” & filesdetail.DateLastModified & “<br>”
    Response.Write “&nbsp;<b>Son Erişim Tarihi :</b> ” & filesdetail.DateLastAccessed & “<br>”
    Response.Write “<br><br>&nbsp;<b>!</b><a href=”&chr(34)&filename&chr(34)& _
    ” target=_new style=text-decoration:none>Bu Dosyayı açmak için buraya tıklayınız.</a>”
    Response.Write “</div>”
    End Function
    %>
    <script language=”VBScript”>
    sub ustfolder_Onclick()
    history.go(-1)
    end sub
    </script>
    </div>
    </BODY>
    </HTML>
    —————————————————————
    Bu kod bizim bilgisayarımızda sürücüler ve klasörler arasında gezinmemizi ve istediğimiz herhangi bir dosya hakkında bize bilgi verilmesini sağlar.
    Şimdi bu kodu bloklar halinde inceleyelim.
    1. BLOK
    <%
    dim objfso
    set objfso=server.CreateObject(”Scripting.FileSystemOb ject”)
    for each x in objfso.Drives
    set drivename=objfso.GetDrive(x)
    Response.Write “<a href=filesystem.asp?drive=”&drivename.DriveLetter& ”>”&drivename.DriveLetter&”</a> “
    next
    if Request(”drive”)<>”" then call FolderList(Request(”drive”))
    if Request(”foldername”)<>”" then call FileList(cstr(Request(”foldername”)))
    if Request(”filename”)<>”" then call FileDetails(cstr(Request(”filename”)))
    %>
    Bu blokta Filesytemobjesi yaratılıyor ve sistemde bulunan sürücüler (A:,C: v.s) listeleniyor.
    Dikkat ederseniz 3. satırda For each döngüsü görüyoruz.Bu döngü belli koleksiyonların içerisindeki elemanları listeler.
    Burada kullanmamızın sebebi Filesystem objesinin GetDrive koleksiyonun elemanlarını listemek içindir.
    if ile başlayan satırlar kontrol amacıyla konulmuştur.
    2. BLOK
    <%
    Function FolderList(Drivename)
    Response.Write ” &nbsp;<img src=ustfolder.gif id=ustfolder style=cursor:hand alt=”&chr(34)& _
    “bir üst klasöre gitmek için tıklayınız.”&chr(34)&”>”
    Response.Write “<br><br>”
    set RootFolders=objfso.GetDrive(Drivename).RootFolder
    set Folders=RootFolders.SubFolders
    set SubFiles=RootFolders.Files
    for each i in Folders
    Response.Write “<img src=folder.gif> <a href=filesystem.asp?foldername=”&i.ShortPath& _
    ” style=text-decoration:none>”&i.name&”</a><br>”
    next
    for each x in SubFiles
    Response.Write “<img src=file.gif> <a style=text-decoration:none href=”&chr(34)&”filesystem.asp?filename=”& _
    x.path&chr(34)&”>”&x.name&”</a><br>”
    next
    End Function
    %>
    Bir önceki kodda Sürücüleri listelemiştik fakat ordan seçilen sürücünün içerisindeki dosya ve klasörlerin nasıl listeleneceğinden bahsetmemiştik.
    İşte burada o işlemi yani seçilen sürücünün içeriğinin listelenmesi işlemini bu fonksiyon sayesinde gerçekleştiriyoruz.
    Ayrıca bu fonksiyon alt klasörlere gidildikçe onlara ait alt klasörleri de ekrana getirir.
    3. BLOK
    <%
    Function FileList(Foldername)
    Response.Write ” &nbsp;<img src=ustfolder.gif id=ustfolder style=cursor:hand alt=”&chr(34)& _
    “bir üst klasöre gitmek için tıklayınız.”&chr(34)&”>”
    Response.Write “<br><br>”
    set filesname=objfso.GetFolder(Foldername).Files
    set Foldersname=objfso.GetFolder(Foldername).SubFolder s
    for each i in Foldersname
    Response.Write “<img src=folder.gif> <a href=filesystem.asp?foldername=”&i.ShortPath& _
    ” style=text-decoration:none>”&i.name&”</a><br>”
    next
    for each x in filesname
    Response.Write “<img src=file.gif> <a style=text-decoration:none href=”&chr(34)& _
    “filesystem.asp?filename=”&x.path&chr(34)&”>”&x.na me&”</a><br>”
    next
    End Function
    %>
    Bu blok ise seçilen bir klasörün yada sürücünün altında bulunan dosyaları listemek amaçlı olarak kullanılır.
    Sürücüler,klasörler ve alt klasörler altındaki tüm dosyalar bu fonksiyon sayesinde listelenir.
    4. BLOK
    <%
    Function FileDetails(Filename)
    set filesdetail=objfso.GetFile(cstr(Filename))
    Response.Write ” &nbsp;<img src=ustfolder.gif id=ustfolder style=cursor:hand alt=”& _
    chr(34)&”bir üst klasöre gitmek için tıklayınız.”&chr(34)&”>”
    Response.Write “<div id=divfiles class=divstyle>”
    Response.Write “&nbsp;<b>Seçilen Dosyanın Ayrıntıları : </b><br><br>”
    Response.Write “&nbsp;<b>Path:</b> ” & cstr(Filename) & “<br>”
    Response.Write “&nbsp;<b>Dosya Adı :</b> ” & filesdetail.Name & “<br>”
    Response.Write “&nbsp;<b>Dosya Büyüklüğü :</b> ” & filesdetail.Size & ” KB <br>”
    Response.Write “&nbsp;<b>Dosya Tipi :</b> ” & filesdetail.Type & ” <br>”
    Response.Write “&nbsp;<b>Son Düzenleme Tarihi :</b> ” & filesdetail.DateLastModified & “<br>”
    Response.Write “&nbsp;<b>Son Erişim Tarihi :</b> ” & filesdetail.DateLastAccessed & “<br>”
    Response.Write “<br><br>&nbsp;<b>!</b><a href=”&chr(34)&filename&chr(34)& _
    ” target=_new style=text-decoration:none>Bu Dosyayı açmak için buraya tıklayınız.</a>”
    Response.Write “</div>”
    End Function
    %>
    Bu blokta bulunan fonksiyon ise ekrana seçilen dosya hakkında bilgiler getirir.
    Bu bilgiler ;
    · Dosyanın path’i
    · Dosyanın adı
    · Size olarak büyüklüğü
    · Dosya Tipi (exe,txt v.s)
    · Son düzenleme tarihi
    · Son erişim tarihi
    Ayrıca bu dosya Explorer tarafından açılabilecek bir dosya ise (txt,gif,jpg,excel,word,power point v.s) “ Bu Dosyayı açmak için buraya tıklayınız.” Linkine tıklayarak bu dosyayı açabiliriz.
    <script language=”VBScript”>
    sub ustfolder_Onclick()
    history.go(-1)
    end sub
    </script>
    Bu blok ise bir önceki klasöre gitmekte kullanılan alt programı içermektedir.
  • 01-04-2008, 16:47:08
    #16
    Eposta Aktivasyonu Gerekmekte
    <%
    ‘########################
    Sub SendMail(SendTo,From,ReplyTo,Subject,Body,Attachme nts)
    MailComponent=”cdo”‘### Defines which email component to use. Valid values are: “jmail”, “aspmail”, “cdo” or “cdonts” (Note: cdonts only works with the local server, SMTPMailServer is ignored! CDO has problems on some servers.).
    MailServer=”localhost”‘### SMTP Mailserver to be used to send account information to users.
    SenderIp=Request.ServerVariables(”HTTP_X_FORWARDED _FOR”)’Sender ip
    ‘ ### Send mail with jmail
    If LCase(MailComponent=”jmail”) Then
    Set Msg = Server.CreateObject( “JMail.Message” )
    Msg.ISOEncodeHeaders = false
    Msg.AddRecipient SendTo
    If ReplyTo<>”" Then Msg.ReplyTo = ReplyTo
    Msg.From = From
    Msg.Subject = Subject
    Msg.Body = Body
    If IsArray(Attachments) Then
    For i = 0 To Ubound(Attachments)
    Msg.AddAttachment Attachments(i)
    Next
    End If
    Msg.AddHeader “Originating-IP”, SenderIp
    Msg.send(MailServer)
    Msg.close
    Set Msg=Nothing
    ‘ ### Send mail with AspMail
    ElseIf LCase(MailComponent=”aspmail”) Then
    Set Mailer = Server.CreateObject(”SMTPsvg.Mailer”)
    Mailer.FromAddress = From
    Mailer.AddRecipient SendTo,SendTo
    If ReplyTo<>”" Then Mailer.ReplyTo = ReplyTo
    Mailer.Subject = Subject
    Mailer.BodyText = Body
    If IsArray(Attachments) Then
    For i = 0 To Ubound(Attachments)
    Mailer.AddAttachment Attachments(i)
    Next
    End If
    Mailer.AddExtraHeader “Originating-IP: ” & SenderIp
    Mailer.RemoteHost = MailServer
    SentOK=Mailer.SendMail
    Set Mailer=Nothing
    ‘ ### Send mail with Cdonts
    ElseIf LCase(MailComponent=”cdonts”) Then
    Set objNewMail = Server.CreateObject(”CDONTS.NewMail”)
    objNewMail.From = From
    If ReplyTo<>”" Then objNewMail.Value(”Reply-To”) = ReplyTo
    objNewMail.Value(”Originating-IP”) = SenderIp
    objNewMail.To = SendTo
    objNewMail.Subject =Subject
    objNewMail.Body = Body
    objNewMail.BodyFormat=1
    objNewMail.MailFormat=0
    If IsArray(Attachments) Then
    For i = 0 To Ubound(Attachments)
    objNewMail.AttachFile Attachments(i)
    Next
    End If
    objNewMail.Send
    Set objNewMail = Nothing
    ‘ ### Send mail with Cdo
    ElseIf LCase(MailComponent=”cdo”) Then
    Set cdoConfig = Server.CreateObject(”CDO.Configuration”)
    sch = “http://schemas.microsoft.com/cdo/configuration/”
    cdoConfig.Fields.Item(sch & “sendusing”) = 2
    cdoConfig.Fields.Item(sch & “smtpserver”) = MailServer
    ‘cdoConfig.Fields.Item(sch & “authenticate”) = 2 ‘Type of authentication, NONE, Basic (Base64 encoded), NTLM
    ‘cdoConfig.Fields.Item(sch & “sendusername”) = “username”
    ‘cdoConfig.Fields.Item(sch & “sendpassword”) = “parolam”
    cdoConfig.Fields.Item(sch & “smtpserverport”) = 25
    ‘cdoConfig.Fields.Item(sch & “smtpusessl”) = False
    cdoConfig.fields.update
    Set objNewMail = Server.CreateObject(”CDO.Message”)
    Set objNewMail.Configuration = cdoConfig
    objNewMail.From= From
    objNewMail.To= SendTo
    objNewMail.ReplyTo= ReplyTo
    ‘objNewMail.Cc= SendTo
    ‘objNewMail.Bcc= SendTo
    objNewMail.Subject=Subject
    objNewMail.TextBody=Body
    ‘objNewMail.HtmBody = “<h1>Thtml</h1>”
    ‘objNewMail.HtmBody = “file://c|/temp/test.htm”
    ‘objNewMail.HtmBody = “http://www.smslust.net”
    If IsArray(Attachments) Then
    For i = 0 To Ubound(Attachments)
    objNewMail.AddAttachment Attachments(i)
    Next
    End If
    objNewMail.Send
    Set objNewMail = Nothing
    End If
    End Sub
    SendTo=”a@dd.com”
    From=”noreply@prowww.net”
    ReplyTo=”sss@dd.com”
    Subject=”Selam”
    Body=”Test”
    SendMail SendTo,From,ReplyTo,Subject,Body,Attachments
    %>
  • 01-04-2008, 16:49:09
    #17
    Eposta Aktivasyonu Gerekmekte
    Compact and Repair

    Accessle uzun süre calistigimizda veri ekleyip sildimizde veritanımızın boyu ve kendisi şişmeye başlayacaktır.
    Genelde cok büyük sorunlar dogurmasada bu eger bir web sayfasında kullanıyorsak performans ve veribananı sıktınılarının giderilmesi için gerekebiliyor…

    büyük bir ihtimalle tüm kayitlarinizi silsenizde veritabanınızın boyunun cokda degişmediginide gözleriz ve compact ederiz.
    yazdıgım ufak scripti paylasmak istiyorum


    Arayüzümüz… (Anasayfamiz)

    DOSYA; Default.asp
    ——————————————————————-

    <html>
    <head>
    <meta http-equiv=”Content-Type” content=”text/html; charset=windows-1254″>
    <title>Veritabanını Ufalt ve Tamir et</title>
    <script language=”javascript” type=”text/javascript” src=”update.js”></script>
    <script language=”javascript”>
    function basla(CRdb,sIndex) {
    executeRequest(’aop=compact,veritabani=’+CRdb+’,sI ndex=’+sIndex);
    }
    function aop(sValue,sIndex) {
    basla(sValue,sIndex)
    }
    function xtasarimcom(sIndex,sText) {
    XTasarimComDCompact.DBFileName.options[sIndex].text = sText;
    }
    </script>
    </head>
    <body>
    <font face=”Lucida Sans Unicode” size=”2″>
    <!–#include file=”dblist.asp”–>
    </font>
    <p><font face=”Lucida Sans Unicode” size=”2″> Veritabanını Ufalt ve Tamir et</font></p>
    <form method=”POST” name=”XTasarimComDCompact”>
    <p><font face=”Lucida Sans Unicode” size=”2″><div id=”dblist”><% dbList %></div></font></p>
    </form>
    </body>
    </html>



    Update.Js

    Bu dosya scriptimizin önemli parcalarından birtanesi
    her nekadar AJAX kadar olmasada bu güncelleme yöntemini hemen hemen herşey için kullanabiliriz, sanırım tek kötü tarafi tam olarak asenktron calismiyor… olmasi


    <!–
    var SERVER_CONTROLLER = “dinamicCompactDB.asp”;
    function executeRequest(params) {
    var head = document.getElementsByTagName(’head’).item(0);
    var old = document.getElementById(’lastLoadedCmds’);
    if (old) head.removeChild(old);
    script = document.createElement(’script’);
    parameters = new String(params).split(’,');
    var scriptUrl = SERVER_CONTROLLER + ‘?rnd=’ + Math.random();
    for (var i = 0; i < parameters.length; i++) {
    scriptUrl += “&” + parameters[i];
    }
    script.src = scriptUrl;
    script.type = ‘text/javascript’;
    script.defer = true;
    script.id = ‘lastLoadedCmds’;
    void(head.appendChild(script));
    }
    function update(id, html) {
    var doc = eval(’document’);
    if (doc.layers) {
    var l = doc[id];
    l.document.open();
    l.document.write(html);
    l.document.close();
    } else if (doc.all && doc.all[id]) {
    doc.all[id].innerHTML = html;
    } else if (doc.createRange) {
    var l = doc.getElementById(id);
    var r = doc.createRange();
    while (l.hasChildNodes()) {
    l.removeChild(l.lastChild);
    }
    r.setStartAfter(l);
    var docFrag = r.createContextualFragment(html);
    l.appendChild(docFrag);
    }
    }
    function updatemesajlar(id, html) {
    update(’window’, id, html);
    }
    // –>



    veritabanlarımızın bulundugu dizini listeleyelim…

    DOSYA; DBList.asp
    ——————————————————————-


    <!–#include file=”baglanti.asp”–>
    <%
    ‘############################################ #####
    strDatabase = Request.Form(”DBFileName”)
    ‘################################################# #
    Private Sub dbList()
    Dim oFolders
    Set oFolders = Server.CreateObject(”Scripting.FileSystemObject”)
    Response.Write (”<Select Name=”"DBFileName”" size=”"15″” onclick=”"aop(this.value,XTasarimComDCompact.DBFil eName.selectedIndex)”">”)
    For Each Item In oFolders.GetFolder(strFolder).Files
    If LCase(Right(Item, 4)) = “.mdb” Then
    Response.Write (”<Option Value=”"” & Replace(Item, strFolder, “”)& “”" >” & Replace(Item, strFolder, “”) & ” [” & Replace(Item.size/1024, strFolder, “”)&”KB]”& “</Option>”)
    End If
    Next
    Response.Write (”</Select>”)
    Set oFolders = Nothing
    End Sub
    %>



    JetEngine.CompactDatabase

    DOSYA; dinamikCompactDB.asp

    <!–#include file=”baglanti.asp”–>
    <%
    Jet_Conn_Partial = “Provider=Microsoft.Jet.OLEDB.4.0; Data source=”
    strDatabase = Request(”veritabani”)
    Private Sub dbCompact(strDBFileName)
    SourceConn = Jet_Conn_Partial & strFolder & strDatabase
    DestConn = Jet_Conn_Partial & strFolder & “Temp” & strDatabase
    Set oFSO = Server.CreateObject(”Scripting.FileSystemObject”)
    Set oJetEngine = Server.CreateObject(”JRO.JetEngine”)
    With oFSO
    If Not .FileExists(strFolder & strDatabase) Then
    Response.Write(”alert(”" Eski veritabanı siliniyor… Lütfen tekrar deneyin “”);”)
    Stop
    Else
    If .FileExists(strFolder & “Temp” & strDatabase) Then
    Response.Write(”alert(”" Eski veritabanı siliniyor… Lütfen tekrar deneyin “”);”)
    .DeleteFile (strFolder & “Temp” & strDatabase)
    End If
    End If
    End With
    With oJetEngine
    .CompactDatabase SourceConn, DestConn
    Response.Write(”xtasarimcom(”& Request(”sIndex”) &”,’”& Request(”veritabani”) &” Tamiredildi…’)”)
    End With
    oFSO.DeleteFile strFolder & strDatabase
    oFSO.MoveFile strFolder & “Temp” _
    & strDatabase, strFolder& strDatabase
    Set oFSO = Nothing
    Set oJetEngine = Nothing
    End Sub
    if (Request(”aop”)=”compact”) then
    ‘Response.Write(”alert(”"”& Request(”sIndex”) & Request(”veritabani”) &”"”)”)
    dbCompact(Request(”veritabani”))
    End if
    %>

  • 01-04-2008, 16:49:46
    #18
    Eposta Aktivasyonu Gerekmekte
    Imports System
    Imports System.Data
    Imports System.Data.OleDb
    ’sayfanın page load olayına bu kodu yazıyoruz,siz isterseniz başka bir kontrole bağlarsınız.(buton vs)

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim baglanti As New OleDbConnection(”Provider=MSDAORA.1;User ID=oraclekullanıcısı;password=sifresi;Data Source=databaseadı;Persist Security Info=False”)
    baglanti.Open()
    Dim oku As New OleDbCommand(”select * from customer_info_tab”, baglanti)
    Dim okunan As OleDbDataReader
    okunan = oku.ExecuteReader()
    While okunan.Read()
    Response.Write(okunan.Item(”customer_id”) & ” ” & okunan.Item(”name”) & “<p>”)
    Response.Write(okunan.Item(”CREATION_DATE”))
    End While
    baglanti.Close()
    END Sub