Üye Girişi Yapınız     


    E-Posta
    

    Şifreniz
    



Şifremi Unuttum


Ana Sayfa Site Hakkında İletişim Ziyaretçi Defteri Döküman İndir Makale Ekle Haber Ekle

     Asp ile veritabanı işlemleri - Access veritabanına kayıt ekleme(Resimli kayıt ekleme)
     admin     17.03.2013     19:41:19

Merhaba arkadaşlar. ASP ile veritabanı işlemleri yazı dizimin birincisi olan access veritabanından kayıt okuma işlemini daha önce anlatmıştım. Bu yazımda sizlere yazı dizisinin ikincisi olan veritabanına kayıt ekleme işlemini anlatacağım. Sadece text kaydetmekle kalmayacağız eklediğmiz kayıtla ilişkili resim dosyasının sunucuya yüklenmesi ve veritabanına kaydedilmesi işlemini de anlatacağım.



Dana önce olduğu gibi veritabanı olarak Access 2007, veritabanı sağlayıcısı olarak Microsoft.Jet.OleDb.4.0 kullandım. Edit işlemini Dreamveawer üzerinde gerçekleştirdim.

Aşağıdaki adımları uygulayarak sizde kayıt ekleme ve dosya yükleme işlemlerini gerçekleştirebilirsiniz.

Adım-1 : Resimde gördüğünüz tabloya kayıt ekleyeceğiz. Tablodaki alanların veri türlerini haberid:otomatik sayı,haberbaslik:texthabertarih:text veya tarih/saathaber ayrinti:nothaberresimyol:metin olacak şekilde ayarlayınız.

Adım-2 : Haber ekleme için aşağıdaki gibi basit bir tasarım oluşturuyoruz.

Tasarımın Kodları : (ekle.html sayfası)

<title>Haber Ekleme</title>
</head>
<body>
<form name="form1" method="post" action="ekle.asp">
<table width="618" border="1">
<tr>
  <td width="200" bgcolor="#DDDDDD">Haber Başlığı</td>
  <td width="418"><input type="text" name="hb" width="300px" /></td>
</tr>
<tr>
  <td bgcolor="#DDDDDD">Haber Detayı</td>
  <td><textarea cols="60" rows="10" name="hd"></textarea></td>
</tr>
<tr>
  <td bgcolor="#DDDDDD">Resim Ekle</td>
  <td>
     <a href="resim_ekle.html" target="_blank">Resim Eklemek İçin Tıklayınız</a>  
  </td>
</tr>
<tr>
  <td bgcolor="#DDDDDD">İşlem Seç</td>
  <td>
    <input type="Submit" name="Kaydet" value="Kaydet" />&nbsp;&nbsp;
    <input type="Reset" name="Temizle" value="Formu Temizle" />
  </td>
</tr>
</table>
</form>
</body>

 
Adım-3 : Resim ekleyeceğimiz resim_ekle.html sayfasının oluşturulması.

Tasarımın kodları : (resim_ekle.html sayfası)

</title>Resim Ekleme Formu</title>
</head>
<body>
<form name="form1" method="post" action="resim_ekle.asp"  enctype="multipart/form-data">
<table width="447" border="1">
<tr>
   <td bgcolor="#DDDDDD">Haber Resmi</td>
   <td><input type="file" name="hr" /></td>
</tr>
<tr>
<td bgcolor="#DDDDDD">&nbsp;</td>
<td>
   <input type="Submit" name="Kaydet" value="Resmi Yükle" />
</td>
</tr>
</table>
</form>
</body>


Adım-4 : 
resim_ekle.html sayafasındaki Resim Yükle butonuna tıklayınca resmin sunucuya yüklenmesini sağlayacak olan resim_ekle.asp sayfasını oluşturalım.

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001 %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Habere Resim Ekleme</title>
</head>
<body>
  <div style="border:2px solid red; width:300px;">
<%
Dim yol
Dim dosya_adi
Set Upload = Server.CreateObject("Persits.Upload") ’Persist Upload bileşinimizi tanımlıyoruz
yol = Server.MapPath("/vt_baglanti/dosya")&"/" ’Yüklediğimiz resmin ana dizine göre konumunu belirliyoruz
Upload.OverwriteFiles = True ’Aynı resimden varsa üzerine yaz diyoruz.İstemiyorsak False olmalı
Upload.IgnoreNoPost = True
Upload.save yol’Seçilen dosya belirtilen yola yükleniyor.
For Each File in Upload.Files
     dosya_adi="dosya/" & File.Filename ’Yüklenen dosyanın adı öğreniliyor ve vt’ye kaydetmek üzere yol oluşturuluyor
     response.write("İşlem Durumu : Resim eklendi" & "<br><br>")
