2012-07-16 79 views
0

我想更新每次提交时更新的投票选择。 但它似乎不工作。任何人都可以建议我关于隐藏领域的状态吗? 以及如何清除当前页面中的所有内容以显示投票结果表?PHP:混淆关于保持隐藏状态的状态

<?php 

if ($_POST['choice']==0) 
    $a_count = $_POST['a_count']+1; 
if ($_POST['choice']==1) 
    $b_count = $_POST['b_count']+1; 
if ($_POST['choice']==2) 
    $c_count = $_POST['c_count']+1; 
if ($_POST['choice']==3) 
    $d_count = $_POST['d_count']+1; 
?> 
<html> 
<head> 
</head> 
<body> 
    <form action="index.php" method="POST"> 
    <table align="center"> 
     <tr><td>Please select</td></tr> 
     <tr><td><input type="radio" name="choice" value="0">aaaa</td></tr> 
     <input type="hidden" name="a_count" value="<?php print $a_count ?>"> 
     <tr><td><input type="radio" name="choice" value="1">bbbb</td></tr> 
     <input type="hidden" name="b_count" value="<?php print $b_count ?>"> 
     <tr><td><input type="radio" name="choice" value="2">cccc</td></tr> 
     <input type="hidden" name="c_count" value="<?php print $c_count ?>"> 
     <tr><td><input type="radio" name="choice" value="3">dddd</td></tr> 
     <input type="hidden" name="d_count" value="<?php print $d_count ?>"> 
     <tr><td><input type="submit" value="submit"></td></tr> 
    </table> 
    <table align="center" border="1" cellspacing="0"> 
     <tr align="center"><th>Member Name</th><th>Vote</th></tr> 
     <tr><td>aaaa</td><td><?php echo"$a_count";?></td></tr> 
     <tr><td>bbbb</td><td><?php echo"$b_count";?></td></tr> 
     <tr><td>cccc</td><td><?php echo"$c_count";?></td></tr> 
     <tr><td>dddd</td><td><?php echo"$d_count";?></td></tr> 
    </table> 
    </form> 
</body> 
</html> 
+1

您需要将您的投票结果存储在数据库中。每次服务器请求后,PHP变量都会被清除。 – smilledge 2012-07-16 14:37:39

+1

如果不是解决方案,你究竟在问什么?有很多方法来维护状态。 – ametren 2012-07-16 14:38:08

回答

0

您提交看起来应该他们的活动会话期间保留用户的选择/状态(只要他们不离开该页面)的代码 - 但只要他们离开它的丢失。此外,他们的“投票”不能在任何其他用户之间共享。

为了保持用户的状态,探索PHP会话的使用或将结果存储在文件/数据库中。

要与其他用户分享用户的投票,请浏览文件或数据库的使用。

要显示没有表格的结果表格,在用户“投票”之后,您可以执行以下两项操作之一。您可以在表单周围添加if语句以检查是否已经选择了答案 - 如果是,请不要显示表单。另一种方法是将结果表放在一个没有表格的单独页面上(只是将表单POST发送到单独的页面,或者将表单重定向到单独的页面)。

+0

感谢您的回答newfurnitury。我试图每次提交更新投票分数,但是当我登顶3次选择3时。显示3分,然后提交另一个选择,选择3的分数消失。你能解释我如何解决这个问题吗? – strc 2012-07-16 15:00:23

+0

这个很容易做到。在你的PHP中,你应该根据它们的POST值预先定义'$ a_count','$ b_count'等变量,然后增加它们。例如,试试:'$ a_count = $ _POST ['a_count'] +(($ _POST ['choice'] == 0)?1:0);'。这会将'$ a_count'设置为当前值,并且如果“选择”是A,则会将其增加1。您也可以为每个计数变量执行此操作。 – newfurniturey 2012-07-16 15:03:34

0

为什么不使用数据库来存储值你可以把你用于输入的表格放在if条件中,这样当表单提交时它不会呈现。希望这可以帮助!