計算や集計の機能を使おう

データベースは集計や計算といった機能もあります。値を合計するSQLは「SELECT SUM(price) FROM my_items;」です。これで、すべての商品の価格を合計した金額をしることができます。また、例えば、買物情報を記録したテーブルで、その人の買い物の合計金額を知りたいときや売上を記録しているテーブルなどで、1年分の売上の合計などを計算するといた、WHERE句を組み合わせれば、とてもいろいろな計算ができます。さらに、クラスの点数を記録したテーブルから、最高得点のメンバーを算出したり、気温を記録したテーブルから、今年の最低気温を算出するということができます。とても便利な機能なので使いましょ。データベースというのは扱う情報量が増えてくると、ひとつのテーブルでは管理が難しいといえます。そのようなときは、複数のテーブルに情報を分けて管理します。そして必要におじて、組み合わせて使うことで、データのやり取りが扱いやすくなります。複数のテーブルを横断してデータを扱うためのテーブル同士を組み合わせるという方法があります。例えば、「my_items」の各商品の生産者も合わせて管理したいという前提で、そこで、カラムを1つ使いするという作業をします。また、その生産者の住所などを管理したくなったりすることもあるかと思います。そういった場合、カラムをどんどん増やしてしまうと、テーブルがどんどん大きくなってしまいます。そういった場合は、無理に1つのテーブルにしようとせず、テーブルを分けて管理するようにしましょう。phpMyAdominを起動してmydbをクリックしてテーブル作成でmakersと指定しましょう。


サーバーとアップロード

フォルダの属性を設定する場合、XAMPPやMAMPというものではなく、レンタルサーバーなど外部のサーバーを利用しているとしたら、ウェブサーバ上のフォルダというのは、セキュリティ上の理由から基本的には新しくファイルを作ったりできませんし、削除したりすることもできません。こういった場合、これを利用するためにはパーミッション、権限を設定する必要がでてきます。設定にはFTPクライアントソフトには同様の機能が搭載されているので、ソフトのマニュアルを参考にするといいでしょう。XAMPPやMAMPを仕様しているならば、この操作をする必要はありません。まずはウェブサーバーに接続します。そして対象のフォルダを右クリック。「プロパティ」メニューをクリックしたら、ここで権限を設定していきます。本文では、ファイルをアップロードしてフォルダに書き込むまでその他というユーザーに書き込みの権限を与えます。これでokがクリックしたら、権限が変更されるということになります。ファイルアップロードの際に、自動的に保存されるフォルダは「php.ini」というPHPの設定ファイルで設定をすることができます。ただし、特別な理由がなければ変更をしなくてもよいそです。念の為に、どこに保存されるのかを知るには、「」です。このプログラムを、ウェブサーバーにアップロードして実行。そうすると、「/temp/uploads」という文字が画面に表示されます。ここが、一時、ファイルが保存さえる場所となります。アップロードされるファイルが画像である場合は制限を厳しくすることで庵税制を保つことができます。


チェックボタンの値を取得

ラジオボタンとドロップダウンリストの場合は、値を取得する方法はテキストフィールドなっどと同様なものです。ただ、少し癖があります。ラジオボタンやチェックボックス、ドロップダウンリストというような、フォームにあるそれぞれのパーツの扱い方は、テキストフィールドと同様となります。$_GETや$_POSTにフォームパーツのname属性に指定した内容を指定すれば取り出せます。ラジオボタンの場合、男性を選択すると、フォームを送信したあとの画面には、maleで表示されます。フォームに送信されるのは、「value」属性があるからです。チェックボックスのラベルの文字ではありません。テキストフィールドの場合は、画面での見た目とvalue属性は、必ず一致します。そのため、非常に分かりやすいといえます。ラジオボタンの方は、見た目とvalue属性は必ずも一致しないということで、もし、一致させたい場合には、value属性に同じ値を指定する必要があります。チェックボックスやラジオボタンの場合は、ユーザーがvalue属性を編集することができません。htmlspecialcharsファンクションに一見するとみえるため、安全な状態にする必要がないように感じてしまいます。けれど、実際には少しでもインターネットの知識があると、簡単に改変することができてしまうのです。その上、いたずらツールというものも無料で配布されているということで、まったく信用できないといえます。そのため、チェックボックスなどの値だろうと、それが必ずhtmlspecialcharsで安全な状態にする必要があります。注意しなけれなりません。気をつけましょう。


作ったもののチェック

