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;
更新するたびに数が増える