data属性
プログラマが自由に名付けられる唯一の属性
<tag data-hoge="value">
とすると、
jQuery->data()
で引き出せる
またエラーだな
<span data-t_id="<?php echo $row["t_id"]; ?>">いいね<img src="img/heart_small.png">
ここのspan data-t_idがt.idにミススぺっていた。それでconsole.log(t_id);をしたのでundefined(みつからないー)がたくさん出たというわけ。
ソースで振られているかどうか確認もしたが
t.idになっているのに気づかなかった。
Ajax通信を書きますよ。
①どこと通信? 通信相手をurlを文字列で記述 カンマ
②データプロパティ パラメータで何を渡すの?
→t_id=1とかt_id=10とか渡したい
→t_id=2&u_id=makinoとかいうふうに「プロパティと値、プロパティと値」と渡したいかも
→つまりオブジェクトとして渡す(複数渡すことを見越して)
→プロパティは't_id'(自分で作ったプロパティはシングルコートで挟む)、それからコロン、値はさっきつくりましたね(またまた同じ変数名なので混乱しやすいやつだ) 最後にカンマを忘れずに
③通信方法のタイプは? get
④データタイプ (よくみなさんdateとまちがえるがdataTypeだ) プレーンかXMLなのかジェイソンかなのか
しかしこのままだとなにもないらしくてfailのほうにいくらしく、update_likes.phpのほうにecho 'ok';をいれておくよ
→
いいねを連打
(見た目は何も起こらない)
DBをみるといいねが増えている
さて、押した瞬間にいいねが増えてほしいよね
SELECTをまた使うが同じ名前は使えないのでsql2とする
--->update_likes.php
<?php
//いいねを1つ増やす処理
require_once("config.php");
$sql="UPDATE tweets SET likes=likes+1 WHERE t_id=:t_id";
$stmt=$pdo->prepare($sql);//構文を焼く
$stmt->bindValue(":t_id",$_GET["t_id"],PDO::PARAM_INT);//番号だからINT
$stmt->execute();
//echo 'ok';
//いいねがいくつか取得する処理
//同じ名前は使えないので
$sql2 = "SELECT likes FROM tweets WHERE t_id=:t_id";
$stmt2=$pdo->prepare($sql2);
$stmt2->bindValue(":t_id",$_GET["t_id"],PDO::PARAM_INT);
$stmt2->execute();
//fetchして中身を取り出す
$row=$stmt2->fetch(PDO::FETCH_ASSOC);
echo $row["likes"];
?>
打ち込んだら窓にこれを入れて確認しますよ
http://localhost/php/makino/twitter/update_likes.php?t_id=1;
更新するたびに数が増える