Asp.net Yorum Sistemi

Asp.net ile oluşturduğunuz sitelerde girilen haberler ile ilgili olarak ziyaretçilerin mesaj veya yorum yazabilmesi için gerekli olan yorum sistemini basit bir örnekle açıklamaya çalışacağım.
İlk olarak haberleri ve yorumları kaydedebilmek için bir veritabanı ve tablolar oluşturmamız gerekli uygulamamda kullandığım tablolar ve yapıları aşağıdaki gibidir.
aspnetyorumsistemi
Veritabanını oluşturduktan sonra projemizin üzerinde sağ tıklayarak Add-Add Asp.Net Folder-App_Data seçenekleri ile App_Data klasörünü sisteme dahil ediyoruz daha sonra oluşturduğumuz veritabanını sisteme eklemek için App_Data klasörü üzerinde sağ tıklayıp Add-Existing item- seçeneğinden veritabanımızı seçip projemize ekliyoruz.
aspnetyorumsistemi1
İlk olarak haberleri görüntülemek için gerekli olan sayfamızı hazırlayacağız bunun için form üzerine bir GridView ve bir AccessDataSource ekleyerek gerekli ayarlamaları yapıyoruz
kodlarımız..:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="haberid" DataSourceID="AccessDataSource1" CellPadding="4" 
            ForeColor="#333333" GridLines="None">
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
            <Columns>
                   <asp:BoundField DataField="baslik" HeaderText="Haber Başlığı" 
                    SortExpression="baslik" />
                <asp:BoundField DataField="haber" HeaderText="Haber" SortExpression="haber" />
                <asp:HyperLinkField DataNavigateUrlFields="haberid" 
                    DataNavigateUrlFormatString="haberoku.aspx?id={0}" DataTextField="haberid" 
                    Text="Devamı" DataTextFormatString="Devamı" />
            </Columns>
            <EditRowStyle BackColor="#999999" />
            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
            <SortedAscendingCellStyle BackColor="#E9E7E2" />
            <SortedAscendingHeaderStyle BackColor="#506C8C" />
            <SortedDescendingCellStyle BackColor="#FFFDF8" />
            <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
        </asp:GridView>
        <asp:AccessDataSource ID="AccessDataSource1" runat="server" 
            DataFile="~/App_Data/haber.accdb" SelectCommand="SELECT * FROM [haberler]">
        </asp:AccessDataSource>
        </div>
    </form>
</body>
</html>

aspnetyorumsistemi2
Şimdi de haberlerin detayları ve yorum ekleme bölümü için haberoku sayfamızı yapacağız.
Haberoku sayfasında haberin detayları için bir GridView ve AccessDataSource , yorumları görüntülemek için yine GridView ve AccessDataSource ekliyoruz yalnız bunları Updatepanel içerisine ekleyerek sadece bu alanda sayfalama veya yenileme işleminin geçerli olmasını sağlıyoruz ve son olarak da orum girişi içim bir form ekliyoruz.

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="haberid"
            DataSourceID="AccessDataSource1">
            <Columns>
             
                <asp:BoundField DataField="baslik" HeaderText="baslik" 
                    SortExpression="baslik" />
                <asp:BoundField DataField="haber" HeaderText="haber" SortExpression="haber" />
            </Columns>
        </asp:GridView>
        <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/haber.accdb"
            SelectCommand="SELECT * FROM [haberler] WHERE ([haberid] = ?)">
            <SelectParameters>
                <asp:QueryStringParameter Name="haberid" QueryStringField="id" Type="Int32" />
            </SelectParameters>
        </asp:AccessDataSource>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:GridView ID="GridView2" runat="server" AllowPaging="True" 
                    AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="yorumid" 
                    DataSourceID="AccessDataSource2" CellPadding="4" ForeColor="#333333" 
                    GridLines="None">
                    <AlternatingRowStyle BackColor="White" />
                    <Columns>
                        
                        <asp:BoundField DataField="adsoyad" HeaderText="adsoyad" 
                            SortExpression="adsoyad" />
                        <asp:BoundField DataField="mail" HeaderText="mail" SortExpression="mail" />
                        <asp:BoundField DataField="mesaj" HeaderText="mesaj" SortExpression="mesaj" />
                    </Columns>
                    <EditRowStyle BackColor="#7C6F57" />
                    <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                    <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                    <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
                    <RowStyle BackColor="#E3EAEB" />
                    <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
                    <SortedAscendingCellStyle BackColor="#F8FAFA" />
                    <SortedAscendingHeaderStyle BackColor="#246B61" />
                    <SortedDescendingCellStyle BackColor="#D4DFE1" />
                    <SortedDescendingHeaderStyle BackColor="#15524A" />
                </asp:GridView>
                <asp:AccessDataSource ID="AccessDataSource2" runat="server" 
                    DataFile="~/App_Data/haber.accdb" 
                    SelectCommand="SELECT * FROM [yorumlar] WHERE ([haberid] LIKE '%' + ? + '%') ORDER BY [haberid] DESC">
                    <SelectParameters>
                        <asp:QueryStringParameter Name="haberid" QueryStringField="id" />
                    </SelectParameters>
                </asp:AccessDataSource>
            </ContentTemplate>
          
        </asp:UpdatePanel>
         <table class="style1">
                        <tr>
                            <td class="style3">
                                <span lang="tr">Adı</span>
                            </td>
                            <td>
                                <asp:TextBox ID="adi" runat="server"></asp:TextBox>
                            </td>
                        </tr>
                        <tr>
                            <td class="style3">
                                <span lang="tr">Soyadı</span>
                            </td>
                            <td>
                                <asp:TextBox ID="soyadi" runat="server"></asp:TextBox>
                            </td>
                        </tr>
                        <tr>
                            <td class="style3">
                                <span lang="tr">Mesajı</span>
                            </td>
                            <td>
                                <asp:TextBox ID="mesaj" runat="server"></asp:TextBox>
                            </td>
                        </tr>
                        <tr>
                            <td class="style3">
                                <asp:Label ID="Label1" runat="server"></asp:Label>
                            </td>
                            <td>
                                <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="yorumekle" />
                            </td>
                        </tr>
                    </table>
    </div>
    </form>
