来自两个按钮的PHP if else语句

时间:2012-11-20 16:07:11

标签: php if-statement vote

我正在尝试用PHP制作一个简单的投票脚本,需要帮助。我遇到的问题是我创建了一个带有两个按钮的表单,如if和dislike,它们对应于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 个答案:

答案 0 :(得分: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的{​​{1}}更改为type而不是submit。这将导致数据自己发送到页面(button除非您开始添加JavaScript,否则不会执行任何操作。)

您可以在以下答案中详细了解:

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

html button v.s. html submit?

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

另外:你有一些语法错误。示例:您不应该在if / elseif条件之后添加分号,else()应该是elseif(),在尝试增加$up_votes和{{1}时,您使用了两个不同的变量名称等等。

答案 3 :(得分:0)

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