1

「好き」と「嫌い」ボタンを持つdivと、好き/(好き+嫌い)のmysqlクエリである上記の評価を使用して、ブログタイプのWebページを作成しています。ユーザーが好きまたは嫌いをクリックすると、投票をデータベースに追加し、ページをリロードせずに評価値を動的に変更したいと考えています。ここに HTML の小さなスニペットがあります。私は JavaScript をほとんど使用したことがないので、何か助けていただければ幸いです。

<div class="narrow_right_container">
   <?php 
    $popularity = get_popularity($row);
   ?>
   <div class="yellow_bg">Rating:  <?php echo $popularity . "%"; ?></div>
   <div style="margin-left:2px;">
    <div class="dislike">
       <a href="#"><img src="ui_images/dislike.png"/></a>
       <span>Dislike</span>
    </div>
    <div class="like">
       <a href="#"><img src="ui_images/like.png" /></a>
       <span>Like</span>
        </div>
   </div>
</div>
4

4 に答える 4

1

これを実現するには、ajax を使用する必要があります。JavaScript を介して PHP 変数を変更することはできません。

データベースの作業を処理する Ajax 関数を呼び出す必要があり、それが完了したら、javascript を使用してカウントを更新する必要があります。これにより、データベース内のカウントも更新される一方で、カウントが更新されたという暗示が得られます (Ajax から)。

これを実現する方法の良い例を次に示します:

サンプル コード
ライブ デモ

于 2012-05-07T18:26:10.547 に答える
1

実際に PHP の値を変更することはありません。ページがブラウザーに出力されたら、PHP がなくなったと考えてください。サーバー上にあるため、それを操作することはできません。代わりに、ブラウザーにあるドキュメントを操作することを考えてください。

これを行う最善の方法は、サーバー側スクリプトへの ajax 呼び出しを行うことです。そのサーバー側のスクリプトは、好き嫌いをデータベースにコミットし、新しい評価を返すことができます。これは、javascript を使用して古い評価の代わりに挿入できます。

特定の問題よりも一般的なチュートリアルが必要なようです。つまり、一般的な主題に関する知識のギャップを埋めると、特定の問題を非常に簡単に解決できるようになります。

于 2012-05-07T18:27:44.057 に答える
1

サーバー側でデータベースへの保存を処理するための PHP コードを作成する必要があります。好き/嫌いな値の情報をこのサーバー側スクリプトに POST します。可能であれば、jQuery の AJAXヘルパーを使用して、作成したばかりの PHP ページにデータを投稿します。

このようなもの:

$.ajax({
  url: "whatever.php",
  type: "POST",
  data: {Like: true},
  success: function(data){ /* update view */}
});
于 2012-05-07T18:31:41.363 に答える
0
$('.like').click(function(){
   rate(1);
})
$('.dislike').click(function(){
   rate(-1);
})

function rate(_val){
$.ajax({
  url: 'ajax/rate.php?val='+_val,
  success: function(data) {
    alert('Rate was performed.');
    $(".narrow_right_container").find(".yellow_bg").append("Rating: "+data+"%");
  }
});
}

rate.php:

if(isset($_GET['val'])){
  $sql = "UPDATE.........."; //do an update to your rate table
  echo get_popularity($row); //return rating to ajax
}
于 2012-05-07T18:33:06.317 に答える