value属性に入力した内容を表示させることができたら、値を再現できます。注意しないといけないのは、「htmlspecialchars」ファンクションにかけてから表示をするということです。これをしないと、入力された文字によっては、画面が壊れたりします。これは決り文句として入れておくとよいでしょう。こういった調子で、すべての項目について同じように処理を入れていきましょう。その後で、画像についても検査をしていきます。このプログラムでは、次のようなルールで検査をしましょう。「アップロードしたファイルを拡張子が『.gif』または『.jpg』であるかを確認します」index.phpのプログラムを作り変えましょう。「member_picture」フォルダをこのアプリケーションのルートフォルダに作成しましょう。レンタルサーバーなどの外部サーバーをもし利用しているのであれば、FTPソフトで権限を「777」に設定しておきましょう。「$_FILES」はファイルアップロードのときに、ファイルが代入される変数ということで、input要素のname属性がキーとなります。この場合は、「$_FILES[‘image’]」としましょう。この配列はさらに連想配列となります。ファイル名や一時的なアップロードされたファイル名などが代入されるということです。「$_FILES{‘image’][‘name’]」でいったん$fileNameという変数に取りだしています。この変数が空でないかを「empty」ファンクションの否定で判断しましょう。画像ファイルは、必須項目ではないということ。そのため指定されない場合もあります。


自分で道を選ぶロボット

マス目で迷路を作って付箋ブロックを使って考えてみましょう。「(ゴールする)まで繰り返し」と「ここまで」という付箋ブロックがあると、シンプルにできるのが分かると思います。繰り返しの付箋を使うと、同じような動作を何度も書く必要がなくなります。そのためとても効率の良いプログラムを書くことができるというわけです。それでも、これだけでは決まった形の迷路にしか対応できなくなります。そこで「もしも」という付箋ブロックを使う必要がでてきます。どんな迷路でもゴールできるというものを作るには、2マス目の動作が重要となります。迷路でスタートからは、まず前に進むという動作になります。なので、「前に進む」付箋を置きます。その次に「もしも(前に進めなかったら)」という付箋ブロックを置きます。「もしも()」の()には、条件を記述します。その条件に合う場所にだけ行くという動作を指定しましょう。「前に進む」「もしも(進めなかったら)」「右に回る」「ここまで」「前に進む」「前に進む」というプログラムなら、前に進めないときにだけ、右に回って前に進むということになります。前に進める場合には、右に回らず、前に進むということになります。これなら、直線でも対応できます。いろんな迷路を作って付箋ブロックで考えてみましょう。まっすぐ進めないなら、右に回るようにするとか、それでも進めないなら、右に二回回って左を向いて進むとか、付箋ブロックを駆使して、どんどん作ってみましょう。ロボットの動きを想像して、思い込みに振り回されないようにするのもプログラムの勉強では大切です。想像力を養って、スッキリとしたプログラムを作っていきましょう。


エラーメッセージ

エラーメッセージは英語で出てきます。Parse error: syntax error, unexpected T_STRING in….というものです。「パース」は、文章を分解するという作業のことを指します。これはここで書かれた文章を理解しようとしたが、理解できなかったというようなエラーだったことを説明しています。Fatal error :は致命的なエラーのことです。動作がまったくできなかったというエラーです。Warning : 危険な書き方です。動作はしますが、書き方が良くないということなど。Notice: これはお知らせ。それほど問題はないが、間違いになりやすい書き方であるということを知らせるときのものです。「syntax」というのは構文という意味です。「syntax error」というのはプログラムの書き方に問題がありそうだという詳細な内容が知らせれます。unexpected T_STRING というのは、エラーの詳細です。unexpectedというのは、予期しないという意味です。T_STRINGは文字の意味です。PHPのエンジンが期待した場所ではないところに、文字が存在しているということです。日本語にすると、プログラムの内容が理解できませんでした。文法のエラーです。思わぬ場所におかしな文字があります。となります。さらに行数やファイル名も知らせてくれます。こういったエラーメッセージをヒントにしてプログラムの内容を見返してみることで、エラーの原因を探ることができます。英語が苦手ならば、エラーメッセージを翻訳サービスにかけましょう。エラーが発生したら、エラーメッセージを理解してその原因を探りましょう。


サーバの役割

Webページを閲覧するためにブラウザからURLやIPアドレスなどでリクエストを行うと、リクエストはそのWebページがあるサーバに到着します。サーバは日本語で給支人という意味があるそうです。いわゆるコンピュータ用語では「処理や通信を行うコンピュータ」のことを指すようです。これは意味の通り、ブラウザから受け取ったリクエストを解消し返答としてレスポンスを返すのがサーバの役割にあたります。

サーバでは様々な処理を行いブラウザがリクエストしたWebページのHTML(Hypertext Markup Language)をレスポンスとして返してくれるのです。さて、ではHTMLとは何でしょうか?HTMLとはWebページを作るうえで骨組みとなる言語のことを指すそうで、インターネット上で見ているWebページはほとんどHTMLでできているのだそうです。HTMLはここからここまでの文章にはこのような意味があるとその部分にタグと呼ばれる記号のようなものを付けて文字列で表現している言語です。そのため、そのまま画面に表示されても記号の文字列が続いてしまい意味が分からないものになってしまいます。そこでクライアントでもあるブラウザはレスポンスとして返ってきたHTMLを解釈し、私たち人間にもわかりやすいレイアウトや色にHTML言語から構成しなおし、必要であれば画像を埋め込みWebページとして表示を行っているのです。


