求教大神

rainerkai 2013-05-16 03:18:39
小弟我需要建个投票系统,需要每点击提交一次时数据库对应选民的piaoshu列加1



<%@ Page Language="C#" AutoEventWireup="true" CodeFile="query.aspx.cs" Inherits="Default3" %>

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body style="text-align: center">
<form id="form1" runat="server">
<div style="text-align: center">
<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" RepeatColumns="5" RepeatDirection="Horizontal" OnSelectedIndexChanged="DataList1_SelectedIndexChanged1">
<ItemTemplate>
<table>
<tr>
<td style="width: 100px">
<a href='../<%#Eval("image") %>' target="_blank" >
<asp:Image ID="Image1" runat="server" ImageUrl='<%# "../" + Eval("image") %>' Height="32"/></a>
</td>
</tr>
<tr>
<td style="width: 100px">
<div align="center"><%# Eval("name") %></div>
</td>
</tr>
<tr>
<td style="width: 100px">
<input name="name" type="radio" value='<%# Eval("name") %>'/>
</td>
</tr>
<tr>
<td style="width: 100px">
</td>
</tr>
</table>
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="Button1" runat="server" Text="提交" OnClick="Button1_Click" />
</FooterTemplate>


</asp:DataList><asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:mydatabaseConnectionString %>" SelectCommand="SELECT * FROM wbtp1" ProviderName="<%$ ConnectionStrings:mydatabaseConnectionString.ProviderName %>"></asp:SqlDataSource>
</div>
</form>
</body>
</html>
...全文
160 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱在今世 2013-05-17
  • 打赏
  • 举报
回复
你只需要获取他的ip,然后存入session中,并设置过期时间,点击按钮的时候先确定有木有这个ip。如果有就不执行update,否则就执行
爱在今世 2013-05-17
  • 打赏
  • 举报
回复
protected void Button1_Click(object sender, EventArgs e)
    {
        string ip = Request.UserHostAddress;
        if (Session[ip] == null)
        {
            //执行点击投票
            Session.Add(ip, "");
            Session.Timeout = 2;
        }
        else
        {
            //指定的时间内多次点,提示或者是不理他之类的
        }
        
    }
rainerkai 2013-05-17
  • 打赏
  • 举报
回复
引用 10 楼 showyusy 的回复:
你只需要获取他的ip,然后存入session中,并设置过期时间,点击按钮的时候先确定有木有这个ip。如果有就不执行update,否则就执行
大神~~能否給段代碼供小弟學習一下
rainerkai 2013-05-16
  • 打赏
  • 举报
回复
小弟不才~~还想问问各位怎么做防刷~
rainerkai 2013-05-16
  • 打赏
  • 举报
回复
我现在是这么写的
<input name="id"  type="radio" value='<%# Eval("id") %>'/>
cmd4.CommandText = "update wbtp1 set toupiao=toupiao+1 WHERE id="+ Request.Params["id"] +" ";
rainerkai 2013-05-16
  • 打赏
  • 举报
回复
引用 6 楼 showyusy 的回复:
[quote=引用 5 楼 f281186676f 的回复:] [quote=引用 2 楼 showyusy 的回复:] 假设,点击了id等于1的那个。那么就执行一条sql语句update 表名 set toupiao=toupiao+1 where id=1 前提条件,toupiao的类型是int
先select当前ID的 toupiao的值,点击时间触发,update这个值不就行了么[/quote]不行,要是在你select值的时候别人也点击了呢?假设之前那个值是5,你select了得到5,此时别人也select也是5。你update上去就是6,人家在update上去也是6。可是我们都知道其实这个值应该是7才对。所以只用一条sql语句而不是两条[/quote]不会那么巧吧
爱在今世 2013-05-16
  • 打赏
  • 举报
回复
引用 5 楼 f281186676f 的回复:
[quote=引用 2 楼 showyusy 的回复:] 假设,点击了id等于1的那个。那么就执行一条sql语句update 表名 set toupiao=toupiao+1 where id=1 前提条件,toupiao的类型是int
先select当前ID的 toupiao的值,点击时间触发,update这个值不就行了么[/quote]不行,要是在你select值的时候别人也点击了呢?假设之前那个值是5,你select了得到5,此时别人也select也是5。你update上去就是6,人家在update上去也是6。可是我们都知道其实这个值应该是7才对。所以只用一条sql语句而不是两条
云飞兄 2013-05-16
  • 打赏
  • 举报
回复
引用 2 楼 showyusy 的回复:
假设,点击了id等于1的那个。那么就执行一条sql语句update 表名 set toupiao=toupiao+1 where id=1 前提条件,toupiao的类型是int
先select当前ID的 toupiao的值,点击时间触发,update这个值不就行了么
  • 打赏
  • 举报
回复
还要加个限制 一个人只能打一次 不然一直按着 刷票玩了
爱在今世 2013-05-16
  • 打赏
  • 举报
回复
当然,数据库里的toupiao你要给个初值0
爱在今世 2013-05-16
  • 打赏
  • 举报
回复
假设,点击了id等于1的那个。那么就执行一条sql语句update 表名 set toupiao=toupiao+1 where id=1 前提条件,toupiao的类型是int
rainerkai 2013-05-16
  • 打赏
  • 举报
回复
toupiao列加1

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