PHPで掲示板を作ろう! 掲示板の作成方法 まとめ

さて4回にわけて、掲示板のプログラムを学習してきました。
見た目は超シンプルで実際に動かしてみても、「こんな程度のものしか作れないの?」と思う方は多いかもしれません。
ただ、この基本が一番大事なんです。ここでやったことに関しては他のどのプログラムを作る分野にも共通する基本が書かれています。
ここでは総復習として、4回の内容を総復習したいと思います。
ある程度、PHPを学習している方はこの記事だけで済みます(笑)
Contents
ソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
<?php //var_dump($_POST); //最初に変数を定義しておかないとエラーになる $err_msg1 = ""; $err_msg2 = ""; $message =""; $name = ( isset( $_POST["name"] ) === true ) ?$_POST["name"]: ""; $comment = ( isset( $_POST["comment"] ) === true ) ? trim($_POST["comment"]) : ""; //投稿がある場合のみ処理を行う if ( isset($_POST["send"] ) === true ) { if ( $name === "" ) $err_msg1 = "名前を入力してください"; if ( $comment === "" ) $err_msg2 = "コメントを入力してください"; if( $err_msg1 === "" && $err_msg2 ==="" ){ $fp = fopen( "data.txt" ,"a" ); fwrite( $fp , $name."\t".$comment."\n"); $message ="書き込みに成功しました。"; } } $fp = fopen("data.txt","r"); $dataArr= array(); while( $res = fgets( $fp)){ $tmp = explode("\t",$res); $arr = array( "name"=>$tmp[0], "comment"=>$tmp[1] ); $dataArr[]= $arr; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>掲示板</title> </head> <body> <?php echo $message; ?> <form method="post" action=""> 名前:<input type="text" name="name" value="<?php echo $name; ?>" > <?php echo $err_msg1; ?><br> コメント:<textarea name="comment" rows="4" cols="40"><?php echo $comment; ?></textarea> <?php echo $err_msg2; ?><br> <br> <input type="submit" name="send" value="クリック" > </form> <dl> <?php foreach( $dataArr as $data ):?> <p><span><?php echo $data["name"]; ?></span>:<span><?php echo $data["comment"]; ?></span></p> <?php endforeach;?> </dl> </body> </html> |
まずは掲示板のソースですね。
これは一番簡単なパターンなので実務でソースを書く場合はちがうように書きますが、とっかかりとしては「とりあえず動かす」ということが重要なのでこのソースにしました。
あとはdata.txtというテキストファイルをこのソースと同じ階層に置きます。
既存リンク
その3 PHPで掲示板を作ろう! 掲示板の作成方法 その3
(エラーチェックとファイル書き込み)
その4 PHPで掲示板を作ろう! 掲示板の作成方法 その4
(ファイル読み込みとHTML表示)
掲示板の機能
書き込みデータの表示
掲示板なので当然、今までに書き込まれたデータを表示。
画像
エラーチェック
入力欄が名前とコメントの2つですが、未入力時は下記のようにエラーが正常に出力されます。
画像
正常な入力の場合
入力が正常な場合は、下記のように書き込みが成功したというメッセージが表示され、データが保存されます。
画像
掲示板学習で学べること
この掲示板アプリを作ることで学べるスキルを書いておきます。
外部装置へのデータ格納
一番大きいのはここです。
現在皆さんが使っているWEBアプリは中に書かれている文章や、情報を外部にプールしてあります。
ここがHTMLのサイトとの大きな違いでして、HTMLでサイトを作る場合、すべて文章や情報をHTMLのソースの中に書きます。
PHPなどで作るWEBアプリというのはソースの中に情報はないことが一般的です。
そのため、情報を格納しておく外部装置が必要で、テキストファイルを使うケースとデータベースを使うケースがあります。
今回は最初なので、テキストファイルですが、一般的にある程度の規模のアプリは必ずデータベースを使います。
ファイルポインタ
ポインタとは外部装置からデータを読み込むときに必要になる、しおりのようなものです。
厳密にいうと「メモリのアドレス」なんですが、そんな言葉をつかうと初学者は即死するので(爆)とりあえずは「ファイルがどこまで読んだか、書いたかを示す本のしおり」と考えておけばいいかと思います。
配列への格納と操作
ここが初心者にとって最初に乗り越えるべき関門です。
求めるデータを配列にしっかり格納して、表示できるかです。
このサイトはPHPで説明していますがCだろうがJavaだろうが、50年後に生まれるプログラミング言語であろうが、配列(あるいはそれに相当する技術)の操作が一番基本でなおかつ、ずっと使い続けます。
なぜなら人間がデータを認識するのがこの形だからです。
ソース解説
4~8行目 変数とエラーメッセージの定義
1 2 3 4 5 |
$err_msg1 = ""; $err_msg2 = ""; $message =""; $name = ( isset( $_POST["name"] ) === true ) ?$_POST["name"]: ""; $comment = ( isset( $_POST["comment"] ) === true ) ? trim($_POST["comment"]) : ""; |
使用される変数の定義と初期化です。
PHPに限らずプログラミングではデータを入れる変数を用意しておく必要があります。
それらの変数を用意しておきましょう。
なお$nameや$commentに関しては投稿があったときと、投稿がなかった時場合を分けて、定義しておく必要があります。
11~22行目 入力のエラーチェックと書き込み
1 2 3 4 5 6 7 8 9 10 11 12 |
if ( isset($_POST["send"] ) === true ) { if ( $name === "" ) $err_msg1 = "名前を入力してください"; if ( $comment === "" ) $err_msg2 = "コメントを入力してください"; if( $err_msg1 === "" && $err_msg2 ==="" ){ $fp = fopen( "data.txt" ,"a" ); fwrite( $fp , $name."\t".$comment."\n"); $message ="書き込みに成功しました。"; } } |
投稿があった場合には
- 未入力時のエラーチェック
- ファイルへの書き込み
を行う必要がでてきます。
特にファイルへの書き込みは新しい概念なので重要です。
ファイルポインタといわれる「ファイルがどこまで書きこまれたか、読み進んでいるか」といった情報を格納しておくデータの存在が必要になります。
ファイルの読み書きには基本的にはこれを使います。
またテキストファイルだけではなく、データベースでもでてきます。
実をいうとこのファイルポインタを使わずにファイルを読み書きする方法はあるのですが(爆)使えたほうがいいでしょう。
この考え方自体はPHPだけではなく、他のプログラミング言語でも必ず出てくるからです。
24~34行目 テキストファイルからの読み込み
1 2 3 4 5 6 7 8 9 10 11 |
$fp = fopen("data.txt","r"); $dataArr= array(); while( $res = fgets( $fp)){ $tmp = explode("\t",$res); $arr = array( "name"=>$tmp[0], "comment"=>$tmp[1] ); $dataArr[]= $arr; } |
書き込んだ後は、読み込みになります。
ここでの学習事項は
- ファイルポインタを使ってデータの読み込み
- 文字列→配列→連想配列→多次元配列への格納
ですね。
特に配列の処理は超重要でして、プログラマをやめる日までずっと似たようなことを毎日やることになります。
私も配列の処理は毎日やってますし、今後も毎日やります。
早いうちにこの処理になれておきましょう。
38~60行目 HTMLへの表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>掲示板</title> </head> <body> <?php echo $message; ?> <form method="post" action=""> 名前:<input type="text" name="name" value="<?php echo $name; ?>" > <?php echo $err_msg1; ?><br> コメント:<textarea name="comment" rows="4" cols="40"><?php echo $comment; ?></textarea> <?php echo $err_msg2; ?><br> <br> <input type="submit" name="send" value="クリック" > </form> <dl> <?php foreach( $dataArr as $data ):?> <p><span><?php echo $data["name"]; ?></span>:<span><?php echo $data["comment"]; ?></span></p> <?php endforeach;?> </dl> </body> </html> |
格納したあとは実際にHTMLに表示してみましょう。
ここも広い意味では配列の処理になりますね。Foreachをぐるぐる回して、文字列として出力できればOKです。
なお、PHPをHTMLの中に入れているので、今までのPHPと若干書き方が変わっています。
学習が進んでくるとPHPとHTML自体はファイルを分けることが一般的です。
カスタマイズ
もしこのアプリが完成した場合はさらにカスタマイズしてみましょう。
生徒に指導するときは
- 項目をさらに追加し、それぞれにエラーチェックを行う
- ログインしたらこのページに入るようにする
- 自分の記事は編集、削除ができるようにする
- 1ページ10記事ぐらいにし、下に 1 2 3 ・・・などとリンクを付ける。
(ページ送り機能) - 記事を検索できるようにする
などをすすめていました。
このような機能を追加してあげるとその過程で
- この機能どうやるんだろう?と悩む
- いろんなキーワードで検索したり、本を読んであれこれ調べる
- 見当がついた段階で実際にソースの中で試したり、推測する
- 動く(動かない場合は1に戻る)
のループをすることになります(笑)
プログラミングは基本的にこのソースと格闘するプロセスを経て上達していくのだと思います。
この記事が初心者の方に役に立てば幸いです!
テキストファイルでの掲示板作成はここで終わりですが、一般的に掲示板はMySQLなどのデータベースを使って作ることが一般的です。
ガチンコ塾でもMySQLを使った掲示板作成を当然行います。
次回は「PHPで掲示板を作ろう!(データベース編) その1 データベースとは」になります。
関連記事
-
-
初心者が読みやすいコードを書くときに気をつけたい4つのポイント
本日のお題は、「読みやすいコードの書き方」についてです。 プログラミングをやりたての頃は機能を
-
-
PHPで掲示板を作ろう!(データベース編) その5 PHP-MySQL連結編
今回はMySQLの第5回目の講義です。 前回までの記事 PHPで掲示板を作ろう!(データベース編
-
-
就活生必見! Webエンジニアになるなら知っておきたい超基本業界用語
本日はWEB業界でよくつかわれる専門用語について私の知っている範囲で書いていこうと思います。
-
-
挫折必至!初心者がやってはいけないプログラミングの学習法 ワースト4
多くの方はプログラミングをどのように身につけたらいいのか・・・ということに関心があると思います。
-
-
ゼロからWEBプログラミング(PHP)をマスターするのに何時間かかる?
おはようございます。松本です。 さて、本日のテーマはタイトルのとおりです。以前受講生の方に「ゼ
-
-
お問い合わせフォームを作ろう! その2(PHP)
おはようございます。松本です。 繰り返しますが、このブログは技術ブログなので(笑)PHPのネタ
-
-
PHPで掲示板を作ろう!(データベース編) その6 まとめ編
今回はMySQLの第6回目の講義です。今回で終わりですので、ソースの説明と今までの解説の概略を書いて
-
-
無料プログラミングスクールのメリット・デメリット
一般的にプログラミングのスクールというのは高額です。 30万以上するような講座が普通なので、ぽ
-
-
プログラミングを独学で身につけるときに大切な6つのポイント
さきほど「プログラミング」で検索キーワードをかけたら入力補完で「プログラミング 入門」や「プログラミ
Comment
[…] 前回までの続き … PHPで掲示板を作ろう! 掲示板の作成方法 まとめ www.dt30.net 1 userPHPで掲示板を作ろう! 掲示板の作成方法 まとめ … PHPで掲示板を作ろう!(データベース編) その1 データベースとは […]
参考にさせてもらいます。