Tekil Mesaj gösterimi
Alt 26 Mayıs 2018   #1

Pentester

 
Pentester - ait Kullanıcı Resmi (Avatar)
Asteğmen
Genel Bilgiler
Üyelik Tarihi: 26 Mayıs 2018
Üye No: 15
Mesajlar: 2
Likes Received: 0
Likes Given: 1
Varsayılan ASP.NET ile Popüler Konular Yapımı/Pentester

Bir web sitesinin "popüler konular" bölümünün nasıl yapıldığını anlatacağım. ASP.NET Web Form projesi üzerinde anlatacağım. MVC mimarisini neden kullanmıyorsun diye rica ediyorum sormayın.

Peki bu mantık nasıl işliyor? "Popüler konular" ya da bir başka tabirle "En çok okunanlar" şeklinde de görebilirsiniz. Makale okunma sayısına göre yapılıyor. Yani en çok okunan makale, en popüler konu olmuş oluyor. Ben bu işlemi sizlere şuan da yarılamış olduğum site üzerinde göstereceğim. O yüzden veritabanım hazır.

Şimdi makale tablomdan bir kesit atayım.



Gördüğünüz gibi, benim makaleler tablom da bazı kayıtlar var. Burada makale okunma kolonu dikkatinizi çekmiş olmalı. Bir makaleye tıkladığımda, "makaleOkunma" sayısı 1 artıyor. Neyse fazla laf kalabalığı yaptım sanırım. Tasarım ve verileri çekme kısmına geçelim.



Ben tasarımımı bootstrap framework kullanarak yapıyorum. Kodda gördüğünüz card, card-body, row, col-md bilmemne kısımlarının ne olduğunu anlamışsınızdır zaten. Onlar CSS classlarımızın isimleri.

ASP.NET Web Form projelerinde veritabanından veri çekme işlemleri DataList, Repeater gibi kontroller ile yapılmaktadır. Bu konuya ihtiyaç duyup da giren kişiler, zaten bunların kullanımını da biliyordur. Ben <ul> tagları arasına repeater attım. Yani verilerimi repeater ile çekiyorum. Peki neden ul içine attım? Çünkü verilerim liste içinde tekrar edecek.
Hemen altına <ItemTemplate> açmışım, peki bu ne? veriyi çekerken hangi şablonda çekeceğimi, hangi HTML elementi içinde oluşacağını belirlediğim kısım. Tabii bunları ayrıntılı bahsetmeyeceğim. Ben <li> elementi içine Eval ile "makaleBaslik" içindeki veriyi çektim. Yani her bir başlık, liste olarak tekrar edecek. O "<a>" elementine takılmayın, ben aynı zamanda makale başlığını çekerken ilgili makale içerik sayfasına da yönlendireceğimden onu ekledim.


Evet, veriyi hangi şablonda çekeceğimi ve hangi veriyi çekeceğimi tasarladım. Artık sıra geldi arka plan kodlarına, yani C# kodlarına. Artık veriyi çekme işlemini yazacağım SQL sorgusuna.

C# kodlarımız:

Kod:
 SqlCommand cmdpop = new SqlCommand("select top(5) * from makale order by makaleOkunma desc", baglan.baglan());

            SqlDataReader drpop = cmdpop.ExecuteReader();

            Rpop.DataSource = drpop;
            Rpop.DataBind();
Buradaki, DataReader, DataSource, DataBind kavramlarına değinmyeceğim. Sayfaya veri çekmeyi bilen kişiler anladı zaten. Bu konunun asıl amacı popüler makaleler olayını anlatmak.

Sorgu çok basit. Bu koskoca makalenin tüm olayı bu tek satırda aslında.
Buraya kadar her şey teorik konuşmalar idi.


Kod:
select * from makale order by makaleOkunma desc
Bakın, "top(5)" kısmını sildim. Bu kod makale tablosunun içindeki makaleOkunma kolonun içindeki değerleri, artan-azalan mantığına göre sıralıyor. Yani bu olayı "DESC" yapıyor. (10-9-8) misali. Sorguya eklediğimiz "top(5)" ise sadece 5 verinin çekilmesini belirtiyor. PHP yazanlar bilir, "limit 5" şeklinde bir sorgu da kullanılabiliyor. Peki, Neden 5? istersen 10 yap sen bilirsin. Ama 100 makale varsa, en popülerler yapıyorsan sadece belirli sayıda veri olması lazım tabii ki.

Sonucumuzu görelim:




Mesaj Pentester tarafından (26 Mayıs 2018 Saat 22:51 ) değiştirilmiştir.
Pentester çevrimdışı   Alıntı ile Cevapla