*

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

公開日: : 最終更新日:2016/08/24 PHP, 講義 , ,

今回でラストです。(次回はまとめをやる予定ですが。)

これだけのソースにしては説明が長かったですね。

結局はファイル(外部装置)の読み書きと配列への格納、HTMLへの表示ですね。

これは超基本ではありますが、プログラマの場合、毎日やりますね。

前回までの続き

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

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

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

掲示板全体のソース

講義

今回で一応ラストですね。今回は

前回やったテキストファイルへの書き込みに加え、

  • テキストファイルの読み込みと配列への格納
  • HTMLへの表示

を学習します。

テキストファイルの読み込みと配列への格納

ソース

解説

テキストファイル読み込み

今回は実際にテキストファイルからデータを読み込む処理を行います。

まず前回の書き込み同様、しおり(ファイルポインタ)を取り出します。今回は書き込み系の処理ではなく読み込みなので、モードは”r”になります。

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

前回はfwirteという関数で書き込みを行いますが、今回は読み込みの処理を行いますので、fgetsという関数を使います。

この関数はファイルポインタを読み込み、1行分だけ読み込むという処理を行います。ポインタは1行分次にすすみます。

その結果が$resという変数に入ります。

たとえばテキストファイルの内容が

松本 テストです。

鈴木 テストです。

田中 テストです。

となっている場合、$resには一番先頭の「松本 テストです。」のみが取得されます。

配列への格納

次にテキストファイルから文字を取得したらこれを配列にいれます。

$resには今「松本 テストです。」という情報が入っています。

これをまず1行ではなく、名前=>”松本”,コメント=>”テストです。”といったように分割して、名前をつけた配列にいれてあげなくてはいけません。

分割

まず、分割ですが、それをおこなっているのが、

$tmp = explode(“\t”,$res);になります。

この処理は$resという文字列を\t(タブ)で区切り、配列にします、という処理です。

$tmpというのは普通の変数ではなく、配列で、0番目に”松本”,1番目に”テストです。”が入ります。

名前付け

このままでもよいのですが、0,1ではあとで処理をするときにわかりにくいのでラベルがついた配列にします。ようは連想配列にするわけですね。

その処理をおこなっているのが、

でこれは

$tmpという配列から

“name”=>”松本”,”comment”=>”テストです。”という連想配列にしてます。

多次元配列への格納

ここまでの処理でnameとcommentを格納した配列を作成することはできましたが、ここまでだと1人分のデータしか格納できません。

掲示板の書き込みは1つではなく、通常多数であることが一般的です。

そのため多次元配列に格納する必要がでてきます。

その処理が$dataArr[]= $arr;になるんですね。

これは“name”=>”松本”,”comment”=>”テストです。”という連想配列を多次元配列に値を入れておくことを意味しています。

繰り返し

あとはこの処理をテキストファイルの行数文繰り返せばOKです。

今回の処理は全てwhileの中にあると思いますが、書き込みが3行なので3回この処理を行います。

ちなみにここまでのところが不安な方はそれぞれ以下のリンクで復習をしておきましょう。

データを扱ってみよう その2(配列)

データを扱ってみよう その3 (多次元配列)

HTMLへの表示

ソース

解説

さて、がんばって配列に値を格納した後は今度はそれを表示しないといけません。

ここまでの処理はすべてPHPが内部でやっていることであり、人間にはその処理が一切わかりません。

人間が判定できるようになるためには画面に表示する必要がでてきます。

その処理が

になります。これは$dataArrという多次元配列の中にデータが全てつまっているため、これをforeachでループ表示させます。

純粋なPHPで記述すると

なのですが、上記はPHPをHTMLの中に組み込んでいますので、少し独特な書き方になっています。

ここらへんのループ処理が弱い方は

繰り返しを学ぼう(for,foreach)

で復習しておきましょう。

まとめ

テキストファイルのよみこみと配列への格納

外部装置(今回はテキストファイル)からの読み込みと配列への格納というのはプログラミングの中でも最重要内容です。

プログラミングって極論すると配列の操作、処理

と今後やるオブジェクト指向が2大テーマなんですよね。

これはプログラミング言語が変わっても同じだと思います。

初心者にとっての鬼門がこの配列の操作、処理になります。

そういった意味でここは復習が超大事になってきます。しっかりと復習しておきましょう。

HTMLへの表示

ここは慣れないと意外と難しいところですね。

PHPで一番出てくる関数はforeachなので、この配列の処理になれていない方は何度も復習してみてください。

以上、掲示板の処理を一通り、ざっと見てきました。

あとは似たような処理を何度も繰り返して、体にしみこませるようにしましょう。

プログラミングは理解が半分、慣れが半分です。

次回の学習コンテンツは「PHPで掲示板を作ろう!  掲示板の作成方法 まとめ」になります。

関連記事

繰り返しを学ぼう その2 (while)

おはようございます。松本です。 最近、仕事をしていると細かいノウハウよりも「行動力」が何よりも

