カラムは絶対情報で作ろう

ショッピングでよくある、売上ランキングというものですが、rankというINT型のカラムを作成してデータを作ったとしたものをランキング順に取り出すとしたら「SELECT*FROM my_items ORDER BY rank ASC;」これでうまく機能するようになるのですが、うまくいかないのが困ったところ。ランキングという概念ではなく、例えば売上順なのであれば、売上数を評価順なのであれば点数を記録するということです。順位というのは、その他の情報に比べた位置を示すもので、相対情報となります。相対情報というのは、他の情報変化に応じて変わってしまうということで、データベールのカラムとして考えると、あまり好ましい情報ではありません。この絶対情報を記録して、その並び替えなどを行うことで、相対的なランキングなどの情報を作り出せるようにカラムを作りましょう。カラムを作るときは、頭に入れておいたらよいそうです。データによっては、社員番号やISBNといったもののように、必ずしも新しさとは一致しないケースもでてきます。新着順や古い順というような並び替えでは対応できないものです。データをぬ入力した日を記録するようにしましょう。phpMyAdminでmy_itemsテーブルを表示して、1つのカラムを最後に追加します。createdカラムをDATETIME型で作成しましょう。日付というのは、決まった書式で挿入しないといけません。もし、実際にデータを挿入した日を挿入したい場合は、「NOW()」という特別な記述を使うようにすると便利です。さらにデータを変更した日を基準にしたい場合もあります。また更新日というのも便利にできる型があります。

ファイルのアップロード

ファイルアップロードは、フォームの中でも、難易度が最も高いものです。写真などのアップロードや書類の受け渡しなど、使いみちの広いコントロールです。このプログラムはぜひマスターしましょう。ファイルのアップロードの仕組みを作るのは、フォームの作り方を工夫しなければなりません。「encode type」の略称でエンコードと呼ばれる作業をします。これはフォームを送信するときに、そのままの形では送信できないからです。「multipart/form-date」という種類は、文字情報のみのフォームにプラスして、ファイルをそのまま送信することができる方式です。ファイルをアップロードするなら、必ず、この属性が必要とないます。それから、ファイルアップロードでは、form要素のmethod属性で必ずpostを選ばなければなりません。getではファイルが送信されないので注意が必要です。プログラムの内容ですが、フォームの内容は、$_GETまたは$_POST,requestで取得できます。アップロードされたファイルは特別な変数「$_FILES」で渡されます。連想配列として格納されているので、例えば「$_FILES」などとキーを指定して取り出します。インデックスにはinput要素の「name」属性に指定した値を指定します。$_FILESで受信した内容は、さらに連想配列になっています。ファイルアップロードは、フォームが送信すると一時的にそのファイルを保存します。このファイルをプログラムの指示に下gっt、適切な場所に移動するということです。この一時的に保存されたファイルを移動するファンクションが「move_uploaded_file」です。

いたずらから守るためには

シングルクオーテーションの前に「\」記号、または¥マークが表示されるプログラムがあります。こういった場合はPHPの設定で、「magic_quotes_gpc」という項目が有効になっているためです。これはクオーテーション記号を自動的に無害化するという機能です。PHPの安全性を高めるためのものでもあります。ウェブサーバーやレンタルサーバーによって設定は異なります。自分で設定を変えることもできます。MAMPやXAMPPのバージョンによっては、何も名前を入力せずに送信したら、「Notice;」から始まるエラーメッセージが表示されたりします。もちろん実際にプログラムを作るときに、この警告が表示されないように作った方が良いです。でも、それではプログラムが非常に複雑になってしまいます。勉強している初心者の場合は、一時的に非表示にしてしまっておきましょう。XAMPPの場合は、XAMPP Control Panelを開きます。Apacheの「Config」のボタンをクリックして、「PHP」を選びます。MAMPの場合は、アプリケーション→MAMP→conf→PHP7.x.x→php.iniをエディタで開きます。「PHP7.x.x」は、最も番号が大きいフォルダを開きます。MAMP、XAMPP共通なのは、error_reporting=…をerror_reporting=E_ALL & ~E_NOTICEに書き換えます。これをして、XAMPPやMAMPを再起動したら、警告は表示されなくなるそうです。いろいろと理解できないことも多くても、この時点では問題ありません。ひとまずやってみて、不思議に思わなくていいようです。

フォームの動作確認

