发布页面是在用户登录的状态下才能进行的所以要先检测是否处在登录状态,确定后再允许发布投票
<center><input type="submit" name="send" value="发布"><li>注意:一旦发布将不能修改!</li></center>
用户输入的信息会以post的格式发布到后台。
<?php
//发布
if(@$_POST['send']){
$ouser=@$_GET['user'];
if($ouser != ''){
$vname=@$_POST[voteName];
$time=time();
$starttime=date("y-m-d",$time);
$vintro=@$_POST[voteIntro];
$open=@$_POST[voteOpen];
$more=@$_POST[voteSel];
$max=@$_POST[itemMax];
$min=@$_POST[itemMin];
$itemcount=@$_POST[voteCount];
//为了方便最后完成字符串,让$item先等于$_POST[1],这样在下面的for循环中要少循环一次
$item=@$_POST[1];
$num=0;
if($max>=$min && $vname!=""){
for($i=1;$i<$itemcount;$i++){
$j=$i+1;
$item=$item.'*'.@$_POST[$j];
$num=$num.'*0';
}
$sql3="SELECT uid FROM users WHERE username='$ouser'";
$getVid=mysql_query($sql3);
$row=mysql_fetch_row($getVid);
$uid=$row[0];
$sql="insert into vote(vname,starttime,uid,vintro,open,more,max,min) value('$vname','$starttime','$uid','$vintro','$open','$more','$max','$min')";
mysql_query($sql);
$sql2="SELECT vid FROM vote WHERE vname='$vname'";
$getVid=mysql_query($sql2);
$row=mysql_fetch_row($getVid);
$vid=$row[0];
$sql4="insert into votetitle(vid,itemcount,item,num) value('$vid','$itemcount','$item','$num')";
mysql_query($sql4);
echo "<script language='javascript'> alert('成功提交!'); </script>";
}
else{
echo "<script language='javascript'> alert('选项设置有误!'); </script>";
}
}else{
echo "<script language='javascript'> alert('请先登录!'); </script>";
}
}
?>
1、检测是否登录
$ouser=@$_GET['user'];
if($ouser != ''){
2、获得当前的时间 $time=time();
$starttime=date("y-m-d",$time);
3、形成能够保存在数据库中的选项信息和投票统计信息
$item=@$_POST[1];
$num=0;
if($max>=$min && $vname!=""){
for($i=1;$i<$itemcount;$i++){
$j=$i+1;
$item=$item.'*'.@$_POST[$j];
$num=$num.'*0';
}
(1)选项信息和投票统计信息都是通过将选项信息用“*”隔开的方式,组成一个字符串
范例:“选项一*选项二*选项三”
(2)默认的初始投票统计信息,各项均为0。
范例:“0*0*0”
(3)这个循环语句其实是不必要的,在php中提供了专门的将数组整合和分解为字符串的方法(explode和implode),但在完成这部分代码时我并不清楚这个方法的应用,顾自己完成了这个功能。