Şimdi Ara

ASP veritabanında arama ve sıralama???

Bu Konudaki Kullanıcılar:
2 Misafir - 2 Masaüstü
5 sn
8
Cevap
0
Favori
1.539
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba.

    Elimde basit bir haber scripti var, herşeyiyle tamam ve çalışıyor. Sadece birkaç özellik eklemek istedim ama başarılı olamadım.

    Normalde haber/default.asp?eylem=oku dendiğinde bütün haberler çıkıyor ID sırasına göre. Yani en yeni haberin en üstte olmasını istedim. En son eklenenin daha doğrusu:)
    İşte bu ID sırasına göre olan olayı, o sayfaya bir link koyarak mesela "Yeniden eskiye",
    "eskiden yeniye" gibi tıklanınca değişen sıralamalar yapmak istiyorum, bunlar için ne tür bir kod kullanmalıyım?

    2. sorum da, veritabanında arama. bu haber arşivini bir site için yapıyorum ve her hafta 10-15 haber falan eklenecek siteye, onun için bir de arama fonksiyonu eklemek istedim.
    Bunun için yardım alabileceğim bir yer / ya da bana yardım edebilecek biri varsa yardım almak isterim. Veritabanında 2 tablo var, ayarlar ve haberler (daha doğrusu bizi ilgilendirenler bunlar). haber scriptim, ayarlar tablosundan sayfada kaç haber görüneceğini, başlıkların kaçarlık olacağını filan alıyor ve uyguluyor. haberler tablosunun içinde de

    id tarih baslik ekleyenadi haber ekleyenmaili ozet unformatted unformattedmail

    sütünları var. benim istediğim.

    TARİHE göre arama (tarih)
    KİŞİYE göre arama (ekleyenadi)
    BAŞLIĞA göre arama (baslik)
    ve tabii ki İÇERİĞE göre arama(haber)

    yani öyle bir script olacak ki, yazılan şeyi ekleyenadi, baslik ve haber'de arayacak.
    Tarihe göre aramanın ayrı bir giriş kutusu olacak, bunlarla karışmasın diye, tahminen dropdown bişiy olur. Hani biz Ocak, Şubat .. diye seçeriz ama o çevirir 01.08.2004 formatına...(veritabanındaki tarih formatı bu)gg.aa.yyyy yani.

    Bana yardımcı olur musunuz?

    iyi günler / iyi çalışmalar







  • birincisi:

    ana sayfaya bir select box koy.
    <input type="select" name="sirala">
    <option value="desc" selected> Eskiden yeniye</option>
    <option value="asc"> Yeniden eskiye</option>
    </input>

    asp kodunda da :

    kodda hazir connection kodu oldugunu varsayiyorum:

    sql = "SELECT * FROM haberler ORDER BY ID " & Request("sirala")
    rec = Server.createobject("ADODB.recordset")
    rec.open sql

    yani olay var olan SQL ustune ORDER BY komutunu eklemek ve request'den gelen "ASC" veya "DESC" i de sonuna ilave etmek.

    ikincisi:

    kisi icin, baslik icin ve icerik icin uc tane textbox koy ana sayfaya.

    <input type="text" name="baslikara">
    <input type="text" name="ekleyenara">
    <input type="text" name="icerikara">

    SQL = "SELECT * FROM haberler WHERE baslik LIKE '%" & request("baslik") & "%' AND ekleyenadi LIKE '%" & Request("ekleyenara") & "%' AND haber LIKE '%" & Request("icerikara") & ""%'"

    eger adamin arama yaparken tek bir textbox a yazmasini istiyorsan o zaman SQL deki requestleri tek isim yapacaksin ve AND leri OR ile degiseceksin.

    SQL'i bu sekilde olusturucan. koddaki ayrintilara girmiyorum, klasik recordset olusturma cekme seklinde olucak.

    tarih icin de SQL de "AND tarih='" & Request("tarih") & "'" diye ekliyeceksin. yalnzi tarihle ilgili SQL e eklemeden once adam tarih girmis mi diye if kontrolu yapsan iyi olur.




  • çok sağol. şimdi offline deneyip sonuçları yazacağım. teşekkür ederim
  • hocam sıralama başarılı. kodun tamamı şöyle.

    <% '************** OKU **************** %>
    <% Sub Oku %>

    <p align="center"><b><font face="Trebuchet MS" size="4" color="#3399FF">Haber
    Arşivi</font></b></p><form name="select" method="GET">
    <select name="sirala">
    <option value="desc" selected>Yeniden Eskiye</option>
    <option value="asc">Eskiden Yeniye</option>
    </select><input type="submit" value="Gönder"></form>
    <div align="right"><% If Request("sirala") = "" Then
    durumumuz = "Yeniden Eskiye"
    Else If Request("sirala") = "asc" Then
    durumumuz = "Eskiden Yeniye"
    Else
    durumumuz = "Yeniden Eskiye"
    End If
    End If
    Response.Write "Sıralama: " & durumumuz %></div>
    <%
    set gboku = Server.CreateObject("ADODB.RecordSet")

    if Request("sirala") = "" Then
    gboku.open "select * from haber order by id desc",haberDB,1,3
    Else
    gboku.open "select * from haber order by id " & Request("sirala") ,haberDB,1,3
    End If

    gboku.PageSize = Kayit_Sayisi
    gboku.CacheSize = Kayit_Sayisi

    If GelenSayfa = "" Then
    Gosterilen_kayit = 1
    Else
    Gosterilen_kayit = CInt(GelenSayfa)
    End If

    Toplam_Kayit = gboku.PageCount

    If Gosterilen_kayit > Toplam_Kayit Then Gosterilen_kayit = Toplam_Kayit

    If Gosterilen_kayit < 1 Then Gosterilen_kayit = 1

    If Toplam_Kayit = 0 Then

    Response.Write "<center><font size='2' face='arial'>Hiç haber eklenmedi.</center></font>"

    Else

    gboku.AbsolutePage = Gosterilen_kayit

    end if

    i = 0

    do while i < Kayit_Sayisi and Not gboku.Eof
    %> </p>
    <table border="1" cellpadding="2" cellspacing="1" style="border-collapse: collapse" bordercolor="#3399FF" width="100%">
    <tr>
    <td width="100%" bgcolor="#99CCFF">
    <p style="margin-left: 5"><font color="#000066"><b><%=gboku("baslik")%></b></font></td>
    </tr>
    <tr>
    <td width="100%"><font size="2" color="#666666"><%=gboku("haber")%></font> </td>
    </tr>
    <tr>
    <td width="100%">
    <p align="right"><font size="1">Haberi Ekleyen: <%=gboku("ekleyenmaili")%> [ Yazılma Tarihi: <%=gboku("tarih")%> ]</font></td>
    </tr>
    </table><br>
    <%
    i = i + 1
    gboku.MoveNext
    Loop
    %><center>
    <%
    If Request("sirala") = "" Then
    salla = ""
    Else
    salla = "&sirala=" & Request("sirala")
    End If %>
    <br><br><img src="123/sayfalar.gif" border="0"> <% for k=1 to Toplam_Kayit %><% if k=Gosterilen_Kayit then %><img src="123/over/<%=k%>.gif" border="0"><% else %><a href='<%=BuSayfa%>?eylem=oku&Sayfa=<%=k%><%=salla%>'><img src="123/<%=k%>.gif" border="0"></a><% end if %><% next %>

    <% End Sub %>

    sayfalama olayıyla da entegrasyon sağladım.

    ancak şu arama olayını anlamadım.

    tek textboxta tüm alanlarda arama yapılmasını istiyorum neleri değiştirecem.




  • himm siralama sayfalama olayiyla beraber oldu yani, super.

    arama icin:
    <input type="text" name="aranan"> diye bi textbox koy.

    SQL = "SELECT * FROM haberler WHERE baslik LIKE '%" & request("aranan") & "%' OR ekleyenadi LIKE '%" & Request("aranan") & "%' OR haber LIKE '%" & Request("aranan") & ""%'"
    rs = Server.createobject("ADODB.recordset")
    rs.open sql, haberDB, 1, 3

    yani database'deki 3 alandan herhangibirinde (OR bu ishe yariyor) aranan kelime oldugu takdirde o satiri getirecek. rs' de aramanin sonucu olan haberler yer alicak. eger textboxa adam bisey yazmazsa hepsini getirecek, ki mantiklisi da bu, cunku adam aramaya belli bi sinirlama koymamis oluyor.

    bunda da sayfalama yapilacaksa gene ona gore ayarlarsin.

    yani:

    if Request("sirala") = "" Then
    gboku.open "select * from haber order by id desc",haberDB,1,3 ----> buraya yukaridaki sql'i yazacaksin.
    Else
    gboku.open "select * from haber order by id " & Request("sirala") ,haberDB,1,3 -----> buraya yukardaki sql i yazacaksin ve sonuna gene "order by id" &request("sirala") yi ekle.
    End If



    < Bu mesaj bu kişi tarafından değiştirildi dig -- 2 Ağustos 2004, 0:54:46 >




  • tamamdır. search olayı da oldu sayılır. sadece ana sayfada gözükmesi için bu forumdaki fast reply'deki scriptten kullanacağım. yani arama 'ya tıklayınca arama tab'ı gözüksün niyetine. yaptım oldu;)

    bir sorun oldu ama.. tarih arama bölümünde...

    ahanda kod şu;

    ..................(baya uzun bir .........)
    rs.AddNew

    rs("haber") = sending
    rs("unformatted") = unformatted
    rs("ekleyenmaili") = ekleyenmaili
    rs("baslik") = Temizle(baslik)
    rs("ozet") = Temizle(ozet)
    rs("tarih") = Date()
    rs("ekleyenadi") = Temizle(ekleyenadi)
    rs("unformattedmail") = unformattedmail

    rs.Update
    rs.Close
    tekrar uzun bir ...........................

    evet, yani databaseye tarihi 01.12.2004 formatında atıyor. iyi güzel ama mesela aralığın 12.sinde olduğumuzu düşünelim.
    12.12.2004
    TARİh bazlı aramada aya göre arama var. ama güne göre de arama var;) yani gün'ün 12'si ay'ın 12sine karışabilir.
    yani şöyle biz 12. günü arıyoruz fakat arama sonucu 12. ay da çıkıyor. çünkü ay numara şeklinde yazılmış,

    çözüm basit, ay'ı veritabanına bir şekilde 12.Aralik.2004 şeklinde yazdırmalıyız. iyi ama nasıl? hadi bakalım dig, seni de yorduk ama...

    kolay gelsin. 300 bilinmeyenli denklem maşşallah:D




  • hmm adama tarih aramasi yapmasi icin 3 tane dropdowndan sectiriyorsun di mi? yani gun icin bir dropdown, ay icin bir dropdown, yil icin bir dropdown.
    peki adam simdi sadece bir ay secip o aya ait haberleri mi gormek istiyor? yoksa belli bir gunun haberleri mi gelicek?
    gune goreyse OR larin hepsini parantez icine alip sonuna AND tarih=' " & request("gun) & "." & request("ay") & "." & request("yil") diye ekleyeceksin iste.
    neyse kisaca: adam ben shu aydaki ya da shu yildaki haberleri gormek istiyorum diyecek mi yoksa sadece shu gundeki haberleri gormek istiyorum mu diyecek?
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • hocam cevap yazmam uzun sürüyor. pc'mi satmaya çalışıyorum da :) neyse sattım bile gittigidiyor sağolsun..

    şimdi. dropdown var. 3 tane. gün ay yıl. şöyle bişi ki "adam sadece yıl seçse o yılki bütü haberler gelecek, sadece gün seçse o güne ait haberler gelecek, sadece ay seçse o aya ait haberler gelecek ve bütün seçimleri aynı anda kullanabilecek, yani 1 ağustos .... (yıl yok) ya da ... ağustos 2004 /gün yok).

    dropdownlarda hiç bişi seçmezsen geriye "bos" değeri dönüyor. günde gün numarası, ayda ay adı (Aralik) şeklinde gibi. or'la ilgili bişi ama hadi neyse.
    amaaaa benim sana sorduğum başka...

    sen bana Date() komutundan gelen sonucu (01.12.2004), 01 Aralik 2004 şekline nasıl dönüştüreceğimi söyle:) javascript variablelerina ASP içinden nasıl erişebileceğimi söylesen de olur ;) yani external bir jscript ile mesela zort variablesine tarihi ayarlarım(yani 01.Aralik.2004 şeklinde) sonrada aspden okurum gibisnden.




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.