「!empty($_POST)」の戻り値がtrueである場合、フォームが送信されていた場合、内容をチェックしていきます。名前、メールアドレス、パスワードのそれぞれが空であるかを確認して「$error」という配列を作成します。そこに「blank」と入れておきましょう。これはあとでエラーメッセージを出力するために使用することになります。「blank」という値自体には意味はありません。「空」でも「1」でも見分けさえつけば何でも構いません。また、パスワードの文字数も「strlen」ファンクションで確認します。4文字以下の場合は、「length」というエラーとして記録しています。このように、すべての確認が終わったら「$error」配列が空であるかを判断しましょう。もし空の場合には、すべての項目の代入が正常ということがわかります。セッションに値を保存します。そして「header」ファンクションで次の画面に移動しましょう。今作った「$error」配列を使うことでユーザーに異常箇所を知らせることができます。ニックネームのHTMLを変更してください。そのとき、「$error]配列のキーが「name」の内容を見るように記入します。ニックネームが空だった場合には、エラーメッセージを表示するというものに変更します。今度はニックネーム欄に適当な名前を記入してください。それを送信しましょう。メールアドレスなどが正常に入力されていないので、再び入力画面に戻ってしまうと思います。この時、入力した名前は消えてしまいます。消えるたびに入力するということでは、とても不便なので入力した内容は常に再現されるようにしておきましょう。

強力なロボットを作ろう

ここでいうロボットというのは、プログラムの通りに動くコマのクリップのことです。クリップでも消しゴムでもいいので、用意しましょう。プログラムというのはロボット自身に判断させることができるというのが醍醐味でもあります。プログラムで決められた動作をするだけでなく、ロボット自身が判断してどんな迷路も進むことができるようなロボットを作ることも可能となります。ただ、付箋ブロックの「前に進む」「右に回る」といった命令だけしていたのでは、ロボットとしては物足りないものとなります。もっと発展的なロボットを作るために、付箋ブロックに「もし()なら」と書いたものと、「()まで繰り返し」、「ここまで」を加えます。これでとても賢いロボットを作ることができます。たとえばマス目をつなげて迷路を作らず、直線を進むだけになるように、マス目を5つ直線につなげたものを作ってみましょう。前にす進むだけですから、付箋ブロックは「前に進む」「前に進む」「前に進む」「前に進む」です。5つだから4枚でいいですが、100マスの迷路だったら、付箋ブロックは100枚必要になってきます。こういったときに「繰り返し」付箋ブロックを使います。繰り返し付箋ブロック「(4回)まで繰り返し」「前に進む」「ここまで」を貼ります。こうすることで、4回「前に進む」を繰り返すことになります。この「()繰り返す」付箋ブロックの()には回数以外にも書くことができます。「(ゴールする)まで繰り返し」と書けば4回といちいち数字を書く必要もなく、ゴールするまで前に進んでくれるわけです。これなら3マスだろうが1000マスだろうが、対応することができます。

PHPの制御

クオーテーションの使い方には注意が必要です。例えば、「I’m studying.」というような文章には「’」がありますが、プログラムで「Print(’I’m studying’)とするとエラーがでます。シングルオーテーションが文章の一部なのか、PHPの記号なのかを判断できないからです。どこでパラメーターが終わっているかわからないということです。そういった場合はダブルクオテーションを使います。Print(“i’m studying”):とすればいいのです。両方の記号が混ざっている場合には、\または¥マークを補うことで使うことができます。もし、エラーメッセージが表示されないという場合もあります。エラーが発生するプログラムを試しても、画面が真っ白になるようでしたら、PHPの設定がおかしな場合かもしれません。そういうときは修正が必要です。「php.ini」というファイルを探します。XAMPPでは「C:¥xampp¥php¥php.ini」です。MAMPはアプリケーションフォルダ内の「MAMP/conf/php7.x.x/php.ini」などとなります。「php7.x.x」では最も大きな番号のファイルを開きます。エディタで開いて「display_errors=off」を探して、「display_errors=On」に変更します。そうしてXAMPPまたはMAMPのウエブサーバを再起動します。これで表示されます。また、その他のエスケープシーケンスとして次のようなものがあります。\nは改行、\rがキャリッジリターン、\tタブ、\が\、\$が$ 、\”が” \’が’ です。エスケープシーケンスを使う場合は、その両端は「”」で囲む必要があります。

PHPに必要なソフトウェア

