0

我正在尝试用 PHP 制作一个简单的投票脚本,需要帮助。我遇到的问题是我创建了一个带有两个按钮的表单,喜欢和不喜欢,它们对应于 if else 语句。

如果单击喜欢按钮进行更新,否则单击不喜欢按钮进行更新。

这是我到目前为止的代码,上面还有更多,但不是我的问题所必需的:

while($row = $q2->fetch()) 
        {
        $up_vote= $row['up_votes']; /*Current Up Votes*/
        $down_vote= $row['down_votes']; /* Current Down Votes*/
            echo '<form method="post" action="">';
            echo '<input type="button" id="up_vote" name="up_vote" value="Like" /> OR';
            echo '<input type="button" id="down_vote" name="down_vote" value="Dislike" />';
            echo '</form>';
            echo round($row['rating'], 0);
            echo '% of voters Liked this';
            }


        $up_votes = $up_vote +1;/*$up_vote referes to original # of up_votes, $up_votes adds 1 to the number of votes*/
        $down_votes = $down_vote +1;/*$down_vote referes to original # of down_votes, $up_votes adds 1 to the number of votes*/

    if ($something);/*upvote clicked*/
    {
        $vote_update = "UPDATE images
                        SET up_votes:up_votes
                        WHERE vote_item_id: vote_item_id";

        $q3 = $conn-> prepare($vote_update);
        $q3->execute(array(':up_votes'=>$up_votes, /*$up_vote referes to original # of up_votes, $up_votes adds 1 to the number of votes*/
                           ':vote_item_id'=>$current_vote_item_id));

        /* ALSO create INSERT INTO votes_done to track the user vote*/ 
    $conn = null;
    }       
    else ($something2);/*down vote clicked*/
    {
        $vote_update = "UPDATE images
                        SET down_votes:down_votes
                        WHERE vote_item_id: vote_item_id";

        $q3 = $conn-> prepare($vote_update);
        $q3->execute(array(':down_votes'=>$down_votes, /*$down_vote referes to original # of down_votes, $up_votes adds 1 to the number of votes*/
                           ':vote_item_id'=>$current_vote_item_id));
        /* ALSO create INSERT INTO votes_done to track the user vote*/
    }   

if 和 else 语句应该是什么样的?我不知道该怎么做,不能有两个提交,我应该有两个不同的表单,每个按钮一个吗?无论哪种方式,我怎么能说如果单击了喜欢转到 if 并运行代码,或者如果单击了不喜欢则转到 else 并运行代码?

谢谢

4

4 回答 4

1

撇开语法错误不谈,您可以为两个按钮赋予相同的名称,但值不同。

echo '<form method="post" action="___URL OF YOUR PAGE___">';
echo '<input type="submit" id="up_vote" name="vote" value="Like" /> OR';
echo '<input type="submit" id="down_vote" name="vote" value="Dislike" />';
echo '</form>'
...
if($_POST['vote'] == "Like") {
...
} else if ($_POST['vote'] == "Dislike") {
...
}

请注意,我将input's更改typesubmit而不是button. 这将导致数据将自身发送到页面(button除非您开始添加 JavaScript,否则不会做任何事情)。

您可以在以下答案中阅读更多相关信息:

https://stackoverflow.com/a/6129301/1451957

html按钮与html提交?

于 2012-11-20T16:27:49.897 回答
0

PHP 是服务器端,而您想控制在客户端触发的事件(用户单击一个按钮或另一个按钮)。

Javascript/Jquery 是客户端,在那里你可以控制和触发调用 PHP 脚本来执行查询的事件。

在 PHP 中也else(){无效,您应该使用elseif(){.

于 2012-11-20T16:10:35.360 回答
0

这听起来像是一个使用 JavaScript 会更有用的实例,但如果您真的想使用 PHP,您可以使用两个单独的表单或将按钮更改为看起来像按钮的链接并添加 URL 参数。

另外:你有一些语法错误。示例:您不应该在 if/elseif 条件之后放置分号,else()应该是,在尝试递增andelseif()时使用两个不同的变量名,等等。$up_votes$down_votes

于 2012-11-20T16:12:58.027 回答
0

为什么不为每个喜欢和不喜欢按钮添加一个“onclick”事件,并执行不同的脚本?

于 2012-11-20T16:20:57.163 回答