0

PHP で簡単な投票スクリプトを作成しようとしていますが、助けが必要です。私が抱えている問題は、if else ステートメントに対応する 2 つのボタン (like と dislike) を持つフォームを作成したことです。

いいねボタンがクリックされた場合は更新を行い、そうでない場合は嫌いなボタンがクリックされた場合は更新を行います。

ここに私がこれまでに持っているコードがありますが、それ以上のものがありますが、私の問題には必要ありません:

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 ステートメントはどのように見えるべきですか? これについてどうすればよいかわかりません。2 つの送信を行うことはできません。ボタンごとに 1 つずつ、2 つの異なるフォームを用意する必要がありますか? いずれにせよ、いいねがクリックされた場合はifに移動してコードを実行し、嫌いがクリックされた場合はelseに移動してコードを実行する方法を教えてください。

ありがとう

4

4 に答える 4

1

構文エラーは別として、2つのボタンに同じ名前を付けることができますが、値は異なります。

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'stypeを。のsubmit代わりに変更したことに注意してくださいbutton。これにより、データがページに送信されます(buttonJavaScriptの追加を開始しない限り、何も実行されません)。

あなたはこれらの答えでこれについてもっと読むことができます:

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

htmlボタンとhtml送信?

于 2012-11-20T16:27:49.897 に答える
0

これは、JavaScript を使用した方が便利な例のように思えますが、本当に PHP を使用したい場合は、2 つの別個のフォームを使用するか、ボタンをボタンのように見えるリンクに変更して URL パラメーターを追加することができます。

また、いくつかの構文エラーがあります。例: if/elseif 条件の後にセミコロンを置くべきではありelse()ませelseif()ん。$up_votes$down_votes

于 2012-11-20T16:12:58.027 に答える
0

PHP はサーバー側ですが、クライアント側でトリガーされるイベントを制御したい場合 (ユーザーが 1 つのボタンまたは別のボタンをクリックする)。

Javascript/Jquery はクライアント側であり、クエリを実行する PHP スクリプトを呼び出すイベントを制御およびトリガーできます。

またelse(){、PHP では無効です。使用する必要がありますelseif(){

于 2012-11-20T16:10:35.360 に答える
0

好きなボタンと嫌いなボタンのそれぞれに「onclick」イベントを追加して、別のスクリプトを実行してみませんか?

于 2012-11-20T16:20:57.163 に答える