*

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で掲示板を作ろう!  掲示板の作成方法 まとめ」になります。

関連記事

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

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

記事を読む

無料プログラミングスクールのメリット・デメリット

一般的にプログラミングのスクールというのは高額です。 30万以上するような講座が普通なので、ぽ

記事を読む

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

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

記事を読む

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

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

記事を読む

「初心者が勉強するのに良いプログラミング言語は何ですか?」を真面目に考えてみる

プログラミングをそもそもやったことがない方であれば、タイトルのように「どのプログラミング言語をやった

記事を読む

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

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

記事を読む

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

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

記事を読む

勘違いしてはいけない未経験ややる気という言葉

かなり久しぶりの投稿になってしまいました・・・ 以前ダイエットに成功し、2年以上かけて10kg

記事を読む

文字化けを回避するには

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

記事を読む

CMSの大まかな構成

前回に引き続き、CMSの大まかな構成について話したいと思います。 HTMLサイトとの違い CMS

記事を読む

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 より:

      あずさん

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

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

  3. […] 掲示板の作成方法 その4(ファイル読み込みとHTML表示)  www.dt30.netPHPで掲示板を作ろう! 掲示板の作成方法 その4(ファイル読み… PHPで掲示板を作ろう! 掲示板の作成方法 まとめ  www.dt30.net  […]

Message

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

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

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

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

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

2020年のご挨拶

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

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

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

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

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

→もっと見る

  • follow us in feedly
PAGE TOP ↑