携帯電話振分プログラム

WebサイトやWebプログラムというのに、携帯電話からの利用も多くなっているかと思います。携帯電話向けのWebサイトを作ることが必要となってくるケースも増えたそうです。携帯電話への対応としては、最も一般的なのは「エージェント切り替え」と呼ばれるものだそうです。これはアクセスしてきたWebプラウザの種類に応じて、表示するファイルを変更するという方法だそうです。エージェント切り替えというのは、自分で組み立てることもできるそうです。けれど、種類がとても多いために面倒ということがあるそうです。そのため動作確認なども容易ではないそうです。優れたライブラリを使って作れば手間がかからないということがあるそうです。PEARで携帯電話用ライブラリ「Net_UserAgent_Mobile」というものが公開されているそうです。これを利用してプログラムを作成したらいいそうです。携帯電話でアクセスするには、インターネット上のWebサーバーにファイルをアップロードしてからでないと確認ができないそうです。携帯電話のサイトを確認するには、実際に携帯電話の端末でアクセスするしか方法がないそうです。とはいえ、携帯会社のそれぞれの機種を揃えるのは難しいかと思います。そこでFirefoxに非常に便利な拡張機能があるそうです。これは携帯電話のエージェント情報を利用できるそうです。また表示のシミュレートをしてくれるそうです。また、XAMPP、MAMPを使ったローカルサーバで確認することができるそうです。これは開発中に手軽に確認する場合にとても便利なツールだそうです。PHP開発は土台から柱を立てて壁を作って家を立てるというような作業だそうです。


ライブラリのダウンロード

PHPの拡張やアプリケーションの貯蔵庫には、自分で作ったライブラリも登録したりできるそうです。PEARというサイトにアクセスしてPEAR本体をダウンロードをしておくといいそうです。画面上部に「Packages」というものをクリックして「PEAR」を探してクリックするそうです。「PEAR Base System」という項目をクリックしたら、画面の上部にある「Download」リンクをクリックして、バージョン番号をクリックするそうです。ファイルのバージョンナンバーは時期により異なる可能性があるそうです。こうしてダウンロードができるそうです。「Net_UserAgent_Mobile」というのをダウンロートするといいそうです。これは「Packages」の「Networking」というカテゴリに登録されているそうです。ダウンロードをしたファイルというのは、解凍したディレクトリの中に入っている「PEAR-1」といったディレクトリを公開用のルートディレクトリにアップロードするそうです。この時はフォルダ名を「PEAR」などに名前の変更をしておくといいそうです。「Net_UserAgent_Mobile」の方は、解凍したディレクトリ内のさらに「Net_UserAgent_Mobile-1.0.0」などというディレクトリ内にある「Net」というディレクトリだけを取り出して「PEAR」フォルダにアップロードするそうです。これでPEARのインストールは完了だそうです。ダウンロードしたPEARやNet_UserAgent_Mobileは、tgz形式の圧縮ファイルになっているそうです。ウインドウズ標準の機能では解凍に失敗することもあるそうです。その場合は「Lhacaデラックス版」などを使うそうです。


プログラムのライブラリ化

プログラムというものは、ある程度決まった動作があるそうです。いつも決り文句のように作らなければならない仕組みというものがあるそうです。「ライブラリ化」ということをするとスマートにデータベースに接続できたりするそうです。ライブラリというのは英語の図書館の意味だそうです。それはまるで図書館に行って足りない知識を補うというように、PHPのプログラムで「ちょっと足りない機能を付け足す」ということができるそうです。ライブラリというのは自分で作成することもできるそうです。他の人が作ったライブラリをもらって自分のプログラムに付け足すということも可能だそうです。このようなことをすることで、プログラムを作る場合に「よくあること」をいちいち自分で作らなくてもいいようになるそうです。他の人が作ったプログラムを借りて、簡単に作ることができるということだそうです。ライブラリは、各プログラマが自分のブログなどで配布していたりするそうです。また、そういったようなライブラリをまとめて公開しているサイトもあるそうです。PHPの開発で足りない機能や、困ったことが解決できるというライブラリが登録されているサイトだそうです。電子メールを送付するためのライブラリがあるそうです。それは添付ファイルを送付したり、HTMLメールを送付することができたりと、標準の「mail」ファンクションにはできない便利な機能が搭載されているそうです。この他にもデータベースの操作を、より高度に行うためのライブラリがあったり、XMLの制御を行うためのライブラリ、携帯電話を扱うためのライブラリがあるそうです。探してみるとたいていの機能を補うことができるそうです。