• 15-06-2008, 03:38:47
    #1
    Üyeliği durduruldu
    Tamamiyle alıntıdır yararlı bir konu olacağı düşüncesindeyim.
    Uyarı Bu yazı orta düzey bilgi gerektiren bir yazıdır!
    Bu dersimizde basit olarak bir alışveriş sitesi yapıcağız.Baya uzun bir ders olacak sabırla okursanız faydalı şeyler
    öğrendinizi görüceksiniz.Yazıma başlamadan önce veritabanıyla ilgili dersleri okumanızı öneriyorum."db.mdb"
    diye bir veritabanımımız olsun içine urun adında bir tablo oluşturalım.Tablomuzun alanları :
    id (otomatik sayı ) , ad(not ) , fiyat (sayı ) olsun ve tablomzua bir kaç kayıt girin.Ana sayfamızda bu tablomuzdaki kayıtları listelicez.Veritabanı bağlantımızı
    "db.asp" olarak kaydedelim:
    Kod Alanı:
    <%
    db = Server.MapPath("db.mdb" )
    Set baglanti = Server.CreateObject("ADODB.Connection" )
    baglanti.Open "Provider=Microsoft.JET.OLEDB.4.0; Data Source=" & db & ";" ' veritabanı bağlantımızı yaptık
    %>
    Veritabanı bağlantımızı her sayfamızda yeniden yazmak yerine include etmek sitemizin performansını arttıracaktır.
    Ana Sayfamız ise Şöyle olacak:
    Kod Alanı:
    Ana Sayfa <br />
    <!-- #include file="db.asp" -->
    <%
    Set Rs = Server.CreateObject("ADODB.RecordSet" )
    sql = "Select * from urun order by id desc;"
    Rs.Open sql,baglanti,1,3
    if Rs.eof then
    Response.Write "Kayıt Yok"
    End if
    Do while not Rs.eof 'Tum kayıtları yazdırabilmek icin dongumuzu baslattık
    with Response
    .Write " Urun Ad: "&Rs("ad" )&" " ' : boslugun ascii kodudur.Urun adımızı yazdırdık
    .Write "Urun Fiyat: "&Rs("fiyat" )&" YTL " 'Urun fiyatını yazdırdık
    .Write "<a href=""sepete_at.asp?id="&Rs("id" )&""">Sepete At</a> <br />" 'sepete_at.asp 'ye link verdik.Alacağımız urunu belirleyebilmek içinde urunun idsini sepete_at.asp sayfamıza yolladık
    End with
    Rs.MoveNext
    Loop'Dongumuzu sonlandırdık
    %>
    <br /><a href="yonetici.asp">Yönetici Girişi</a>
    Ana Sayfamız tamamlandı.Şimdi sıra sepete_at.asp 'de.Bunun için veritabanımızda sepet adında bir tablo oluşturalım.Tablonun Alanları:
    id (otomatik sayı ) , Session_id(not ) , urun_id (sayi ) şeklinde olacak.Artık sepete_at.asp sayfamızı oluşuturabiliriz:
    Kod Alanı:
    <!-- #include file="db.asp" -->
    <%
    id = Request.QueryString("id" ) 'ana sayfamızdan yolladığımız id değerini id değişkenine atadık
    if id = "" or not isnumeric(id ) then 'eğer id değeri boşsa yada bir sayı değilse
    Response.Write "Güvenlik Duvarı" 'Güvenlik Duvarı yazısı yazdırdık
    Response.End 'Bu bir güvenlik önlemidir kötü niyetli kişiler eğer bu kontrolu yapmazsanız sitenizi hackliyebilirler
    End if
    Set Rs = Server.CreateObject("ADODB.RecordSet" ) 'urunumuzle ilgili bilgileri alabilmek için RecordSetimizi açtık
    sql = "Select * from urun where id = "&id&" " 'Sql kodumuz
    Rs.Open sql,baglanti,1,3
    if Rs.eof then 'Eger kayıt bulunamzsa
    Rsponse.Write "Böyle bir ürün bulunmamaktadır" 'Böyle bir ürün bulunmamaktadır yazısı yazdırdık
    Response.End
    End if
    Set Rs2 = Server.CreateObject("ADODB.RecordSet" )'urunumuzu sepete atabilmek için RecordSetimizi açtık
    sql = "Select * from sepet" 'sql kodumuz
    Rs2.open sql,baglanti,1,3
    Rs2.AddNew 'sepet adlı tablomuza yeni bir kayıt ekledik
    Rs2("Session_id" ) = Session.SessionID 'tablomuzdaki Session_id adlı alanımızın değerini oturumuz idmiz oalrka belirledik
    Rs2("urun_id" ) = Rs("id" ) 'tablomuzdaki urun_id adlı alanımızın değerini ilk tablomuzdaki id alanının değeri olarka belirledik
    Rs2.Update
    Response.Write "Urun Sepetinize Eklendi" 'Urun Sepetinize Eklendi yazısı yazdırdık.
    Response.Write "<br />Sepetinize bakmak için <a href=""sepetim.asp"">tıklayın</a>" 'Sepetimizi kontrol etmek için sepetim.asp 'ye link verdik
    %>
    Geriye 4 tane sayfamız kaldı ilki sepetimizi kontrol edeceğimiz sayfa ikincisi sepetimizden urun cıkaracagımız sayfa ucuncusu urunleri
    sipariş edeceğimiz sayfa sonuncusu ise site sahibinin sipariş edilen urunleri göreceği sayfa.İşte sepetim.asp sayfamızın kodları:
    Kod Alanı:
    <!-- #include file="db.asp" -->
    <%
    Session_id = Session.SessionID
    Set Rs = Server.CreateObject("ADODB.RecordSet" )
    Sql = "Select * from sepet where session_id = '"&Session_id&"' "
    Rs.Open sql,baglanti,1,3
    if Rs.Eof Then
    Response.Write " Hiç Bir Ürün Bulunamadı"
    End if
    Do while not Rs.eof
    Set Rs2 = Server.CreateObject("ADODB.RecordSet" ) 'urunumuzle ilgili bilgileri alabilmek için RecordSetimizi açtık
    sql = "Select * from urun where id = "&Rs("urun_id" )&" " 'Sql kodumuz
    Rs2.Open sql,baglanti,1,3
    with Response
    .Write " Urun Ad: "&Rs2("ad" )&" " '.Urun adımızı yazdırdık
    .Write "Urun Fiyat: "&Rs2("fiyat" )&" " 'Urun fiyatını yazdırdık
    .Write "<a href=""sepetten_cikart.asp?id="&Rs2("id" )&""">Sepeten Çıkart </a> <br />"'sepetten_cikart.asp 'ye link verdik.
    End with
    Rs.MoveNext
    Loop
    %>
    <br /><a href="siparis.asp">Ürünleri Sipariş Et</a>
    sepetim.asp de bitti sırada ürünlerimizi çıkaracağımız sepetten_cikart.asp var :
    Kod Alanı:
    <!-- #include file="db.asp" -->
    <%
    id = Request.QueryString("id" ) 'Diğer sayfamızdan gelen di değerini id değişkenine atadık
    if id = "" or not isnumeric(id ) then 'Güvenlik kontrolu
    Response.Write "Güvenlik Duvarı!"
    End if
    Session_id = Session.SessionID
    Set Rs = Server.CreateObject("ADODB.RecordSet" ) 'RecordSetimizi açtık
    sql = "Delete from sepet where urun_id = "&id&" and session_id = '"&Session_id&"' " 'Aynı ürünü iki kişininde sepete atma olsaılığ olduğundan oturum idsi kontrolude yaptık
    Rs.Open sql,baglanti,1,3
    Response.Write "Urun Sepepetten Çıkarıldı"
    %>
    Geldik urunlerimizi sipariş edeceğimiz sayfaya bunun için bir form hazırlıyacağız ziğariş edenin adı soyadını, adresini , ve oturum idsini
    veritabanına kaydettireceğiz.Bu yüzden siparis adında yeni bir tablo oluşturlım.Tablomuzun alanları : id (otomatik sayı ),ad-soyad(not ),
    adres(not ),tel(sayi ) ,session_id(not ).Formumuzun bulunduğu siparis.asp sayfamız:
    Kod Alanı:
    <form action="siparis_kayit.asp" method="post"/>
    <label for="ad-soyad">Adınız Soyadınız:</label><input type="text" name="ad-soyad" /><br />
    <label for="tel">Telefonunuz:</label><input type="text" name="tel" /><br />
    <label for="adres">Adresiniz:</label><input type="text" name="adres" /><br />
    <input type="submit" value="Sipariş Et" />
    </form>
    siparis_kayit.asp :
    Kod Alanı:
    <!-- #include file="db.asp" -->
    <%
    ad_soyad = Request.Form("ad-soyad" ) 'Form değerlerimizi değişkenlere aktardık
    tel = Request.Form("tel" )
    adres = Request.Form("adres" )
    if ad-soyad = "" or tel = "" or adres = "" then 'eğer form değerleri boşsa
    Response.Write "Boş Alan Bıraktınız" 'boş alan bıraktınız yazdırdık
    Response.End
    End if
    Set Rs = Server.CreateObject("ADODB.RecordSet" )
    sql = "Select * from siparis"
    Rs.Open sql,baglanti,1,3
    Rs.AddNew 'Yeni kayıt ekledik
    Rs("ad-soyad" ) = ad_soyad
    Rs("tel" ) = tel
    Rs("adres" ) = adres
    Rs("session_id" ) = Session.SessionID
    Rs.Update
    Response.Write "Siparişiniz Alınmıştır"
    %>
    Evet makalemizde sonlara yaklaşıyoruz geriye sadece site sahibinin siparişleri görmesi kaldı.Yönetici girişi yapılırken sifre sorulacak.
    Şifreli sayfa oluşturmayıda geçen derslerde anlatmıştım.Konuya buradan ulaşabilirsiniz.
    yonetici.asp:
    Kod Alanı:
    <!-- #include file="db.asp" -->
    Yonetici <br /><%
    if Session("giris" ) = "evet" then 'eğer giriş oturumunun değeri evetse
    Set Rs = Server.CreateObject("ADODB.RecordSet" )
    sql = "Select * from siparis order by id desc;"
    Rs.Open sql,baglanti,1,3
    Response.Write " <a href=""siparis_detay.asp?id="&Rs("id" )&"""> "&Rs("ad-soyad" )&" </a> <br />" 'sipariş verenin adını yazdırdık adına tıklanılınca da detayalrın açılması için link verdik
    Else ' değilse
    Response.Write "<a href=""giris.asp"">Giriş Yapmalısınız</a>" 'giris.asp dosyasına link verdik.
    End if
    %>
    giris.asp :
    Kod Alanı:
    <form action="kontrol.asp" method="post" />
    Şifreyi Girin : <br />
    <input type="password" name="sifre" />
    <input type="submit" value="Giriş" />
    </form>
    Kontrol.asp :
    Kod Alanı:
    <% sifre = Request.Form("sifre" ) ' formumuzun değerini sifre değişkenine atadık
    if sifre = "" then ' formun doldurulup doldurulmadığını kontrol ediyoruz
    Response.Write "Sifre Girmediniz!"
    End if
    gsifre = "123456" 'giriş sifresini burdan değiştirebilirsiniz
    if sifre = gsifre then 'eğer girilen şifre giriş şifresine eşitse
    Session("giris" ) = "evet" 'giriş oturumunun değeri evet olcak
    Response.Redirect "yonetici.asp" 'yonetim sayfasına yönlendirdik
    else 'değilse
    Response.Redirect "yonetici.asp" 'giriş oturumuna değer vermeden yonetim sayfasına yönlendirdik
    End if
    %>
    Evet şimdi yöneticinin detaylara bakabilmesi için siparis_detay.asp 'yi oluşturalım:
    Kod Alanı:
    <!-- #include file="db.asp" -->
    <%
    id = Request.QueryString("id" ) 'Diğer sayfamızdan gelen id değerini id değişkenine atadık
    if id = "" or not isnumeric(id ) then 'Güvenlik kontrolu
    Response.Write "Güvenlik Duvarı!"
    End if
    Set Rs = Server.CreateObject("ADODB.RecordSet" ) 'RecordSetimizi açtık
    sql = "Select * From siparis where id = "&id&" " 'sql kodumuz
    Rs.Open sql,baglanti,1,3
    with Response
    .Write "Ad-Soyad:"&Rs("ad-soyad" )&" <br />" 'bilgileri sıraladık
    .Write "Telefon:"&Rs("tel" )&" <br />"
    .Write "Adres:"&Rs("adres" )&" <br />"
    .Write "<br />Aldığı Ürünler: <br />"
    End with
    Set Rs2 = Server.CreateObject("ADODB.RecordSet" )'RecordSetimizi açtık
    sql = "Select * from sepet where session_id='"&Rs("session_id" )&"' " 'sql kodumuz
    Rs2.Open sql,baglanti,1,3
    Do while not Rs2.eof 'kayıtların hepsini sıralyabilmek için dongumuzun başlangıcı
    Set Rs3 = Server.CreateObject("ADODB.RecordSet" )
    sql = "Select * from urun where id = "&Rs2("urun_id" )&" "
    Rs3.Open sql,baglanti,1,3
    Response.Write " "&Rs3("ad" )&" <br />"'bilgileri sıraladık
    Rs2.MoveNext
    Loop 'dongumuzun sonu
    %>
  • 15-06-2008, 11:21:38
    #2
    karışık
    kodları [code ] [/code ] tagı içerisine alırmısın
  • 15-06-2008, 13:16:27
    #3
    böğle yapacağına sen bize hazırlasan *.rar layıp upload etsen daha iyi olmaz mı ?
    yinede güzel paylaşım
  • 02-07-2008, 11:58:43
    #4
    - Öncelikle en büyük yanlış veritabanı seçimidir.
    Yani halen Ms Access veritabanları ile site yapmak sitenizin gelişimini, büyümesini engeller. Tavsiyemiz MySQL veya MSSQL gibi Ip tabanlı veritabanı sunucularıdır. Benim tercihim MySQL olurdu.

    - İkinci sorun ise veritabanında sorguların ADO nesneleri ile yapılmasıdır.
    Artık ADO nesneleri ile yapılmış bir kodun sunucuya ne kadar zarar verdiğini farketmelisiniz. Aşağıda yanlış ve doğru kullanım üzerine örnekler var.


    conn ifadesi veritabanı bağlantısı olarak kullanılmıştır.

    Yanlış Kullanım:
    set rs=server.createobject("adodb.recordset")
    SQL="select * from makale"
    rs.open SQL,conn,1,3

    Doğru Kullanım
    Set rs = conn.execute("SELECT makale_id, makale_adi, makale_icerik FROM makale WHERE makale_aktif = 1 ORDER bu makale_tarih desc")

    Yani, boş yere set rs tanımlaması kullanmayın, yazacağınız tüm sql cümlesini bir seferde execute ediniz. Gereksiz şeyleri SELECT * FROM ile getirmeyiniz.

    Yanlış Kullanım
    set rs=server.createobject("adodb.recordset")
    SQL="select * from makale where makale_id = " & id
    rs.open SQL,conn,1,3
    rs.delete
    rs.update

    Doğru Kullanım
    set siliver = conn.execute("DELETE * FROM makale WHERE makale_id = " & id)

    Tek bir sql cümlesi yazarak işlemi tamamlayınız. Önce veriyi getirip, silip güncellemek saçmalıktır.

    - Veritabanı bağlantısını kapatmama sorunu.
    Veritabanına bağlanıp işiniz bitince (sayfa dibinde veya yönlendirme öncesi) lütfen aşağıdaki kodları kullanınız. Emin olun çok rahat edeceksiniz.

    Alıntı
    <%
    on error resume next 'belki kapalıdır, hata vermesin dedim
    conn.close
    set conn = nothing
    %>

    Aslında daha bir çok pratik ve olması gereken kullanım örnekleri verebiliriz, ancak unutmayın bilgi sizde olduğu sürece değerlidir. Herşey paylaşılmamalıdır.
  • 02-07-2008, 13:21:01
    #5
    kitapalemi teşekkürler.
    Ben access kullanıyorum, mysql'a geçmek istiyorum, nette o kadar araştırdım yararlı bişey bulamadım, mysql ile ilgili bi kaç örnek verebilirmisin.
  • 02-07-2008, 13:41:28
    #6
    Ayrı bir başlıkta dersler halinde verebilirim. Ne kadar iyi kod yazarsanız o kadar iyi hosting müşterisi olursunuz.

    www.aspmysql.com u almıştım bu iş için
  • 02-07-2008, 15:57:32
    #7
    Daha duruyomusun sen
  • 05-07-2008, 01:46:03
    #8
    kitapalemi adlı üyeden alıntı: mesajı görüntüle
    Ayrı bir başlıkta dersler halinde verebilirim. Ne kadar iyi kod yazarsanız o kadar iyi hosting müşterisi olursunuz.
    ASP ve MySQL @ aspmysql.com u almıştım bu iş için
    aspmysql.com Proje | Proje ekibinin diye biliyorum sen ne zaman aldın acaba