用php和jQuery实现上、下的投票功能
当我们浏览网页时,我们会同意或不同意Web内容中的观点,比如文章和评论,我们可以点击网页的顶部和页面进行投票,而整个交互过程中,开发者可以通过Ajax异步实现,从而提高用户体验。我们需要准备运行实例所需的MySQL数据,需要一个两人的桌子的例子,票表用于记录用户投票的文章或评论对应的数字,我们写一个ID默认为1的数据演示,votes_ip表用于记录每个用户投票IP程序根据投票有效的用户IP。
数据表
如果不存在,创建表(投票)
` ID ` int(10)不为空auto_increment,
`喜欢` int(10)不为空的默认'0',
` unlikes ` int(10)不为空的默认'0',
主键(id)
= MyISAM引擎默认的字符集utf8);
插入`票`(` ID `,`喜欢`,` unlikes `)值
(1, 30, 10);
创建表不存在(` votes_ip `
int(10)不为空,
` VID ` int(10)不为空,
` IP ` varchar(40)不为空
= MyISAM引擎默认的字符集utf8);
HTML
在页面中,有两个按钮表示胎面及分别,即# dig_up和# dig_down。与投票结果相比,按钮上的票数和投票率非常直观。
非常好,非常强大!
太可怕了。
CSS
我们必须用CSS美化网页。我们用一个图diggs.png定位不同的按钮背景和定位的元素之间的关系的设置位置。
。Digg {宽度:420px;身高:120px;保证金:80px汽车20px汽车;位置:相对}
# dig_up,# dig_down {宽度:200px;身高:48px;保证金:10px;相对位置;
边境:1px solid # d3d3d3;填充左:42px;鼠标指针}
。digup { background: url(迪格斯。PNG)没有重复4px 2px;}
。digup_on { background: url(迪格斯。PNG)没有重复4px - 49px;}
。digdown { background: url(迪格斯。PNG)没有重复4px - 102px;}
。digdown_on { background: url(迪格斯。PNG)没有重复4px - 154px;}
# num_up,# num_down {位置:绝对的;右:6px;顶部:18px;字体大小:20px;}
# dig_up p {身高:24px;线高度:24px;颜色:# 360 }
# dig_down p {身高:24px;线高度:24px;颜色:# F30 }
。酒吧{宽度:100px;身高:12px;线高度:12px;边框1px solid # f0f0f0;
位置:相对;文本对齐:中心}
。杆的跨度{显示:块;高度:12px;}
。酒吧我{位置:绝对的;最高:0;左:104px;}
# bar_up跨度{ 360 } #背景:
# bar_down跨度{背景:# F60 }
#味精{位置:绝对;右:20px;顶部:40px;字体大小:18px;颜色:# F00 }
jQuery
这个示例也依赖于jQuery,因此您不能忘记在页面中加载jQuery库文件。
首先,jQuery处理背景图像的变化当鼠标滑到两个投票按钮,它采用addClass()和removeClass()。
$(函数(){())
鼠标左键和投票按钮,改变背景样式。
$(# dig_up)。Hover(function(){)
$(这)。AddClass(digup_on );
}函数(){()
$(这)。RemoveClass(digup_on );
});
$(# dig_down)。Hover(function(){)
$(这)。AddClass(digdown_on );
}函数(){()
$(这)。RemoveClass(digdown_on );
});
初始化数据
GetData(做PHP 。
点击/顶部的/
$(# dig_up)。Click(function(){)
GetData(做phpaction =喜欢。
});
单击
$(# dig_down)。Click(function(){)
GetData(做的。phpaction =不像
});
});
然后,我们对数据进行初始化,这是当页面加载显示投票的初步结果,包括投票数和百分比。我们写在一个自定义函数的数据操作,GetData(),通过不同的请求地址和ID参数完整的数据加载。在函数GetData(),一个Ajax请求发送到URL。根据背景处理的结果,如果投票成功,页面中相应的元素内容将被更改,包括票数和百分比。
函数GetData(URL,SID){
美元。getJSON(URL,{编号:希德},功能(数据){)
如果(数据成功= 1){选票
$(# num_up)。Html(数据。喜欢);
通过控制宽度/显示效果进度的百分比
$(# bar_up跨度)。Css(宽
$(# bar_up我)。Html(数据。like_percent);
$(# num_down)。Html(数据。不像);
$(# bar_down跨度)。Css(宽
$(# bar_down我)。Html(数据。unlike_percent);
}否则,投票失败
$(#味精)。Html(数据。味精),表明()。Css({ 'opacity:1、最重要的:'40px})
。动画({顶:50px ',不透明度:0 },慢);
}
});
}
PHP
数据采集是通过do.php。do.php连接到数据库,根据前台页面传递的参数,然后进入顶部,根据条件的胎面和初始数据处理模块。以下是do.php模块的代码结构。
include_once(连接。PHP); / /数据库连接
行动=美元_get美元{ 'action};
$ id = 1;
美元= get_client_ip IP(IP); / /得到
如果(合动作= =不是){ / /顶
喜欢(1,$,ID,IP);
} elseif($行动= = 'unlike)在{ / /
喜欢(0,$,ID,IP);
其他{ }
Echo jsons ($id);
}
喜欢()函数的顶部和脚投票模块,首先是要确定是否IP用户投票,如果投票直接返回相应的提示,如果没有投票记录更新票表用户IP,票加1对应的数字,然后插入用户进入votes_ip表中的IP记录,如果操作成功,然后打电话给jsons()的投票数据的百分比后产出的投票人数,或信息输入提示操作失败。
函数喜欢($类型,$ id,IP){
ip_sql美元= mysql_query(选择IP从哪里votes_ip VID = $ id'and IP = $ IP);
$count = mysql_num_rows($ ip_sql);
如果($ = 0){未结束
如果($ = 1){
$UPDATE设置为喜欢+1;
}其他步骤
为SQL =更新票集unlikes = unlikes + 1,ID =。$id;
}
mysql_query($ SQL);
sql_in美元=插入votes_ip(VID,IP)值(美元美元的ID,IP);
mysql_query($ sql_in);
如果(mysql_insert_id()> 0){
回声jsons($id);
其他{ }
{ } = ''成功的ARR美元0;
{ } = 'msg ARR美元的操作失败,请再试一次;
回声json_encode($ ARR);
}
其他{ }
味精=类型= =美元美元1'you已经超越':'你已经踏上了';
{ } = ''成功的ARR美元0;
'msg} = { $ ARR美元味精;
回声json_encode($ ARR);
}
}
功能jsons()是用来读取在投票表对应的ID的投票数和百分比计算。最后,信息以JSON格式导出,供首页使用。
功能jsons($id){
为查询= mysql_query(SELECT * FROM票id是美元的ID);
行= mysql_fetch_array美元($查询);
喜欢= { 'likes美元美元排};
美元与美元'unlikes'} { =行;
{ } = ''成功的ARR美元1;
$ ARR {不是} = $如;
{ } = 'unlike ARR美元的美元与;
like_percent美元=圆(像美元/($ + $不像),3)×100;
'like_percent} = { $ ARR like_percent美元。%;
'unlike_percent} = { $ ARR(100至like_percent)。%;
返回json_encode($ ARR);
}
这个例子可以应用于一般的赞美在do.php,有get_client_ip()函数来获取用户的真实IP。
以上是本文的全部内容,希望能帮助您学习php程序设计。