画面遷移なしのPOSTbyPHP

画面遷移なしのPOSTbyPHP

簡易CMSを作るにあたって、ひとまず記事の表示記事の作成
二つの機能を作った。

表示では、テキストボックスに入力された番号に該当する記事を
番号・タイトル・内容の順に表に表示する。

作成では、テキストボックスに題名、テキストエリアに内容を入力し、
DBに挿入する。(主キーである連番は auto_increment のため null 指定。)

そして、次の問題にぶち当たり、時間が儚くも大きく消費された。

画面遷移せずにPHPに対してデータをPOSTする

Webで探すと色んな方法があることが分かった。
最も参考になったのはteratailの記事
掲示ソースコード的にやりたいことは同じ。

ただ、回答の通り実現するのが難しい。

Ajaxを使えばできると思います。
jQueryを使っているようですので、関連のメソッドを使えば比較的簡単です。

早速 Ajax を使って POST するサンプルコードを載せてくれているWEBCAKEの記事
参考にコードを実装。

が、上手くいかない。
そもそもコード自体の理解が出来ないため、実装したコードの正当性も不明。
Ajax について簡易なサンプルコードを使って理解を進める必要がありそう。

宿題

  • Ajax を用いて PHP で POST するコードを実装する。
  • また、Ajax を用いたシンプルなコードを実装し、動作を確認する。

雑記

jQuery

jQuery を使う際は、HTML で以下のように書けば利用できる。

<script
    src="http://code.jquery.com/jquery-1.12.4.min.js"
    integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
    crossorigin="anonymous">
</script>

Ajax

Asynchronus JavaScript and XML(@IT)とのこと。
「非同期な JavaScript と XML 」。はてなんのことやら。

今日の勉強ではいまいちつかめてないけど、Yahoo! 地図とか Google Map に大きく
貢献してる概念らしい。
簡単に言うと、これまでは地図の場所が遷移するたびに1ページまるまる読み込みしてた
らしいけど、今は移動に合わせて差分だけが読み込まれるらしい。
(すいません、この程度の理解です。)

SQL文のプレースホルダ

二通りの書き方がある、というだけです・・・。

一つは、select * from articles where id = ?
「?」がプレースホルダ。バインドするときは、bindValue(1, $_POST['data'], PDO::PARAM_STR);
プレースホルダの二個目にバインドする場合は、第一引数をインクリメントする。

もう一つは、

$sql = 'INSERT INTO articles VALUES(null, :content, :title)';
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':content', $_POST['content'], PDO::PARAM_STR);
$stmt->bindValue(':title',   $_POSt['title'],   PDO::PARAM_STR);

「:variable」の形式で記述します・・・。(書くことない。)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です