Next
session("resimyol")=dosya_adi ’Resmin yolunu ve adını session nesnesinde tutuyorum.
response.write("Resmin Yolu : " & session("resimyol"))
%>
</div>
</body>
<html>


Adım-5 : 
Haber ekleme sayfamız olan ekle.html sayfamızdaki(Adım-2) Kaydet butonuna tıkladığımızda veritabanına kaydetme işleminin gerçekleşmesini sağlayacak olan ekle.asp sayfamızı oluşturalım.

<%@ LANGUAGE="VBSCRIPT" CODEPAGE="65001" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Haber Ekleme</title>
</head>
<body>
   <div style="border:2px solid red; width:300px; height:150px;">
<%
Dim hb 
hb=Request.form("hb")
Dim hd 
hd=Request.form("hd")
Dim tarih
tarih = date
’Veritabanı işlemleri
dim bag_nesne
set bag_nesne = Server.CreateObject("ADODB.Connection")
bag_nesne.Open  "Provider=Microsoft.Ace.OLEDB.12.0; Data Source=" & Server.MapPath("data/benimsitem.accdb")Dim sorgu
sorgu="INSERT INTO haber(haberbaslik, habertarih, haberayrinti, haberresimyol) VALUES(’" & hb & "’, ’" & tarih & "’, ’" & hd & "’, ’" & session("resimyol") & "’)"
bag_nesne.Execute(sorgu)
bag_nesne.Close
Response.write("<br>" & "Haber Eklendi!" & "<br><br>")
%>
<a href="ekle.html">Yeni Ekle</a>
</div>
</body>
</html>

Adım-6 : Uygulamanın wwwroot içerisinde yer alan proje klasörünüzdeki dosya yükleme klasörüne(buradaki klasörün adı:dosya, fiziksel yolu : "C:\inetpub\wwwroot\vt_baglanti\dosya\" şeklindedir. Zaten kodlardan anlamış olmanız gerekir.) tam denetim yetkisi veriniz. Bu işlem için klasör üzerine sağ tıklayınız ve Güvenlik sekmesinden IIS_USER kullanıcısı için tam denetim yetkisi veriniz.

Uygulamanızı çalıştırdığınızda aşağıdaki ekran görüntüleri karşınıza çıkar.

Bu mesaı görüyorsanız dosya yüklenmiş demektir. Ama yinede harddiskinizde klasörünüzü açarak dosyanın yüklenip yüklenmediğin kontrol ediniz.

İşlem başarı ile gerçekleştiğinde veritabanındaki haber tablonuzu açıtığınızda kayıt işleminin gerçekleştiğini göreceksiniz.


Hatırlatma :
 Dosya yükleme için Persits.Upload bileşenini bilgisayarınıza kurunuz. Bu bileşeni indirmek için tıklayınız...


Not : 
Aklınıza "Neden haber başlığı ve haber detayını girdiğimiz sayfadan dosya upload işlemini gerçekleştirip tek asp sayfasında işlemi gerçekleştirmiyoruz?" şeklinde bir soru gelmiş olabilir.
         
Cevap : Denedim ama olmadı. Hata veriyor. Nasıl yapılabileceğini araştırdım, başkalrına sordum, forum.donanimhaber’e sordum ama cevap alamadım. O yüzden dosya bilgisini bir session nesnesinde tutarak çözüm bulmaya çalıştım. Yapabilen arkadaş olursa paylaşırsa sevinirim.

Hepinize iyi çalışmalar. Bir sonraki derste görüşmek üzere.. Hoşçakalın! :)

Facebook'ta Paylaş    
Diğer ASP İçerikleri       Tüm Yazılar        Ana Sayfa


  =>Soru Sorun veya Yorum Yazın...

İsim Giriniz :
  

  =>Yapılan Yorumlar...

Yener Sönmez    17.03.2013    21:55:49

Artık asp de vb değil c# popüler. Bi meslek öğretmenleri dersleei megep kapsamında da c#’a göre işliyoruz.

sizden ricam sizin de makalelerinizi c# ’a göre yayınlamamızın.

selamlar


Ayhan Sarı    17.03.2013    23:28:07

