検索peeks-blog基本、自分のために書いてるブログ。日々でそっとのぞいた、ちらっと見た物事の中から、自分が「これは!」と思った物事を備忘録としてまとめました。ガチンコPHP塾https://www.dt30.net/gachinko/?p=507以前、お問い合わせフォームを作成しましたが、今回からは数回に分けて掲示板を作成していこうと思います。掲示板の仕様...掲示板はお問い合わせフォームと異なり、データを外部に保存する仕組みがある。外部にデータを保存する方法は2種類ある。1テキストファイル2データベース今回は1のように、テキストファイルで保存されている。小規模なシステムでは、この方式が用いられている事がある。単純でデータ量が少ないデータを保存する場合は向いている。基本的には2が採用されている。それでは掲示板の作成方法その2にすすんでいきましょう。前回と比べてかなりソースが長くなりましたね。当たり前ですが、ほとんどの方は長い...以下の4つに分けて処理を記述する。→isset、trimを覚える※画像:trimは、文字列の最初と最後の空白を取り除く関数である。プログラムでは、空白があるとエラーの原因になるので困る。以下のように記述する。trim(文字列,”取り除く要素”)()内に、空白を取り除く文字列と取り除く要素を指定する。「取り除く要素」の部分は省略が可能。改行など特定の要素のみを削除することも出来る。TechAcademyマガジンPHPのtrimで文字列の先頭と末尾の空白を取り除く方法【初心者向け】https://techacademy.jp/magazine/11638プログラミング初心者向けにPHPのtrim関数を使って文字列の先頭と末尾の空白を取り除く方法について解説しています。取り除く文字列も指定できるので、効率よく開発の作業を進められるはずです。書き方を覚えておきましょう。2入力のエラーチェックと書き込み→fopen、fwriteを覚える:ファイルに記述するやつ?ファイルの読み書きを行うにはfopen関数が必要。ファイルやURLを開いてくれる働きがある。fopenでファイルを開いた後、指定の条件を通して処理しfclose関数で開いたファイルを閉じるのが一連の流れになる。fopen基本構文は以下の通り。“オープンモード”);オープンモードとは、fopen関数でファイルを開く際に、どういう様式(モード)でファイルを開くかを指定するもの。ファイルポインタの位置は先頭ファイルポインタとは、どこからファイルに読み込みや書き込みをするかの始まりの位置。既存の内容に追記したい場合は、ファイルポインタが終盤にある“a”を指定しないと、上書きされるので注意する。人がマウスでクリックしてファイルを開くのと同じようにまずは書き込みたいファイルや読み込みたいファイルを開いて使えるような状態にしなければなりません。ファイルの読み書きを行う場合には必ずfopen関数...文字列をファイルに書き込むにはfwrite関数を使う。fwrite関数は、fopen関数やfclose関数と併用して用いられている。ファイルポインタは、書き込むファイルをfopen関数で開いたものが入る。);flatFlagPHPでのファイル書き込みとパーミッションエラー解決法https://www.flatflag.nir87.com/fwrite-792#fwritePHPで簡単にファイルに書き込む2つの方法です。書き込みができない場合のパーミッションの変更についてもご紹介!これでファイル書き込みは簡単に使えますよ。外部ファイルからも読み込む事ができる。全体のファイルを一度に読み込む関数(file_get_contents)がある。fgetsの書き方は以下の通り。処理位置を進めることで開いたファイルの先頭から順に読み込んだり出力したり出来る。TechAcademyマガジンPHPのfgets関数でファイルの読み込みを行う方法【初心者向け】https://techacademy.jp/magazine/11473プログラミング初心者向けにPHPのfile_get_contents関数、fgets関数を使ってファイルの読み込みを行う方法について解説しています。外部のファイルを読み込みたい場合に便利なメソッドなので、ぜひ覚えておきましょう。その3(エラーチェックとファイル書き込み...http://www.dt30.net/gachinko/?p=650今回はPHPのコードの説明です。掲示板の作成方法についてやります。えー、前回の掲示板の作成方法からだいぶ期間があいてしまいました(汗)。前回書いたのが2か月前ですね。ブログ更新は定期的にかいてますが、ネタが結構ぶれるんで、定期連載物はちゃんとやっ...1変数の定義PHP上で使う変数は、あらかじめ定義しておく必要がある。プログラミングとは、変数に何かしらのデータを入れて、それを処理したり、画面に表示したりする行為である。このデータが入る変数をあらかじめ用意しないと、エラーが発生してしまう。isset関数は、変数に値が入っているかをチェックする関数。変数に値がセットされていて、かつNULLでないときにTRUE(真)を戻り値として返す。isset関数は、if-else文と合わせて使われる事が多い。TechAcademyマガジンPHPのisset関数で変数に値がセットされているかを確認する方法【初心者向け】https://techacademy.jp/magazine/11410プログラミング初心者向けにPHPのisset関数を使って変数の中身が存在するかどうか確認する方法について解説しています。変数に値が入っていた時、入っていなかった時の処理を簡単に行えるので、ぜひ今のうちに理解しておきましょう。以下のコードはショートハンドで記述している。これは、クリックボタンが押された場合はname(comment)にデータを入れ、そうでない時(一番最初に画面を読み込んだ時)は空白を入れる、という処理である。2エラーチェック未入力データのチェックを行う。この処理は今後も行うで、慣れておくこと。実際のファイルへの入出力が出来るようになる。“a”)」で、ファイルポインタを取得している。最後の「a」は「追加の書き込み」という意味がある。実際に取得できたファイルポインタに書き込みを行なっている。「fwrite(ファイルポインタ、書き込み内容)」というのが図式。...http://www.dt30.net/gachinko/?p=668今回でラストです。(次回はまとめをやる予定ですが。これだけのソースにしては説明が長かったですね。結局はファイル(外部装置)の読み書きと配列への格納、HTMLへの表示ですね。これは超基本ではありますが、プログラマの場合、毎日やりますね。読み込みの場合はfgetsという関数を用いる。fopen(“data.txt”,”r”)「r」は、正規表現では「復帰」という意味。ような単純な文字と特殊文字との組み合わせからなります。最後の例では記憶装置として使われている丸括弧が含まれています。「配列の操作、処理」と「オブジェクト指向」の2つは、プログラミングを行う上での2大テーマだと言える。テキストファイルから文字を取得したら、これを配列に入れる。そのためにはexplodeで「分割」を行う必要がある。explode(“\t”,$res)」という処理は$resという文字列を\t(タブ)で区切り。配列にします、という処理。掲示板の書き込みは1つでなく、通常多数であることが一般的。そのため多次元配列に格納する必要が出てくる。多次元配列とは、配列の中に配列を入れるタイプのやつ。usersPHPの多次元配列と連想配列についてのサンプル。Qiitahttps://qiita.com/mmusasabi/items/4b7d2f27bd4604bfc17fPHPの配列について学んできましたので、自分で噛み砕いて理解するために投稿させていただきます。(1,4,5)こんな感じで、1列1行は1。あのノリ...PHPの配列は、配列の中に配列を格納して入れ子構造(ネスト)にする事が可能。[](角括弧)を[][][]と連ねることで、多次元配列を作成する事が可能となる。様々な操作を行えます。等をしっかり覚えましょう!3HTMLへの表示とforeachPHPで一番出てくる関数はforeachなので、この配列の処理に慣れてない場合は、何度も復習すること。ガチンコPHP塾http://www.dt30.net/gachinko/?p=181こんばんわ。ゴールデンウィークもそろそろおわりですね。今回の講義は繰り返しについて扱います。実務で一番多い繰り返は、配列の処理である。具体的には、以下のように使う。(分かりやすいように空白を入れている)ただ、配列の要素が多いと数えるのが面倒なので、count関数で数えて対応する事が多い。2foreachの書き方foreachを使うのは、forには以下の問題点があるから。→スタート、ゴール、カウントアップを自分で書く必要がある。→配列の要素数を数える処理が必要になる。した点を、foreachはカバーしている。「値」は$valueがそれぞれ使われる事が多い。→「キー」は不要だが、「値」は必ず必要。3多次元配列とforeach実務で使われるのは、多次元配列の中に連想配列が入っているパターン。人間が普段扱うデータは、このケースが圧倒的に多い。コードは、以下のようになる。※参考:日記0827。PHPリファレンスhttp://alphasis.info/2012/06/php-control-endforeach/foreach文は、開き波括弧「{」をコロン「:」、閉じ波括弧「}」を「endforeach;」に変更することができる。閉じカッコ「}」を「endforeach;」に変更する事ができる。変数)://処理文endforeach;値に加え、キーも取得する場合はこちら。例文のコードではよく用いられている気がする。ガチンコPHP塾http://www.dt30.net/gachinko/?p=677さて4回にわけて、掲示板のプログラムを学習してきました。見た目は超シンプルで実際に動かしてみても、「こんな程度のものしか作れないの?」と思う方は多いかもしれません。この基本が一番大事なんです。HTMLでサイトを作る場合、文章や情報はHTMLソースの中に書かれるが、PHPなどで作るWebアプリの場合、ソースの中に情報はないことが一般的。情報を格納しておく外部装置が必要。テキストファイルを使うケースと、データベースを使うケースがある。今回は最初なのでテキストファイルを使っているが、ある程度の規模になるとデータベースを使う。2ファイルポインタポインタとは、外部装置からデータを読み込む時に必要なるもの。ファイルポインタとは、どこからファイルに読み込みや書き込みをするのかの始まりの位置。求めるデータを配列にしっかり格納して、表示できるか。人間がデータを認識するのは、「配列」という形である。配列の処理はとても重要。プログラマーである以上、配列処理のような事は毎日やるようになる。早い段階でこの処理に慣れるのが重要。※参考:日記0827。PHPに限らずプログラムにおいて超重要。配列の操作ができないプログラマーは、かわいくないアイドルや体力のないアスリートのようなもの。jsのオブジェクトとPHPの連想配列は同じただし、jsではキーと値の間に「:」が来るのに対し、PHPではキーと値の間に「=>」が来るので注意。連想配列では、値に「キー」というラベルのようなものを付ける。値」となってるのが基本。キーを付けておけば、後で見返したときに何のデータか分かる。この画像のように、連想配列は縦に書くのが望ましい。データが増えたときに横にずらずらと書くと見にくいから。値の追加や変更も可能。実際に操作をすると難易度が上がるので注意。ガチンコPHP塾http://www.dt30.net/gachinko/?p=103こんばんは松本です。暖かくなってきましたね。暖かいのはいいんですが、オフィスでブログを書いているときに蚊にさされることがありました。今回と次回は配列というものを扱います。これをうまく扱えるようになっておきましょう...多次元配列は、配列の中に配列を入れるもの。「エクセル型配列」と言える。以下のファイルを保存するには...以下のようなコードを用いる。→連想配列を1つの塊として配列の中に入れている、という感じ。最後の列では、カンマ「,」が無いので注意。→また、コロン(.)も間違いがちなので注意。出力に関しては、[]が二重になっている。大きい配列の中に小さい配列を入れる書き方をするのが一般的。ガチンコPHP塾http://www.dt30.net/gachinko/?p=155お疲れ様です。その2(配列)」から若干日が開いてしまいました。今日はその続きで多次元配列を学習します。配列は難しい、難しいといいつつ、前回の内容はそれほど難しくなかったでしょう。今回の多次元配列もそれほど...2掲示板機能へのカスタマイズ1どのような機能を追加するべきか?・項目をさらに追加し、それぞれにエラーチェックを行う・ログインしたらこのページに入るようにする・自分の記事は編集、削除ができるゆおになる・1ページ10記事にして、下に1,2,3とリンクを付ける。ガチンコPHP塾http://www.dt30.net/gachinko/?p=721以前、掲示板を作成するブログ記事を書きました。高速に行う専用のソフトウェア」と定義されている。数万件のデータを入れるとかなり重くなる。もとが表計算ソフトなので、大量のデータを処理するのには向いてない。MySQLはCUIで操作する。GUIを使う方法もあるが、慣れるとCUIの方が早い。MySQLのGUIは使えない場合もある。ガチンコPHP塾http://www.dt30.net/gachinko/?p=728あ、最近はこのブログの画像に凝るようにしています。今後は出来るだけMySQLで管理するように練習する。MySQLには、ユーザー登録しなくても最初から使える「rootユーザー」というものが存在している。rootユーザーは、MySQLの中で一番偉いユーザーである。MySQLでは様々なデータを扱う事になるが、ユーザーによって見ることができる情報の範囲は異なってくる。rootユーザーでログインすると、全てのデータを見れるので危険。見てはいけないデータを見てしまう危険性があるし、もっと怖いのはデータを破壊してしまうこと。ガチンコPHP塾http://www.dt30.net/gachinko/?p=774ちょっと間隔があいてしまいましたが、今回はMySQLの講義です。「データベース」と「テーブル」の概念を理解する必要がある。ここで言うデータベースは、プロジェクトファイルのような感じ。ある1つのプロジェクトの単位で作るデータの集合体を「データベース」という。1データベースの作成MySQLでデータを扱いたい場合は、まずこのデータベースを作成する必要がある。データベースはphpMyAdminで作れる。「テーブルを作成する」の項目から作ってもいいし、SQL文を打ち込んでもいい。→ウェブカツの動画見た方がいいかな?MySQLでデータベースの作業をする時は、rootユーザーではなく特定のデータベースだけを見れるユーザーを作成するのが一般的。3テーブルの作成MySQLで、データを格納するには「テーブル」という表を作る必要がある。「入れるデータのタイプ」を事前に決めておく必要がある。(例:数字を入れるのか、文字を入れるのか、日付を入れるのか...等)この「入れるデータのタイプ」は、一度決めると別の形式のデータは入れる事が出来なくなる。具体的には以下のデータのタイプがある。いった「ある程度長さが決まっている」点があ挙げられる。後者の「長文」はお問い合わせフォームのコメント欄のように、長さの制限がない。次にMySQLで抑えるのが、そのデータを識別するためのid。生徒番号や社員番号など。した番号がないと、それぞれのデータを識別できない。今回の掲示板の場合、以下の3つが必要。・書き込みデータを識別するためのid→数字(int)であり、プライマリーキーの性質を持つ。→自動で「+1」追加される。ガチンコPHP塾http://www.dt30.net/gachinko/?p=877今回はMySQLで掲示板を作ろうの続きです。前回のMySQLの講義が11/18日ですね。deleteの4つはは「CRUD」とも呼ばれる。→insert:Create(生成)→select:Read(読み取り)→update:Update(更新)★そのまま→delete:Delete(削除)★そのままCRUDは、Webアプリケーションで実装する必要のある主な機能を列挙したものだと言える。・作る・検索する・書き換える(更新する)・削除するCRUDは、ほぼ全てのコンピュータソフトウェアが持つ永続性の4つの基本機能のイニシャルを並べた言葉である。した昨日は非常に基本的なので、一纏めで解説されることも多い。selectで検索する場合、whereを付けないと特定のカラムのデータを全部引っ張ってきてくれる。whereは、欲しいデータの条件付けをしている。update文のポイントは、whereを忘れないこと。これを忘れると全部のデータを一気に上書きしてしまう。データベースはExcelと異なり、気軽にCTR+Zで操作を戻す事ができない。ケアレスミスを防ぐために、whereを書いてからupdateを書くのがいい。「削除してみるようにみせる」という方法の2つがある。1データを物理的に削除する(物理削除)データを完全に消すこと。やる場合は、updateの時と同様、where句を忘れないようにする。重要な処理を行う場合はバックアップを必ず取ること。2データを削除しているようにみせる(論理削除)windowsのゴミ箱が好例。削除されたものとみなす(仮削除扱い)といった感じ。データベースでの削除も、この手法を採用してる事が一般的。ガチンコPHP塾http://www.dt30.net/gachinko/?p=936今回はMySQLの第5回目の講義です。・入力されたデータは常に下に表示ポイントとして以下の点が挙げられる。・エラーチェック・SQLをPHPにどう渡すか・SELECT文の受け取り方PDOとmysqliの比較https://qiita.com/mpyw/items/b00b72c5c95aac573b711PDOクラス・オブジェクト指向型のみをサポート★メリット・動作が早い・エラーを例外としてスロー出来る。・「プリペアドステートメント=結果セット」であり、mysqliクラスと比べ初心者にもわかりやすい。→プリペアドステートメント:SQLを使ってDBへ通信に使われる値をサニタイズする仕組み。・プリペアドステートメントで名前付きプレースホルダが使える。→プレースホルダ:値をバインドする(挟み込む:bindValue)仕組み。・他のデータベースへ乗り換える際、書換が簡単。★デメリット・プリペアドステートメントで型を指定しながら複数のバインドが同時にできない。2mysqliクラス・手続き型(関数)とオブジェクト指向型(クラス)の両方をサポート★メリット・動作が非常に早い・(手続き型の場合は)mysql関数からの書き換えが容易。・マルチクエリが使える。1回の関数コールで複数のクエリが実行できる。・エラーを例外としてスロー出来る。★デメリット・多機能なので初心者が混乱しやすい。ガチンコPHP塾http://www.dt30.net/gachinko/?p=973今回はMySQLの第6回目の講義です。今回で終わりですので、ソースの説明と今までの解説の概略を書いておきます。PHPで掲...1PHPとデータベースの接続ウェブカツのPDOとは異なり、最初からDBへ繋いでいる。接続できない場合は、50〜52行目にある「データベースの接続に失敗しました」が表示される。if以下の処理は、$linkにMySQLの接続情報が入っていたら...という意味になる。(falseでない場合)→trueでないので注意2エラーチェック投稿データの有無(未入力がないか)をチェックする。※ウェブカツでは、emailの形式にマッチしてるかや、パスワードとパスワード再入力が一致してるかをチェックしているが、この掲示板は「名前」「コメント」のみなので、こうした機能は必要ない。3SQLをPHPにどう渡すか投稿があった場合、INSERT文を発行する。PHPからMySQLに接続を行う場合は、まずSQLを作り、それからMysql_queryでMySQLにSQL文を渡す、といった手順を踏む事になる。→作成したSQLを「$query」に格納した上で、「musql_query」で実行している。上記の例では、INSERT文を行ごとに分けて書いている。横1行で書いても問題はないが、行ごとに書いた方が構造が分かりやすいし、後で修正があった場合も楽になる。書かれたSQLが実行される。成功不成功によってメッセージの内容を変更する。SQLの投げ方は以下の通りウェブカツ(PDO)のケースウェブカツ(PDO)では、PHPからMySQLに接続を行う過程で、MySQLにSQL文を渡す方法として、「->prepare」や、「->execute」を用いている。作成したSQLを変数に格納して、「=>execute」で実行している。このサイトではINSERTとSELECTが一緒に用いられているが、ウェブカツではユーザー登録にINSERTが、ログインにSELECTが用いられており、分かれている。$pass」といった形式を用いてる。この形式で書くことで、その箇所に値を後から突っ込む事ができる。後から値を挿入して最終的なSQL文を作り上げる仕組みを、プリペアドステートメントという。→後から値を挿入するとは、値をSQLに挟み込む(バインドする)事なので「バインド機構」とも言ったりする。PDOは、PHPからデータベースへ接続するためのオブジェクト。DBへ接続するためのオブジェクトを作っている。PDOを理解するには、クラスと例外処理の基礎知識が必要となる。4SQLインジェクション対策mysqliでは、以下の構文がインジェクション対策になる。書かれたSQLが実行される。5SELECT文の受け取り方SELECT文の基本はINSERTと同じで、mysql_queryでMySQLに問いかける。応用したらいいのかわからない。PHPに限りませんが、プログラミング初心者が入門書を終えた辺りでぶつかる悩みとして「何を作ったらいいのかわからない悩み」というものがありま...以下の3つが実装出来ていれば、掲示板と言えるものが出来る1内容に書き込んだ「文章」と「名前」をセットにして記録する2送信ボタンを押すと1の機能が実行される3記憶されてる内容(文章、名前)を表示欄にすべて表示する「まずは最低限動くものを」という考え方が大切いかに最速で動く段階まで到達できるかを重視する必要な技術に関しては、テキストファイルに全ての情報を記録する形でOKHTMLとPHPが動いて、記録用のテキストファイルを用意できる環境であればローカルでもリモートでも何でもOK(データベースやセキュリティ対策は不要。侍エンジニア塾ブ...https://www.sejuku.net/blog/81862この記事ではHTMLでフォームの外観を作る方法について解説します!フォームそのものはPHPなどを使ってデータを送信する必要がありますが、外見はHTMLでも簡単に作ることができます。-...https://www.sejuku.net/blog/27843フォームから入力したデータなどをサーバに送信するには、POST送信、GET送信の2通りがあります。外部サイト...2PHPのファイルに書き込むやりたいことは、ファイルに掲示板で投稿された名前と内容を記録することfopen関数、fclose関数などを使う。プログラミング入門な...https://web-camp.io/magazine/archives/5652PHPは会員向けサイトのような、動的コンテンツを配信したいWebサイトで使われているプログラミング言語です。有名な「WordPress」もPHPで書かれており、初心者でも比較的簡単に習得できることから人気があります。今回はプログラミング初心者向けに、PHPで動作する...2ch風掲示板の作成について2chのデータは4階層構造になっている1カテゴリー2chの掲示板は、ニュースや食文化、ネット関係といった「カテゴリー」と呼ばれる大きな分野単位で区切られている2板カテゴリーは、さらに「板」という細かいジャンルで区切られている3スレッド1つの板の中に、沢山の掲示板が設けられている2chでは掲示板のことを「スレッド」と呼ぶ4レス2chでは書き込みのことを「レス」と呼んでいるまずはMySQLで、1カテゴリー2板3スレッド4レスを格納するテーブルを用意する。プログラミング探して!http://program.sagasite.info/wiki/index.php?2ch%E9%A2%A8%E6%8E%B2%E7%A4%BA%E6%9D%BF備忘録メモ上は「データベースを含んだ掲示板」と言ってたので、HTMLとPHPのみで掲示板を作ったら、DBも含めたページを作るべし。)この記事へのコメントはありません。この記事へのトラックバックはありません。URL返信をキャンセルする。TOP検索:管理人紹介21世紀、より良い人生を歩むための個人事業主による備忘録メモです。固定観念にとらわれず、日本や世界の深淵に触れ、自由快適な人生を歩んでいく事を大切にしています。peeks-blog。