前提条件
MySQLのデータベースが用意できていること
入力フォームをHTMLで書く
.phpファイルを作成していかを書き込む。
<form action="送るphpファイルの名前。一旦、今書いてるファイル名" metod="post">
<label>投稿内容</label>
<input type="text" name="content">
<button type="submit">送信<button>
</form>
投稿内容をサーバに送って表示できるようにする
とりあえず、データベースに送る前に、送信ボタンを押したら、上にその内容が表示される仕組みを作ってみる。
(送信ボタンを押したら、サーバに送って、サーバ上でPHPが処理した内容を表示させるだけでデータベースにつながっていないので、リロードするとすぐ消えちゃう。)
さっき書いていた.phpファイルのフォームの上あたりに以下を追加
<?php
print_r($_POST);
?>
phpにはPOSTメソッドを受ける$_POSTというのが用意されてるので、これをprint_rで出力するだけ。
PHP組み込みのisset関数を使って、中身に応じて出し分けてみる。
基本の書き方はこんな感じ。
if ( isset ( 変数名 )) {
変数の中身がある時の処理
}else{
変数の中身が空の時の処理
}
今回はこんな感じに書き換えてみる
<?php
print_r($_POST);
if ( isset ( $_POST["キー名"] )) {
$content = $_POST["キー名"];
}else{
$content = "なし";
}
echo "投稿内容:" . $content;
?>
データベースと繋ぐ
さっきのisset関数の部分を以下の通りに書き換える。
<?php
// 接続
$pdo = new PDO("mysql:host=ホスト名;dbname=データベース名;charaset=utf8", "ユーザ名", "パスワード" );
print_r($_POST);
if ( isset ( $_POST["キー名"] )) {
// 投稿内容を変数contentへ入れる
$content = $_POST["キー名"];
// SQL文を入れる
$sql = "INSERT INTO bbs (content, update_at) VALUES(:content, NOW());";
// さっきのSQL文をセットする
$stmt = $pdo->prepare($sql);
// SQL文の中に、投稿内容を入れた変数を直接SQL文にセットはできない。
//ここでbindValueを使って、変数contentを:contentに入れる
$stmt -> bindValue(":content", $content, PDO::PAEAM_STR);
// SQL文を実行
$stmt -> ececute();
}else{
$content = "なし";
}
echo "投稿内容:" . $content;
?>