今回はスレッド式掲示板を作ります。
通常、初心者に教えるサイトってザックリとしたプログラムが書いてあったりして理解できないままの部分が出来てしまったりします。
チェックボックスがあったり、いきなり装飾してあったりと本だと、限られたページ数ですのでそれが顕著です。ちょっとめくったら大規模になっていて諦めたりw
そこで自分でググりながら解決していく問題集を作りました。
なぜ問題集かというと僕が書くより既に詳しく丁寧なページは沢山あるし、そういった本も沢山出ているからです。
こういった資料にないのは順番だけだと思います。一気に飛びすぎないことが大事かなと思います。ググるということは問題解決に至らなくても他の予備知識が備わるので非常にいい手段です。
あまりにも方向性がおかしくなっても仕方ないので、すこし補足でヒントだけ少し書いておきます。
すべて理解する頃にはTwitter、フェイスブック、WordPressがなんとなくどういう風になっているのか理解できたりすると思います。
ブログ、CMSなどはそれらしいものが出来たりします。
問1、フォームから受け取った値をファイル保存
まずは、HTMLでフォームを書いて、その値をファイルに保存するというプログラムを作ります。
フォームが理解できない方は、この辺を参考に出来そうなツールを作ってみるといいかもしれません。
最初はフォーム+関数だけで出来るツールをやることで実際に自分が書いたものが動くという感覚を知ることが出来ます。
問2、$name,$mail,$hageといった複数の値をファイル保存、表示
ここでは配列というものを使います。
問3、$no,$name,$mail,$hageのように保存、投稿数をナンバリングしてみる
$noはファイル内の配列の数を数えましょう。
記事は削除することもあることを頭に入れておきましょう。
問3、ナンバリングしたナンバーを使って、記事投稿、スレッドファイル作成しましょう
スレッドファイルとスレッドリストファイルという二つのファイルを作りましょう。
問1で使っていたファイルがスレッドリストファイルです。
リストファイルはなくてもできますが、あったほうが後々の操作が楽だと思います。
ファイルは驚くほど簡単にできます。作ったファイルは書き込みできるように各サーバーにあったパーミッションを設定することもお忘れなく
問4、スレッド内のファイルにも書き込みする
問1と同じことをスレ内でもやります。この辺りまできたら書き込み禁止機能のためにIP、UA、時間、編集パスも保存しときましょう。
time()
時間はtime()で保存しましょう。はじめから2017年/4月/20日20時20分20秒といった形式でファイルに保存してしまうと、時間規制などがやりにくくなります。
time()だとある時間から経過した秒数を取得します。1000000といった形式です。
表示の際には好きな形式にすればいいです。これがtime()を使うもう一つのメリットで表示の際に、違う形式 29.4/20/20:20:20/のようにしたくなったときにいくらでも訂正できます。
問5、スレッド内も表示
?no=1
といった値をGETします。問2でやった表示と同じですが、それでファイルを呼び出し表示します。
問6、検索してみる
スレッドをタイトルで検索できる機能をつけてみましょう
問1でやった値の受け取りと比較を使います。
受け取った値が現れるまで比較を繰り返し、見つかったら比較の繰り返しを抜けます。
問7、新たに投稿があったスレッドをageる機能
ここでスレッドリストが役に立ちます。
投稿があったスレッドを検索して上に入れ替えます。
多次元配列の検索とファイル保存を使います。
問8、編集、削除
スレッド管理者や投稿者が編集削除できるようにします。
スレッド管理者が記事を削除するとスレッドが消えるようにします。
いずれも削除されたとき、これまでナンバリングはcountなどを使っていた場合、要素の数が変わりますので、スレッド内の場合「記事は削除されました。」などと表示を変えるだけにします。
問9、先頭に >あかさた と書かれた行だけ色を付ける
>あかさた
>>はまやら
>>>わおん
のような機能をつけてみる。
その他の機能を取り付ける
一定期間NEWマーク表示
今日昨日合計カウンター
ROM数表示機能
ID生成、IPから生成したりできます。
アンカー>>1
>>1-20でリンクして1から20番目までの記事を表示
独自タグ→テキストからタグやプログラムを実行できるようにする。
トリップ
スレッドに付いたレス数表示
ファイルアップロード
あぼーん機能付ける。見たくない投稿は表示されなくする
まとめ
今回は、スレッド式掲示板を作成しました。ここまでくれば自分で思いついた機能をつけれると思います。
もし質問があればどしどし受け付けて補足していきます!
では一緒に頑張りましょう!
コメント