0

だから、私はこれを理解したと思ったが、いや。だから私はここでどんな助けも使うことができました。

私はhtmlページを持っています。そのページには 3 つのリンクがあります。各リンクは、異なるデータを表しています。ユーザーがこれらのリンクをクリックすると、PHP ページに投稿され、そのデータが PHP ページに運ばれます。次に、PHP ページがデータベースを更新します。次に、PHP ページは更新された結果を HTML ページに返します。

これには JQuery、PHP、および Ajax が必要であることはわかっています。

ボードの助けを借りて私が今持っているものは次のとおりです。

HTML ページ

<script src="_js/jquery-1.7.2.min.js"></script>     <!-- Linking jQuery -->
<script>                        

$(document).ready(function () {
$('.answer').click ( function (e) {
    var color = $(this).attr("data-color");
    $.ajax({
        url: 'mm.php',
        type: 'POST',
        data: '{ color: "'+color+'" }',
        success: function (res) {
            ...
        },
        error: function (jqXHR) {
            ...
        }
    })
})
                  }
</script>

<title>M&M Poll</title>

</head>

<body>
<h1>VOTE FOR YOUR FAVORITE COLOR M&M</h1>
<h2>Click the M&M to vote</h2>

<div id="wrapper">

<div id="red" data-color="red" class="answer">
<a href="#"><img src="images/red.jpg" width="100%" /></a>
</div>



<div id="blue" data-color="blue" class="answer">
<a href="#"><img src="images/blue.jpg" width="100%" /></a>
</div>


<div id="green" data-color="green" class="answer">
<a href="#"><img src="images/green.jpg" width="100%" /></a>
</div>


<div id=rvotes>
TEST
</div>

<div id=bvotes>
TEST
</div>

<div id=gvotes>
TEST
</div>

PHP ページ

<?php

function showVotes()

{
 $sql = "SELECT * FROM mms";
 $result = mysql_query($sql) or die(mysql_error());
 $showresult = mysql_query("SELECT * from mms") or die("Invalid query: " . mysql_error());
   while ($row = mysql_fetch_array($showresult))
    {
     echo ("<br> M&M = ". $row["color"] . " has " . $row["votes"] . "votes <br>");
    }
}

function addVote() 

{
 $sql= "UPDATE mms SET votes = votes+1 WHERE color = 'red'";
 $result= mysql_query($sql) or die(mysql_error());
 return $result;
}

?>

データベースが機能することはわかっています。HTML/AJAX/PHPを接続するだけです

どんな助けでも大歓迎です!!

4

2 に答える 2

1

まあ、あなたはほとんどそこにいます.それを少しずつ見ていくだけです.コードを入れる必要はありません.

jQuery で、type: 'post' を入力します。これは、呼び出される php ファイルが $_POST にデータを含むことを意味します。

$_POST 配列の内容がわからない場合は、出力してください。

例えば

print_r($_POST);

「色」を含む配列が出力されているのを見るかもしれません

次に、関数に挿入する必要があります。理想的には、関数は addVote() でパラメーターを受け取ります。これは、入力する必要があるためです。これはまた、長い目で見ればあなたの関数に入ってくる情報をクリーンアップする方法論を教えてくれるので、あなたはSQLインジェクションの危険にさらされることはありません.

したがって、迅速で汚いのは次のとおりです。

// you already have this function - add a parameter
addVote ( $color ) { // blah }

addVote ( $_POST['color'] );

addVote() 関数では、すべてが赤であるため、実際には特定の色ではありません。そのため、それを修正する必要があります。

$sql= "UPDATE mms SET votes = votes+1 WHERE color = '$color'";

サイドノート:あなたはまた、時代遅れの mysql_query() を使用しています。それを使い続けると、ここの人々はあなたをむち打ちます-MySql PDOまたはmysqliを調べてください(誰に尋ねるかによって異なります)。しかし、それは別のスレッドです。

これらの手順を実行すると、テーブルが更新されたことがわかります。次に、他の関数 showVotes(); で呼び出す結果を出力します。

それが役立つことを願っています

于 2013-03-04T19:22:27.630 に答える
0

編集:新しいコード、テスト済み、動作します

HTML:

 <html>
    <head>
    <title>M&M Poll</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

</head>

<body>
    <h1>VOTE FOR YOUR FAVORITE COLOR M&M</h1>
    <h2>Click the M&M to vote</h2>

    <div id="wrapper">

    <div id="red" data-color="red" class="answer">
    <a href="#">Red</a>
    </div>



    <div id="blue" data-color="blue" class="answer">
    <a href="#">blue</a>
    </div>


    <div id="green" data-color="green" class="answer">
    <a href="#">green</a>
    </div>


    <div id="rvotes">
    TEST
    </div>

    <div id="bvotes">
    TEST
    </div>

    <div id="gvotes">
    TEST
    </div>
    </div>
    <script>                        
    $(document).ready(function ($) {
        $('.answer').click ( function (e) {
            e.preventDefault();
            var color = $(this).data("color");
            $.post('mm.php', { color: color}, function(data) {
                console.log(data);
                var obj = $.parseJSON(data);
                $('#rvotes').html(obj.red);
                $('#bvotes').html(obj.blue);
                $('#gvotes').html(obj.green);
            });
        });
    });
    </script>
</body>
</html>

PHP:

<?php

$con=mysql_connect("localhost","root","");
mysql_select_db('mm_db') or die('Could not select database');

// Check connection
if (mysqli_connect_errno($con))
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }


function showVotes()

{
 $sql = "SELECT * FROM mms";
 $result = mysql_query($sql) or die(mysql_error());
 $showresult = mysql_query("SELECT * from mms") or die("Invalid query: " . mysql_error());
   while ($row = mysql_fetch_array($showresult))
    {
     echo ("<br> M&M = ". $row["color"] . " has " . $row["votes"] . "votes <br>");
    }
}

function jsonVotes()

{
 $sql = "SELECT * FROM mms";
 $result = mysql_query($sql) or die(mysql_error());
 $showresult = mysql_query("SELECT * from mms") or die("Invalid query: " . mysql_error());
 $color_votes = array();
 while ($row = mysql_fetch_array($showresult))
  {
    $color_votes[$row['color']] = $row['votes'];
  }
  return $color_votes;
}

function addVote($color) 
{
  //If the color is one of the 3 we expect...
  if($color == "red" || $color == "blue" || $color == "green") {
    //NEVER put the variable in the query string, especially in production. Always use prepared statements -> http://php.net/manual/en/pdo.prepared-statements.php
    $sql= "UPDATE mms SET votes = votes+1 WHERE color = '$color'";
    $result = mysql_query($sql) or die(mysql_error());
    return $result;
  } else {
    die();
  }
}


//If this is an AJAX request
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
  //Do some sanitization since we're dealing with mysql instead of mysqli or PDO -> http://php.net/manual/en/book.pdo.php
  $color = htmlspecialchars(trim(strtolower($_POST['color'])));
  //If the vote was added successfully
  if(addVote($color)) {
    echo json_encode(jsonVotes());
  }
}
?>

いくつかの注意事項: PDO を調べてください。を使用するmysql_*ことは悪い習慣であり、減価償却されていますが、より簡単に理解できるように、できるだけコードに近づけたかったのです。$.postの代わりにも調べてください$.ajax。タイプするのが短いので、ほとんどの人はそれを好みますが、それは個人的な好みにすぎません.

于 2013-03-04T19:26:10.780 に答える