|
|
#1 (permalink) |
|
Üyelik Tarihi: 08.11.2002
Yer: ISTANBUL
Yaş: 29
Mesaj: 502
|
ASP ile anket uygulamasında total %....
ASP ile anket uygulaması var bilirsiniz evcilasp den almıştım. Aşağıda kodlarıda yazıcam.sorun şu bu anket bir türlü tam olarak çalışmıyor. Yani çalışıyorda %'leri gösterirken %99 olarak gösteriyor. bunun yüzde 1'lik küsürattan kaynaklandığını düşünerek %'leri küsüratlı göstermek için şu satırla yuzde = Int((secenekler("sec_sayac") / Total) * 100) bu satırı yuzde = FormatNumber((secenekler("sec_sayac" ) / Total * 100), 2) değiştirdim. Sonuçta küsüratlarıda gösteriyor hesapladığımda net %100 oluyordu en son baktığımda ama şimdi yine aynı. %100 olmuyor toplamda... Birde denemek için 20 adet seçenek yaptım yine olmadı acaba diyorum 20 seçenek oluncamı sapıttı. Herneyse olay bu benim istediğim turk.net tede ASP ile yapmışlar anketi aynen oradaki gibi yapmak.Yani bir sürü anket sonucuna baktım hepsi %10 + %9 + %81 = %100 Böyle olsun istiyorum ayrıca bu kodlara nasıl bir ekleme yaparsam değişir normal hale gelir ve çok seçenek koyabilmeliyim mesela 25 tane ne yapmalıyım? Yabancı scriptlere baktım bulamadım dediğim gibi. Birde bu grafikleri renk renk yapma ihtimali varmı bu kod üzerinde ? Neyse ben kodu yazıyorum... <%'-----------------------------------------------------------'%> <% ' tavandaki sorgu cümlesinden anket_id değeri iste anket_id = Request.querystring("anket_id") ' veritabanı dosyası için göreli konum vt_yol = server.mappath("db/anket.mdb") ' baglantı nesnesi oluştur, sonra da vt dosyası ile aç Set bag = CreateObject("ADODB.Connection") bag.Open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & vt_yol) ' sorgu cümlesinden istenen anket_id için bir takım denetimler ' eğer anket_id belirtilmediyse veya hatalı verildiyseen son oluşturulan anket kaydı açılıyor. if len(anket_id) = 0 or not isnumeric(anket_id) then Set anket = bag.Execute("SELECT * FROM anketler order by anket_tarih desc") anket_id = anket("anket_id") anket_id = cstr(anket_id) else ' sayısal olarak bir anket_id belirtildiyse aç Set anket = bag.Execute("SELECT * FROM anketler WHERE anket_id=" & anket_id) end if If anket.EOF Then ' eğer kayıt yoksa (yani anket yoksa) ikaz yuvarla Response.write "<H2>Bu Anket Kayıtlarda Yok!</H2>" diger_anketler ' mevcut anketleri göster response.end ' karşılık vermeyi kes Else ' eğer anket varsa çerez kontrollerine başla 'Söz konusu anket_id si için oylandı imzası atılmışsa If Request.Cookies("SanaLEylem.Net")(anket_id) = "oylandi" Then oymusade = false ' oylamaya müsade etme Else ' eğer oylanmamış bir anket ise sec_id = Request.form("sec_id") ' formdan seçenek id sini iste If Len(sec_id) > 0 Then ' seçim yapılmışsa 'Seçeneğin sayacını bir artır. bag.Execute "UPDATE secenekler SET sec_sayac = " &_ "sec_sayac + 1 WHERE sec_id=" & sec_id 'Çerezlerin mekanına anket id si için oylandı imzası yolla... Response.Cookies("SanaLEylem.Net")(anket_id) = "oylandi" 'Çerez bir yıl sonra bayatlasın Response.Cookies("www").Expires = Now() + 365 'Artık oy vermeye müsade etme oymusade = false Else ' eğer seçim yapılmadan tuşa basılmış ise seçim yapmaya müsade ver oymusade = true End If End If anket_soru = anket("anket_soru") anket_tarih = anket("anket_tarih") anket.close Set anket = Nothing 'Anket id sine karşılık gelen seçeneklerle bir kayıt kümesi oluştur. set secenekler = server.createobject("ADODB.Recordset") SQL = "SELECT * FROM secenekler WHERE anket_id = " & anket_id & " order by secenek" secenekler.open SQL, bag, 1, 3 'Eğer anket için seçenek yaratılmamışsa bunu belirt. If secenekler.recordcount = 0 Then Response.Write "<h3>" & anket_soru & "</h3>" Response.Write "BU ANKET İÇİN HENÜZ SEÇENEK OLUŞTURULMAMIŞ!<br><br><br>" secenekler.close set secenekler = Nothing diger_anketler response.end End If 'Kullanılan oy sayısının hesabı için bir sayısal değişken lazım Total = 0 Do While Not secenekler.EOF Total = Total + secenekler("sec_sayac") secenekler.MoveNext Loop %> <%'---------------------------------------------------------'%> <% ' ANKET FORMU %> <font SIZE="2" COLOR="#CC0000" FACE="Verdana, Arial, Helvetica, sans-serif"><B><%= anket_soru %> </B></font> <BR> <form METHOD=post ACTION="default.ASP?anket_id=<%=anket_id%>"> <TABLE BORDER=0> <% secenekler.MoveFirst Do While Not secenekler.EOF If Total > 0 Then ' yüzde değer hesapla yuzde = FormatNumber((secenekler("sec_sayac" ) / Total * 100), 2) Else yuzde = 0 End If %> <TR> <% ' oy vermeye müsade varsa radio inputları koy %> <%If oymusade then%> <TD WIDTH=""> <INPUT TYPE="radio" NAME="sec_id" VALUE="<% = secenekler("sec_id") %>"> </TD><% end if %> <TD> <B> <%= secenekler("secenek") %></B> </TD><TD><%= yuzde %>%</TD><TD><IMG SRC="resim/red.GIF" HEIGHT="12" WIDTH="<%= yuzde%>"></TD><TD><%= secenekler("sec_sayac")%> oy</TD></TR> <% secenekler.MoveNext Loop secenekler.close set secenekler = Nothing End if %> </TABLE><BR> <% ' oy vermeye müsade varsa butonu koy %> <%If oymusade then%> <center><INPUT TYPE=submit VALUE="Oy Ver!" CLASS="tus" NAME="submit" ></center> <% else %> <BR> Anketimize Katıldığınız İçin Teşekkür Ederiz...<I> </I> <% end if %> </form> <IMG SRC="resim/redkare.gif" WIDTH="9" HEIGHT="9"> Ankete başlama tarihi <%= anket_tarih %>) <BR> <IMG SRC="resim/redkare.gif" WIDTH="9" HEIGHT="9"> Bu ankete <%= total %> kişi katıldı. <% diger_anketler ' prosedürünü çağır %> <%'-------------------------------------------'%> <% sub diger_anketler %> <BR> <IMG SRC="resim/redkare.gif" WIDTH="9" HEIGHT="9"> Diğer Anketler:<BR> <% Set diger= bag.Execute("SELECT * FROM anketler ORDER BY anket_tarih DESC ") Do While Not diger.EOF If cstr(diger("anket_id")) = anket_id Then Response.write "<br> <img src='resim/oki.gif' width='12' height='13'> " & diger("anket_soru") & " - " &diger("anket_tarih") & "" Else Response.write "<br> <img src='resim/OK.GIF' width='12' height='13'> <A href=""default.ASP?anket_id=" & diger("anket_id") & """>" Response.write diger("anket_soru") & " - " &diger("anket_tarih") & "</A>" End If diger.MoveNext Loop diger.close set diger = Nothing bag.close set bag = nothing %> <BR> <% end sub ' diger anketler %> <%'------------------------------------------------'%> Mesaj Murathan tarafından 30.11.2002 (05:45) yeniden düzenlendi. |
|
|
|
|
|
#2 (permalink) |
|
Üyelik Tarihi: 13.07.2000
Yer: LND
Mesaj: 4,281
|
Senin kodlarına hiç bakmadım sorunfarklı olabilir ancak benim yaptığım uygulamdan o kısmı gönderiyorum;
yuzde = CInt((100/toplamcevap)*aktifcevap)
__________________
FERRUH.MAVİTUNA - İnanmıyorum, yeni site! |
|
|
|
| Sponsorlu Bağlantılar | |
|
Zoque.Forum
Reklam
|
|
Zoque'a hoşgeldiniz!