プログラミングをPHPで行う時にどのようなソフトウェアが必要になるのでしょうか?確認していきましょう。まずプログラムを作る環境(開発環境とも呼びます。)でPHPのプログラムをエディタに書き込みます。サーバ上に書き込んだプログラムを配置し、プログラムを動かす環境(実行環境とも呼びます。)のサーバで実行するようです。このサーバにはデータベースやPHP・Webサーバが入っているようです。大まかな流れが分かったところで次は1つずつ細かく確認していきましょう。・PHP実行エンジン(PHP):これはPHPを実行する際に必要になる1番重要な部分になります。これはWindowsをはじめとした様々なOS上で動かすことが出来るようです。・Webサーバ:こちらはWebページを見られるようにしたり、PHPを動かしたりするのに必要なソフトウェアになるようです。Apache HTTP Serverという代表的なWebサーバがあり、このソフトウェアは無料で使えるようです。・データベース:データベースとはWebアプリケーションによりデータを保存する際に使う場合があるのだそうです。MySQLと呼ばれるものが代表的なデータベースの1つだそうです。このソフトウェアは無料で使う事が出来ます。・テキストエディタ(エディタ):テキストファイルを編集したり作成したりするソフトウェアです。エディタを使いPHPプログラムを記入した時、「.php」という拡張子でテキストファイルとして保存を行います。Windowsの標準のメモ帳でもこのプログラム自体を記入することは可能ですが、高機能なエディタを利用すると・桁番号が表示される・言語のキーワードが色分けされるなど便利な部分があります。ソフトウェアも様々です。有料か無料かなどもありますので、使う場合は自分の好みに合うものにすると良いかもしれません。実際はVimというエディタが開発現場では良く使用されているようです。またエディタの機能だけではなく、プログラムをプロジェクト事に管理する機能やエラーを取り除く作業(デバック作業とも呼ぶ)を行うための環境など開発に広く役立つ機能をもっている統合開発環境(IED)を利用する場合もあります。

SQLの応用で自由自在に作ろう

テーブルというのは、フィールドを自由に追加したり、削除したりすることができるそうです。フィールドに「keyword」と記入して商品のキーワードを管理することができるそうです。検索、変更、削除というのでは、SQLの最後に「WHERE」に続けて条件文を記述するのだそうです。この条件文というのは、とても複雑な条件を指定することができるそうです。これをするとデータベースは、自由自在な検索を行うことができるのだそうです。SQLで検索をしたら、データを取り出せることを「ヒットする」というそうです。SQL内では「INT」型に指定したフィールドに、等号や不等号を用いることができるそうです。また等号だけは「VARCHAR」や「TEXT」型のフィールドにも利用できるそうです。PHPでの不等号と似ているそうですが、等号が「=」一つということと、「等しくない」を意味する記号が「<>」なのだそうです。Webサイトでは入力したキーワードを含んだ文章を検索することができると思います。このような機能を手作りしていたらとても大変だそうです。データベースというのは、あらかじめこのような「部分検索」の機能が搭載されているそうです。「AND」で複数の条件をつなぐと「かつ」「さらに」といった条件をくわえることができるそうです。「OR」は「または」という条件をくわえることができるそうです。これら「論理演算」というもので、これらの記号を合わせることで複雑条件をどんどん作ることができるそうです。ORとANDを組み合わせたSQLを使ったりする時は、「()」で条件を囲わないといけないそうです。カッコで囲んで正しく条件を組み立てることが大切だそうです。しっかりと確認してほしいそうです。

PHPの設定

PHPの設定を行うにはいくつか方法がありますが、その一つに設定用ファイルを編集する方法があります。
Apacheの設定を行うには、「httpd .conf」という設定用ファイルを編集しますが、PHPの設定を行うには、「php.ini」という設定用のファイルを編集します。

PHPのインストールを完了した場合、その状態ではphp.iniファ イルは存在していません。
php.iniの元になるファイルはありますので、それをコピーして、php.iniを作成します。

それでは、以降の手順に従ってphp.iniファイルを作成してください。

①エクスプローラを開いて、フォルダ「C:\php5」を開く。
②フォルダにあるphp.ini-productionというファイルをコピーして、ファイル名をphp.iniにする。
③その際に拡張子変更の確認画面が表示された場合は「はい」をクリック。

これでphp.iniファイルができました。
php.iniファイルを編集すると、PHPに関するさまざまな設定を行うことができます。
ただし、本書ではデフォルトの設定(規定の設定)を使うことにしますので、php.iniファイルの編集は行いません。

ソフトウェアを用意する

PHPでプログラムを作って動かすためには、用意しなければならないソフトウェアがいくつかあります。
図では、プログラムの作成作業を行うコンピュータ(開発用コンピュータ)とWebサーバ(実行用コンピュータ)が
別々のコンピュータ構成になっていますが、同ーのコンピュータでも動作可能です。

開発用コンピュータで用意するソフトウェアは、主に
①テキストエディタ、②FTPクライアント、③Webブラウザの3つです。

一方、Webサーバ(実行用コンピュータ)で用意するのは、
①PHP、②FTPサーバ、③Webサーバです。