記事を読む

プログラミングが初心者にとって難しい4つの理由

今回は初心者がプログラミングをやるのがなぜ難しいかをしっかり書いていこうかと思います(爆)。

記事を読む

ゼロからWEBプログラミング(PHP)をマスターするのに何時間かかる?

おはようございます。松本です。 さて、本日のテーマはタイトルのとおりです。以前受講生の方に「ゼ

記事を読む

初心者がプログラミング学習で挫折しないために大切な2つのポイント

ブログを開設してから半年近く、記事にして70ちょっと書いてきましたが、人気のある記事を見ていると大き

記事を読む

データを扱ってみよう その3(多次元配列)

お疲れ様です。松本です。 さて前回の「データを扱ってみよう その2(配列)」から若干日が開いて

記事を読む

未経験者がWEBエンジニアとして就職する前に身につけておいたほうがよいスキル一覧

夕方、用事から帰ってきてから寝てしまったので寝れなくなっている松本です。 寝れないので今日はも

記事を読む

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

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

記事を読む

プログラミングを独学で身につけるときに大切な6つのポイント

さきほど「プログラミング」で検索キーワードをかけたら入力補完で「プログラミング 入門」や「プログラミ

記事を読む

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

前回の学習 PHPで掲示板を作ろう! 掲示板の作成方法 その1 それでは掲示板の作成方法その

記事を読む

ドキドキ本番リリース時に大切な心構え

今回はエンジニアにとって大切な本番リリースについて。 本番リリースというのはいままで開発環境(

記事を読む

Comment

  1. ひげ より:

    自分はPHP初心者で、このwebページのソースをそのままコピー&ペーストをしてみたところ、書き込みがあった際に1人分のコメントしか表示されないというバグがあったのですが、色々試行錯誤した結果、18行目の
    fwrite( $fp , $name.”\t”.$comment);
    この部分の$commentの後に\nで改行を入れたところ解決いたしました。
    しかし、今度は何も入力のない状態でそのページを開いたところエラーが発生してしまったため、現在も格闘中です。
    解決策はまだわかっていませんが一応の報告です。

    • matsumoto より:

      ひげさん
      はじめまして。

      管理人のmatsumotoです。
      ご指摘ありがとうございます。
      改行が抜けていることに気づきませんでした(汗)
      恥ずかしい・・・

      ご指摘通り、掲示板関連のソースを修正させていただきました。

      その3にも書かせていただきましたが、
      fgetsは1行ずつ読み込むため、改行をいれないと1行と認識しません。
      そのために改行をいれます。

      >しかし、今度は何も入力のない状態でそのページを開いたところエラーが発生してしまったため、現在も格闘中です。
      とのことですが、ソースとエラー画面のキャプチャを送っていただければ見させていただきます。

      matsumoto@donow.jpに送っていただければと思います。

      エラー画面をみていないのでなんとも言えませんが、data.txtに空白で改行だけがはいっていると
      Undefined offset: 1 in ~
      というエラーメッセージが出ます。data.txtは何も入力のない状態の場合、改行も消さないといけません。

      本当はそういったこと(空白行)まで想定して書かなくてはいけないのですが、上記のソースでは
      学習上少しでも処理を減らしたいため、その処理を書いておりません。

      こちら説明が不明でしたらまた書き込んでいただければと思います。

      • ひげ より:

        ひげ です。
        返信ありがとうございます。

        data.txtの文字を全て削除して起動をしてみたところmatsumotoさんのおっしゃっていたエラーコードが出てきました。
        ですが、試しにdata.txtファイルを削除し、新たにdata.txtファイルを生成して実行したところ、エラーを出さずに起動できました。
        文字だけ全て消しても改行情報は残ってるのですね・・・
        おかげで解決できました。 ありがとうございます。

        • matsumoto より:

          ひげさん

          >返信ありがとうございます。

          こちらこそコメントありがとうございます。
          ひげさんのおかげで記事を修正することが出来ましたので・・・

          他の記事でも正常に動かないもの、質問したいものなどあればどんどん
          書いていただければと思います。

          また技術的なこと以外でも疑問点などあればお気軽に質問していただければと思います。

  2. あず より:

    こんにちは。
    私はphp初心者で、こちらの記事を参考にソースコードを作成しましたが、テキストファイルを同じ階層に作ったにも関わらず「No such file or directory in Unknown on line 0」とエラーが出てしまいました。
    調べてみても原因と解決策が分からず困ってしまったため、質問させていただきます。
    ご回答の程、よろしくお願い致します。

    • matsumoto より:

      あずさん

      初めまして、管理人の松本です。

      連絡が遅れまして、大変申し訳ありません。
      個別にもメールさせていただきましたが、
      もしよろしければソースを送っていただくことはできますでしょうか。
      よろしくお願いします。

Message

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

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

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

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

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

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

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

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

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

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

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

→もっと見る

  • follow us in feedly
PAGE TOP ↑