1

スクリプトの好きな/嫌いなボタンを使用して、インターネット検索からこのスクリプトを見つけました

http://wcetdesigns.com/view.php?dtype=tutorials&category=php&id=22

単一の投稿に使用する場合はすべてうまく機能しますが、

サイクル中のすべてのドキュメントにこの評価スクリプトを使用したい

たとえば、ニュース スクリプトがあり、すべてのニュースが一覧表示され、タイトルの近くに好きな/嫌いなボタンが表示されます。(stackoverflow Web ページのように) このすべてのコンテンツを個別に評価したいと思います。このスクリプトでは、同じページ内の記事 ID を分離できませんでした。

それについて私を助けてもらえますか?

4

2 に答える 2

8

まず、ボタンごとにどの記事を対象とするかを指定する必要があります。data- 属性を使用して簡単に指定できます。

<button class="votebutton" data-article="1" data-vote="1">Up vote</button>
<button class="votebutton" data-article="1" data-vote="-1">Down vote</button>
<span class="votes" data-article="1"><?=//print the current number of votes of this article//?>

ボタンがクリックされたときに何かを行う必要があるため、JavaScript は次のようになります。

$('.votebutton').on("click", function(){
  vote = $(this).attr("data-vote");
  article = $(this).attr("data-article");
  rateArticle(vote, article);
})

次に、次のような rateArticle() 関数が必要です。

function rateArticle(vote, article){ 
  var data = 'vote='+rating+'&articleID='+article;
  $.ajax({
     type: 'POST',
     url: 'rateArticle.php', 
     data: data,
     success: function(votes){
         $('.vote[data-article='+article+']').html(votes); 
     }
   });
}

サーバー側では、投稿する rateArticle.php ファイルは次のようになります。

$vote = $_POST['vote'];
$articleID = $_POST['articleID'];
$currentVotes = ; //fill it with the votes that the article currently have

if($vote != "-1" || vote != "1"){
  //goddamn script kids messing with us again, let's put them back where they belong
  header("Location: http://www.lemonparty.com"); //probably not this, but you can think of something
}

if(userHasAlreadyVoted()){ //if user has already voted we just return the current number of votes
  echo $currentVotes;
}else{
  $newVotes = $currentVotes + $vote;
  //save newVotes to db...
  echo $newVotes;
}

そしてそれはそれについてです...

于 2012-09-28T14:04:14.713 に答える
0

私はこのコードを書きましたが、phpコードでajaxを使用して好き嫌いにうまく機能します:)

私はそれを test1.php 、 test1.js 、 test1php.php という名前の 3 つのページに分割しました

test1.php

<?php
    mysql_connect("localhost","root","");
    mysql_select_db("school");
?>
<html>
    <head>
        <script type="text/javascript" src="test1.js"></script>
    </head>
    <body>
        <form action="" method="post" enctype="">
            <table id="status_id">
            <?php
                $qry = mysql_query("SELECT * from s_user");
                while($row = mysql_fetch_array($qry)){
                    $uid = $row['u_id'];
                    $status = $row['u_status'];
                    $uname = $row['u_uname'] . "<br />";
            ?>
                <tr>
                    <td><?php echo $uname; ?></td>
                    <td><div id=""><?php echo $status; ?></div></td>
                    <td><input type="button" onclick="return change_status(this.value);" value="<?php echo $uid; ?>"></td>
                <?php } ?>
                </tr>
            </table>                    
        </form>
    </body>
</html> 

test1.js

function change_status(country)
{
  // alert("hellow");
if (country.length==0)
  {
   //alert("hellow"); 
  document.getElementById("status_id").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("status_id").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","test1php.php?status_id="+country,true);
xmlhttp.send();
}

test1php.php

    <?php
    mysql_connect("localhost","root","");
    mysql_select_db("school");
    $id = $_GET['status_id'];
    $q = mysql_query("SELECT * from s_user WHERE u_id = $id");
    $r = mysql_fetch_array($q);
    $fetch_status = $r['u_status'];
    if($fetch_status == 1){
        mysql_query("UPDATE s_user SET u_status = 0 WHERE u_id = '$id'");
    }else{
        mysql_query("UPDATE s_user SET u_status = 1 WHERE u_id = '$id'");
    }
?>
            <table id="status_id">
            <?php
                $qry = mysql_query("SELECT * from s_user");
                while($row = mysql_fetch_array($qry)){
                    $uid = $row['u_id'];
                    $status = $row['u_status'];
                    $uname = $row['u_uname'] . "<br />";
            ?>
                <tr>
                    <td><?php echo $uname; ?></td>
                    <td><div id=""><?php echo $status; ?></div></td>
                    <td><input type="button" onclick="return change_status(this.value);" value="<?php echo $uid; ?>"></td>
                <?php } ?>
                </tr>
            </table> 
于 2013-04-03T04:43:16.663 に答える