*

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表示)になります。

関連記事

「初級」〜「中級」のPHPエンジニアのスキルについてまとめてみる(DB編)

本日はデータベース系の必要な技術について。 ウェブエンジニアといっても技術領域が非常に広いので

記事を読む

PHPで掲示板を作ろう!(データベース編) その6 まとめ編

今回はMySQLの第6回目の講義です。今回で終わりですので、ソースの説明と今までの解説の概略を書いて

記事を読む

よく使う処理をまとめよう その1 (関数)

おはようございます。松本です。 私の会社では10時半から掃除の時間でして、ここ数ヶ月ずっとやっ

記事を読む

「初級」〜「中級」のPHPエンジニアのスキルについてまとめてみる

いままで主にPHP(を中心としたWeb技術)を勉強し始めの傾けに記事を書いていましたが、今回は初級か

記事を読む

初心者でもできる!作れる!WEBサービスの開発 その4 総まとめ編

前3回の記事でWEBサービスを作ったお話をさせていただきました。 (前回までのお話し)

記事を読む

理論と実践のバランス

ネタ不足&開発のほうが忙しく、一か月以上書いておりませんでした。 今回は漠然とスキルアップする

記事を読む

PHPはなぜ簡単といわれるのか?

最近ではブラック企業と同じような意味合いでブラックバイトなんて言葉があるらしいですね。 ただ定

記事を読む

プログラミングをする上で超大切な検索方法の身につけ方

今日はプログラミングで大切な検索方法の身につけ方について私なりのコツなどを書いていこうかなと思います

記事を読む

オブジェクト指向 その2 「設計図」と「部品」

それではオブジェクト指向を具体的に解説していこうと思います。といっても、天才でない限り、初学者でいき

記事を読む

お問い合わせフォームを作ろう! その1(HTML)

このサイト、PHPの学習サイトなのに内容から遠ざかっていました(爆) 個人的にはプログラミング

記事を読む

Comment

  1. 空いた より:

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

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

  2. ななし より:

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

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

    • matsumoto より:

      ななしさん

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

Message

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

無料PHPスクール
自社開発>客先常駐である本当の理由

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

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

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

エンジニアを採用する上で大事なこと

本日はエンジニアの採用について書きたいと思います。最近少し採用に絡んだ

エンジニアが給料を上げる方法を真面目に考えて見ました。

本日はエンジニアと給料の話題について触れて行こうと思います。 エ

エンジニアの「スキル」とはなんぞや

給与が低いことに悩んでるエンジニアへのアドバイスをツイートで見たところ

→もっと見る

  • follow us in feedly
PAGE TOP ↑