Biliyorum Yener hocam. Bizde öyle yapacağız. Zaten ASP.Net makalelerini bundan sonra C# ile yayınlayacağım. Ama bu makale .net değil sadece asp makalesi olduğu için vbscript kullandım. Klasik asp’de C# ya da C türevi bir dil bildiğim kadarıyla kullanılmıyor. Yanlış mı biliyorum acaba!


Ömer    25.05.2013    22:31:00

Ben makalenize uygun olarak kayıt ekleme yapmak istiyorum fakat bir türlü sorunu çözemedim her seferinde neyi denediysem şu hatayı veriyor:

"An error occurred on the server when processing the URL. Please contact the system administrator.
If you are the system administrator please click 
here to find out more about this error."

<%

        Dim K_Id

        K_Id = Request.form("K_Id")

        Dim K_Adi 

        K_Adi = Request.form("K_Adi")

        Dim K_Soyadi 

        K_Soyadi = Request.form("K_Soyadi")

        Dim K_Takim

        K_Takim = Request.form("K_Takim")

’’’’’’’ Veritabanı işlemleri

        dim bag_nesne

        set bag_nesne = Server.CreateObject("ADODB.Connection")

        bag_nesne.Open "Driver={Microsoft Access Driver (*.accdb)}; dbq=" & Server.MapPath("mmm/data.accdb")

’       set bag_nesne = Server.CreateObject("ADODB.Connection")

bag_nesne.Open "Provider=Microsoft.Ace.OLEDB.12.0; Data Source=" & Server.MapPath("mmm/data.accdb")

Dim sorgu

        sorgu="INSERT INTO kayit(K_Id, K_Adi, K_Soyadi, K_Takim) VALUES(’" & K_Id & "’, ’" & K_Adi & "’, ’" & K_Soyadi & "’, ’" & K_Takim & "’)"

bag_nesne.Execute(sorgu)

        bag_nesne.Close

        Response.write("<br>" & "Kayıt Eklendi!" & "<br><br>")

%>

 

sanırım veritabanı yoluya ilgili bir sorun var hala daha mantıığını kavramış değilim.

veritabanı dosyam " C:\inetpub\wwwroot\mmm\data.accdb" nasıl düzenleme yapmam gerekiyor bana maille geri dönül yapabilirmisiniz? spyland1k@gmail.com


admin    27.05.2013    09:58:15

K_Id alanının tütü Otomatik sayı ise onu sorguda yazma. Bir de mmm proje klasörürün adı ise onuda yazma. Eğer proje klasörü içinde ayrı bir alt klasör ise mmm klasörünün yazmanda bir hata yok. 


admin    27.05.2013    10:07:14

Birde;
bag_nesne.Open "Driver={Microsoft Access Driver (*.accdb)}; dbq=" & Server.MapPath("mmm/data.accdb") 

satırına gerek yok!!!

 


ÖMER PINAR    27.05.2013    13:12:02

 suan disaridayim aklimda kaldigi kadariyla bag_nesne.open driver satirini iptal ettigimdede calismiyordu , ayrica "wwwroot"klasorunun icinde "mmm" klasorunun icinde calisiyorum yani veritabani felan ayni "klasor" icerisinde baglanti yolu olarak ne yazmam gerekiyo 


admin    28.05.2013    08:45:35

Veritabanı bağlantı yolu olarak Server.MapPath("Veritabani.accdb") şeklinde yap. Çünkü mmm zaten projenin klaörürü. Onu belirtmeye gerek yok. Ama mmm içinde alt klasör kullanılırsa onlara erişmek için o klasörlerin adını yazmak gerekir.


Ömer    28.05.2013    19:33:32

şuan denedim fakat yine çalışmadı. 

  • Dim bag_nesne
  • bag_nesne.Open "Provider=Microsoft.Ace.OLEDB.12.0; Data Source=" & Server.MapPath("data.accdb")

Ayrıca bazı kaynaklardan incelediğimde Windows üzerinden Veri Kaynakları (ODBC)’den ayarlama yapılıyo sanırım gerek varmı ona ?

bence ondan kaynaklanıyor?


admin    29.05.2013    10:25:02

Hayır. Ben hiç bir ayar yapmadım. Windows7 ve Office 2007 kullanıyorum. Bu uygulamayı bizzat kendi bilgisayarımda çalıştırdım ve ondan sonra paylaştım. Hiç bir sorun yok. 


Bir Dost    25.06.2013    15:27:07

 çok saol sabahtan beri uğraşıyorum kimse doru düzgün bişey yazmamış bu konu ile ilgili teşekkürler


admin    26.06.2013    18:52:46

Bişey değil :)