</body>
</html>

aspnetyorumsistemi3
Sayfamıza yorumları eklemek ve hangi haberin görüntülendiğini tespit etmek içinde aşağıdaki kodları giriyoruz

protected void Page_Load(object sender, EventArgs e)
        {
            Label1.Text = Request.QueryString["id"];

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            OleDbConnection db_baglanti;

            db_baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; DATA Source=" + Server.MapPath("~/App_Data/haber.accdb"));
            db_baglanti.Open();
            OleDbCommand com = new OleDbCommand(" insert into yorumlar (haberid,adsoyad,mail,mesaj) values(@haberid,@adsoyad,@mail,@mesaj)", db_baglanti);
            com.Parameters.Add("@haberid", OleDbType.Variant).Value =Int16.Parse(Label1.Text);
            com.Parameters.Add("@adsoyad", OleDbType.Variant).Value = adi.Text;
            com.Parameters.Add("@mail", OleDbType.Variant).Value = soyadi.Text;
            com.Parameters.Add("@mesaj", OleDbType.Variant).Value = mesaj.Text;
            int x = com.ExecuteNonQuery();
            if (x > 0)
            {
            }
            com.Dispose();
            db_baglanti.Close();
           GridView2.DataSourceID = "AccessDataSource2";
            GridView2.DataBind();
        }
  • cahit

    This application is currently offline. To enable the application, remove
    the app_offline.htm file from the application root directory. BU hatayı veriyor . daha önceden vermıyordu . ve sayfa acılıyordu fakat gridwiev ve accessource neslerı gorunmuyordu ?

    • BilisimOgretmeni

      Projenizin içinde app_offline.htm dosyası varsa silip tekrar denermisiniz..

  • burhan

    merhaba hocam şu hatayı alıyorum Implicit conversion from data type sql_variant to int is not allowed. Use the CONVERT function to run this query. yardımcı olurmusunuz

    • BilisimOgretmeni

      oluşturduğunuz veritabanındaki alanların veri türlerini yukarıdaki tablo ile aynı olup olmadığını kontrol edebilirmisiniz…

  • RL

    bu kısma using.system bişey bişey.. eklenmesi gerekmiyor mu onuda yazar mısınız

    • BilisimOgretmeni

      using System.Data;
      using System.Data.OleDb;

      kod bölümünde bunları eklemeniz gerekiyor

      • RL

        Line 24: com.Parameters.Add(“@haberid”, OleDbType.Variant).Value = Int16.Parse(Label1.Text);

        bu hatayı veriyor

        • BilisimOgretmeni

          haberoku sayfasını değilde ilk olarak default sayfasını çalıştırıp haberin devamı linkine basıp çalıştırırsanız sorun olmaz, aksi halde direkt yorum sayfası çalıştığı zaman yorum eklenecek haberin id numarası olmadığı için hata verir.

          • RL

            default sayfasını açıyorum ne hata veriyo nede çalışıyo bomboş bi sayfa var. en üstte ilk verdiğiniz kodları kopyaladım direk onların dışında bişey yazılması gerekiyor mu

          • BilisimOgretmeni

            veritabanı oluşturduktan sonra haberler tablosuna kayıt eklemeniz gerekli eğer eklediyseniz çalışması lazım…

          • RL

            Veri tabanına bişeyler yazınca sorunsuz çalıştı teşekkürler

          • BilisimOgretmeni

            rica ederim iyi çalışmalar…

  • ogrenci

    Çok teşekkür ederim bütün sınıfın mezun olmasına vesile oldunuz 😀