我正在尝试用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并运行代码?
由于
答案 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,否则不会执行任何操作。)
您可以在以下答案中详细了解:
答案 1 :(得分:0)
PHP是服务器端,而您希望控制在客户端触发的事件(用户单击一个按钮或其他按钮)。
Javascript / Jquery是客户端,在那里你可以控制和触发调用PHP脚本的事件来执行查询。
else(){
在PHP中无效,您应该使用elseif(){
。
答案 2 :(得分:0)
这听起来像使用JavaScript会更有用的实例,但是如果你真的想使用PHP,你可以使用两个单独的表单,或者将按钮更改为看起来像按钮的链接并添加URL参数。
另外:你有一些语法错误。示例:您不应该在if / elseif条件之后添加分号,else()
应该是elseif()
,在尝试增加$up_votes
和{{1}时,您使用了两个不同的变量名称等等。
答案 3 :(得分:0)
为什么不给每个喜欢和不喜欢的按钮添加'onclick'事件,并执行不同的脚本?