SQLiteを使って超簡易のコメントページをつくる
ぼくの連れが最近PHPを弄ったり、WEBサイトを作ったりしている。まぁ彼女なのだが、やっぱり自分の好きなことに興味持ってもらえるのは嬉しいわけです。コメント機能がほしい、ということを言っていたのでサクっと作ってみた。(所用時間40分)
機能としてはコメントの追加と閲覧しかできないけど、基本的な流れを知るには十分。あとは、コメントを削除する機能や、入力者の名前とか書き込み日付を保存するように改良すれば、結構使えるんじゃないかな。
今回、データの保存にはSQLiteを使っている。
いきなりMySQLのようなデータベースを使わせるのは敷居が高いし、テストできる環境も限られる。かといって、今時テキストファイルに書き込んで読み込むのも古いしダサイ。そんなわけで、SQLiteというPHPに附属している簡易データベースを使った。使うのは実はこれが初めて。出来てみると、とっても簡単。一つのファイルに全部のデータが入っちゃうのがいいね。バックアップもしやすいし、何よりわかりやすい。
PHPソース(ファイル名は comment.phpとかにしてね)
<?php $ext = file_exists( "db_comment" ); $db = sqlite_open("db_comment"); // ファイルが無ければ新しくテーブルを作る if( !$ext ){ $sql = "CREATE TABLE comments(id INTEGER auto_increment, text TEXT)"; sqlite_query( $db , $sql ); } // 追加コマンドがあれば、追加を行う if( $_GET['cmd'] == 'add' ){ $sql = "INSERT INTO comments (text) VALUES ( '{$_POST['text']}' )"; if( sqlite_query( $db , $sql ) ) echo '追加されました<br />'; // もう一度リロードする header("Location:comment.php"); } // 全部のコメントを読み込む $sql = "SELECT text FROM comments"; $comments = sqlite_array_query( $db , $sql ); sqlite_close( $db ); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>コメント</title> <link href="comment.css" rel="stylesheet" type="text/css" /> </head> <body> コメント<br /> <form method="post" action="comment.php?cmd=add"> <textarea name="text" id="textarea" cols="100" rows="5"></textarea> <br /> <input type="submit" name="button" id="button" value="書き込む" /> </form> <h3>コメント</h3> <div id="comments"> <?php // コメントを一つずつ表示する foreach( $comments as $cmt ){ echo '<div class="comment">'; echo nl2br( $cmt['text'] ); echo '</div>'; } ?> </div> <script type="text/javascript"> // ページ読み込み時に、入力欄にフォーカス document.getElementById('textarea').focus(); </script> </body> </html>
いちおう、ちょこっとスタイルシートもある。
ファイル名は comment.css にして上のPHPファイルと
同じフォルダに置いてね。
#comments { font-size: 80%; width: 700px; } .comment { border: 1px solid #555; margin-bottom: 10px; padding: 5px; }
ちなみに、僕の環境では、SQLiteを動作させるために、windowsフォルダにあるphp.iniの中の、
extension=php_sqlite.dll と
extension=php_pdo.dll を有効にしないといけなかった。
これは行の先頭のセミコロンを取ってやればOK。
;extension=php_pdo.dll (初期設定)
↓
extension=php_pdo.dll (設定後)
ってことね。設定したら、忘れずにapacheを再起動してやりましょう。