*

PHPで掲示板を作ろう! 掲示板の作成方法 その3(エラーチェックとファイル書き込み)

公開日: : 最終更新日:2019/01/24 PHP, 講義 , ,

PHP 掲示板

今回はPHPのコードの説明です。

掲示板の作成方法についてやります。

えー、前回の掲示板の作成方法からだいぶ期間があいてしまいました(汗)。

前回書いたのが2か月前ですね。

ブログ更新は定期的にかいてますが、ネタが結構ぶれるんで、定期連載物はちゃんとやっていきいっすね。

しかもソースが一部間違えてました。

もう修正していますが、18行目は下記の通りです。(今まで見てたかたスイマセン・・・・)

誤 $fp = fwrite( $fp ,  $name.”\t”.$comment.”\n”);

正 fwrite( $fp ,  $name.”\t”.$comment .”\n”);

2016/8/24 改行文字が抜けておりましたので追加しました。

前回までの続き

その1 PHPで掲示板を作ろう! 掲示板の作成方法 その1

その2 PHPで掲示板を作ろう! 掲示板の作成方法 その2

掲示板全体のソース

講義

前回まではほとんど掲示板とは何か?といったことと全体的な紹介に終始していたので、細かい説明はしていませんでしたね。

今回はPHPの掲示板をしっかり説明していきます。

まず今回の学習項目ですが、

  • 変数とエラーメッセージの定義の仕方
  • 入力のエラーチェックとファイルへの書き込み(重要!)

です。

変数とエラーメッセージの定義の仕方

ソース

今回説明するのはこの部分ですね。

解説

えー何をする部分かというとユーザーが入力するデータ(名前とコメント)、そのエラーメッセージを入れる変数を作ります。

変数=箱みたいなもんですね。

参考リンク データを扱ってみようその1(変数)

プログラミングとは簡単に言うと変数になんらかのデータをいれてそれを処理したり、画面に表示したりする行為です。

そのデータが入る変数をあらかじめ用意してあげないとエラーが発生してしまいます。

仮にデータが空であっても変数自体は用意する必要があります。

(空である、ということ自体が大切な情報だからです。)

$message=””というのは「messageという箱を用意します。その箱は最初空です。」

という意味です。

$name = ( isset( $_POST[“name”] ) === true ) ?$_POST[“name”]: “”;

というのはクリックボタンが押された場合はnameにそのデータを入れ、そうでないとき(つまりは一番最初に画面を読み込んだ時)は空白を入れる」という処理です。

入力のエラーチェックと書き込み

ソース

解説

まずは入力データのエラーチェックです。

今回の場合、名前とコメントが未入力の場合、エラーメッセージを表示する必要があるので、そのエラーチェックをしなくてはいけません。

if ( $name   === “” ) $err_msg1 = “名前を入力してください”;

ですが、$nameが空白なら、$err_msg1に「名前を入力してください」を入れます。

これを名前とコメントについて行います。

名前、コメントに入力があり、エラーメッセージが空白ならファイルへの書き込みになりますが、実は今回の掲示板はここがメインです。

この掲示板を学習する意義ですが、ファイルへの書き込み、ファイルへの読み込みを学ぶことにあるからです。

あ、ちなみにこのプログラムを動かす場合はdata.txtというテキストファイルを用意する必要がでてきます。これがないとソースを完ぺきに写したはずなのにエラーがでます。

$fp = fopen( “data.txt” ,”a” );

fwrite( $fp ,  $name.”\t”.$comment.”\n”);

の部分ですね。

この$fp = fopen( “data.txt” ,”a” );なんですが、この処理が肝ですね。

ここでファイルポインタという概念がでてきます。

ポインタとは本のしおりみたいなもの

まず$fp = fopen( “data.txt” ,”a” )の処理なんですが、これはファイルポインタを取得しています。

ファイルポインタとはなんぞや?という方もいると思いますが、簡単に言ってしまうと本のしおりみたいなもの、だと思ってください。

本を読む人であれば、ここまで読んだということで目印としてしおりを挟むと思います。

PHPではファイルの読み書きをする場合は、ここから読みます、ここから書き込みます、今ここまで読んでいます、という情報を持っておく必要があるんですね。

その情報をファイルポインタといいます。

fopen( “data.txt” ,”a” );の”a”は、これは追加の書き込みという意味です。

掲示板の場合は、それまでに書いた情報に追加をするので”a”になります。

書き込みをするたびに、前のデータを全消去して、上書きする処理もあり、そのタイプは”w”になります。ちなみの読み込みの場合は次回やりますが、”r”になります。

