実践編:PHPプログラムの書き方:PHP4で作るWeb-DBシステム(3)(2/5 ページ)
今回は非常にシンプルなPHPプログラムのサンプルを豊富に掲載した。これにより、HTMLの中に埋め込まれたPHPプログラムがどういうものか、理解できるはずだ。変数、定数、条件分岐、ループなど、PHPプログラムも基本的な構造は普通のプログラム言語と変わりがない。
PHPプログラム開発に必要な知識
PHPでプログラムを開発するうえで必要な知識はどんなものになるのでしょうか。残念ですが、何の知識も必要ない、というわけにはいきません。そこで、具体的なプログラミングの説明に入る前に、PHPでアプリケーションの開発を行うための前提条件をご紹介しておくことにします。
そうはいっても、それらは決して難しいものではなく、Webアプリケーションの開発では必須の知識ばかりです。ここでも簡単な解説を交えていますが、それだけで満足できるものを開発することはできません。より詳細な知識が必要だと感じられたら、@ITをはじめ、インターネット上に有益な情報がたくさんあります。ぜひそちらもご参照ください。
■HTML
ご存じの通りHTMLは、Webページを作成するための言語です。これが書けないと、入力画面(リスト1、画面1)も作れませんし、データを表示する画面(リスト2、画面2)も作れません。したがって、Webアプリケーションを開発する際に、HTMLの知識がないのは致命傷です。
もちろん、プログラマは専門のWebデザイナーではありませんから、複雑なデザインのWebページを作成できなくともかまいません。しかし、ある程度の知識がなくては、たとえ社内向けのシステムであっても作成できないでしょう。また、専門のデザイナーと役割を分担する場合にも、どこをプログラムに置き換えるのか理解できません。
昨今の事情を考えると、HTMLの知識は大前提となっています。数時間もあれば習得できる言語ですから、もしもまだ習得されていないのであれば、今からでも遅くはありません。書店に行けば、入門書も豊富に用意されていますから、それを1冊買って習得してください。
<html> <head> <title>社員情報検索</title> </head> <body> <form method="POST" action="get_emp_info.php"> <table align="center"> <tr> <td align="center" colspan="3"> <h2>社員情報検索画面</h2> </td> </tr><tr> <td align="center" colspan="3"> 検索条件を入力して、検索ボタンを押してください。 </td> </tr><tr></tr> <tr> <td align="center" colspan="3"><hr></td> </tr><tr> <td>社員番号</td> <td><input type="text" name="n_empno" width="7" colspan="2"></td> </tr><tr> <td>氏名</td> <td><input type="text" name="c_ename" width="7"></td> <td>この項目は部分一致検索です</td> </tr><tr> <td>所属部門</td> <td> <select name="n_deptno"> <option selected></option> <option value="10">営業部</option> <option value="10">開発部</option> </select> </td> </tr><tr> <td><input type="submit" value="検索"></td> <td><input type="reset" value="クリア" colspan="2"></td> </tr> </table> </form> </body> </html>
<html> <head> <title>社員情報検索結果</title> </head> <body> <center><h2>社員情報検索結果画面</h2></center> <table align="center" border> <tr> <th>社員番号</th> <th>氏名</th> <th>所属部門</th> </tr><tr> <td>1234</td> <td>一志 達也</td> <td>システム開発部</td> </tr><tr> <td>1368</td> <td>山本 太郎</td> <td>システム開発部</td> </tr><tr> <td>1413</td> <td>鈴木 一郎</td> <td>システム開発部</td> </tr><tr> <td>1594</td> <td>田中 花子</td> <td>システム開発部</td> </tr><tr> <td>1677</td> <td>近藤 勇</td> <td>システム開発部</td> </tr> </table> <center><form action="input_query.html"> <input type="submit" value="検索条件入力に戻る"> </form></center> </body> </html>
■HTMLフォームによる値の受け渡し
複雑なHTMLを知る必要はありませんが、HTMLフォームを使って、Webサーバと値を受け渡しする方法は知っておかねばなりません。今回の本文中でも出てきますが、画面1のような入力画面から、どうやってPHPのプログラムに値を受け取るのか。その仕組みをある程度理解していなければ、入力画面も、その先のプログラムも開発できません。
仕組み自体は決して難しいものではありませんが、目に見えないものだけに、理解することは容易ではないようです。別途コラムとして、基本的な内容について解説を掲載します。この点について理解されていない方は、そちらをご参照ください。
■JavaScript
HTMLの知識が大前提であるのに対し、JavaScriptは「できれば知っていてほしい」といったところですので、絶対条件とはなりません。しかし、HTMLだけでは実現できない入力チェックや、Webページの制御には欠かせない技術です。もし余裕があれば、HTMLと併せて習得しておくと開発するアプリケーションの幅が広がることでしょう。
■SQL
SQLは、データベース処理を行ううえで欠かすことのできない言語です。SQLが書けなければ、データを追加、更新、削除できないのはもちろんのこと、データベースに対する問い合わせさえもできません。Webアプリケーションとデータベースは切っても切れない関係ですから、HTMLと同じく必須の知識となります。
データベースというと難しく考えられがちですが、SQLそのものは決して難しい言語ではありません。リレーショナルデータベースであれば、どんなデータベースでも使われる言語ですので、ぜひとも習得しておきたいものです。
■トラブルシューティングのスキル
トラブルシューティングのスキル、すなわち問題を解決する能力は、PHPでのプログラム開発に限らず求められます。ほかの能力や知識と違って、身につけようと思って身につくものでもありませんが、なくてはならない能力の1つです。かといって、才能が必要というものでもなく、経験によって身につくものだと思います。
まずは、冷静に状況を見極めること、1つ1つ順を追って切り分けていくこと。この2点を心がけて問題に取り組み、経験を少しずつでも積んでいけば、問題解決能力は自然と身につきます。今はまだ、問題解決が苦手という方も、焦らずに取り組んでいってほしいものです。
■情報収集のスキル
必須ではないものの、欠かせない能力を1つ挙げておきます。意外に軽視されがちですが、情報を収集できるかどうかは、技術者にとっては立派な能力の1つです。@ITのような有益なWebサイトを知っていることも、この能力の1つでしょう。
何かの問題や課題が発生したときに、自分の知識で解決できなければ、外部の情報に頼るしかありません。そこで有益な情報源をいくつ知っているか、またはそれを探し出すことができるか、それ次第で解決までの時間は大きく違ってきます。そしてまた、よりよい答えを導き出せるかどうかさえも、大きく違ってきてしまうのです。
自分の技量も振りかえらずに、エラそうなことを述べてしまいましたが、これは筆者自身への戒めでもあります。もちろん、これらのすべてを完璧に身につけなくては開発に取り組めない、というものではありませんが、現在のシステム開発において欠かせないものばかりです。これらに限らずアンテナを広げて、多くの知識を常に取り入れていたいものです。
コラム CGIによる値の受け渡し
HTMLフォームを使って入力された値を、Webサーバー側で受け取る仕組みとしては、CGIが最も一般的です。PHPはCGIプログラムではなく、Apacheのモジュールとして動作しますが、基本的な仕組みは同じととらえられます。PHP以外の開発手法であっても、この原理を理解しておくことは、きっと役立つはずです。
CGIは、「Common Gateway Interface」の頭文字を取って、そう呼ばれています。Interfaceというところから分かる通り、Webブラウザと、CGIプログラムの仲立ちをするために使われます。ちなみに、CGIプログラムとは、CGIを使ったプログラムを指します。
Copyright © ITmedia, Inc. All Rights Reserved.