次の fwrite( $fp ,  $name.”\t”.$comment.”\n”);

ですが、これは実際に取得できたファイルポインタに書き込みをしています。

fwrite(ファイルポインタ、書き込み内容);です。

書き込み内容の$name.”\t”.$commentですが、これは名前とコメントの間にタブを入れています。

書き込んだ内容が

名前=松本、コメント=テストです。

だった場合に「松本テストです。」と入力してしまうと、PHPが後で取り出すときに、名前とコメントの区切り文字がわかりません。

区切り文字が必要なため、タブ記号(“\t”)を入れます。

最後の”\n”は改行です。

fgetsは1行ずつ読み込むため、改行をいれないと1行と認識しません。

そのために改行をいれます。

まとめ

以上が、今回の内容です。

特にファイルへの書き込みのところの理解が難しかったと思います。

復習しておきますと

変数の定義

PHP上で使う変数はあらかじめ定義しておく必要がある。

エラーチェック

未入力データのチェックを行います。

この手の処理は今後も引き続き行いますので、慣れておきましょう。

ファイルポインタ

ファイルの入力、出力をする際に必要となる本のしおりみたいなもの。

このしおりに入力、書き込みをすることで実際のファイルへの入力、出力ができるようになります。

次回の学習はPHPで掲示板を作ろう! 掲示板の作成方法 その4(ファイル読み込みとHTML表示)になります。

関連記事

初心者が読みやすいコードを書くときに気をつけたい4つのポイント

本日のお題は、「読みやすいコードの書き方」についてです。 プログラミングをやりたての頃は機能を

記事を読む

Java/PHP/Perl/Ruby/Python 主要Web系言語徹底比較

本日はWeb系で使われているプログラミング言語の比較をしてみようと思います。 Web系で使われ

記事を読む

教え方がうまい人に共通するたった1つの考え方

やや遅い気もしますが、あけましておめでとうございます。 今年もよろしくお願いします。 昨

記事を読む

文字化けを回避するには

こんにちは。松本です。 最近は実務ではJavaをやっていることが多いのですが、まだ普及していな

記事を読む

ガチンコ塾、人気記事ベスト5

このブログも開設して約半年たちましたね。 思った以上にたくさんの方に読んでもらえてうれしいです

記事を読む

エラーメッセージで挫折

もうエラーメッセージで挫折しない! 4つのエラーメッセージ対処法

このブログで何回か書いたのですが、PHPに限らずプログラミングの独学はかなり難しいです。 その

記事を読む

就活生必見! Webエンジニアになるなら知っておきたい超基本業界用語

本日はWEB業界でよくつかわれる専門用語について私の知っている範囲で書いていこうと思います。

記事を読む

PHPで掲示板を作ろう! 掲示板の作成方法 その1

以前、お問い合わせフォームを作成しましたが、今回からは数回に分けて掲示板を作成していこうと思います。

記事を読む

作業が遅くてイライラしている方必見!作業スピードを改善するネタ・ツールなど

エンジニアとして仕事をしていますと、「ある機能を実装する最適な方法(設計やプログラムの組み方全般)を

記事を読む

PHPで掲示板を作ろう! 掲示板の作成方法 その4(ファイル読み込みとHTML表示)

今回でラストです。(次回はまとめをやる予定ですが。) これだけのソースにしては説明が長かったで

記事を読む

Comment

  1. 空いた より:

    ファイルに対するセキュリティの設定をフルコントロールにしたら成功しました。

    僕の勘違いでしたすいません>_<

  2. ななし より:

    $messageの説明の所が間違っていますよ

    $message=””というのは「nameという箱を用意します。その箱は最初空です。」ではなく
    $message=””というのは「messageという箱を用意します。その箱は最初空です。」では?

    • matsumoto より:

      ななしさん

      管理人の松本です。
      ご指摘ありがとうございます。
      修正させていただきます。

Message

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

転職エージェントについて

さて、エンジニアとして転職を考えている人であれば転職エージェントを使っ

エンジニアが転職して年収を上げる方法を考えてみました。

えー前回の記事でも書きましたが、2020年2月現在転職活動中です。

2020年のご挨拶

今更ですが、明けましておめでとうございます。 2019年も2本し

自社開発>客先常駐である本当の理由

このブログでも何回か取り上げていますが、ITエンジニアの働き方としては

エンジニアにとって必要なコミュニケーション能力とは

気がついたらもう3月下旬になっていますね・・ 年末年始忙しかった

→もっと見る

  • follow us in feedly
PAGE TOP ↑