PHP+MySQL入門

挿入画面の制作2

全334コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
挿入画面では、正しく情報が入力されていなかった場合にエラーメッセージを表示すると、親切な画面になります。ここでは、エラーメッセージの表示の方法を紹介しましょう。
講師:
09:20

字幕

ここでは挿入画面の製作の二つ目としまして前のレッスンで作った挿入画面をより作り込んでいきたいと思いますこのレッスンは前のレッスンからの続きとなりますので二つ続けてご覧ください前のレッスンで挿入画面を製作しデータベースにデータを入れられるように作りましたしかし 今この状態では例えばこの「商品名」や「商品名(カナ)」等に商品情報を入れずに登録をすると このように SQL のエラーメッセージというものが表示されてしまいますこれはなぜかと言いますとこちら「genre id」等の必須項目にデータが入らない状態のままSQL を発行しようとしているためにMySQL が登録できないとしてエラーを発行しているためですそしてこの mysql_query は一番最後のところで「or die」として「mysql_error」を表示し 処理を終了するというスクリプトになっているため 画面には何もでなくなってるというわけですこれは処理としては正しいのですけれども使っている側からするとちょっとびっくりしてしまう画面になるためこれを PHP で防ぐようにしましょうではプロジェクトを紹介していきます今回は 一つ前のレッスンで作ったLesson 02-01 というフォルダをそのままコピーし Lesson 02-02というフォルダにしましたもし前のレッスンがきちんと終わっていないという場合にはこちらの素材フォルダの中からこちらのファイルをコピーしてくださいまたデータベースの SQL ファイルもこの中に入っていますのでインポートをしてデータベースを復元してからこのプロジェクトを試してみてくださいでは input.php を改良していきたいと思いますここではなぜまずこの SQL エラーが発生してしまうのかといえば「カテゴリ」のこの「genre_id」を何も選ばずに送信してしまったためにここの SQL が歯抜けの状態になってしまってエラーが発生しているわけですでは genre_id が選ばれなかった場合にこの SQL を発行しないようにし代わりにここにエラーメッセージが表示されるようにしたいと思いますではこちら 七行目のところ「submit」ボタンが押されたという事が確認できた後でその上でこの「カテゴリ」が送信されているのかどうかというのを確認してみたいと思いますここではコメントとして「入力チェック」等と入れif 構文で「$_POST」の「genre_id」がもしも空っぽであったらという条件を加えましたここでは一つ新しい配列を準備しましょう配列を準備する時にはこのように「$error=array」等とし今から配列として使いますという事を宣言するとより安全ですではここで「$error」としここでは「genre_id」とインデックスを付けますそしてここに 例えばこのように「blank」等と記述しましょうこれは何を意味しているかといいますとこの「$ error」の「genre_id」が「=blank」という事で このerror という配列にはエラーが起こった状況というのをちくいち記録していこうと考えていますそして そこにラベルのような形で「genre_id」でエラーが発生しました という事を記録しその時どのようなエラーが発生したのかというのを記録するように作りましたこの作り方というのは必ずしもこうしなければならないというわけではありませんプログラマー次第で自由に記録する事ができるのですがここでは私の考えとしてこういった作りを考案しましたでは 他の項目についても同じようにこのような仕組みを作っていきましょう今度は「$_POST」の「item_name」こちらも必須項目ですそのため空白だった場合は「$error」の「item_name」が「blank」という事で同じようにエラーを発生させますさらに「$_POST」の「item_name_kana」こちらも必須項目ですので空白だった場合には「$error」の「item_name_kana」を「blank」としますさらにはこちら「price」も必須項目ですのでこのように「blank」としますさてもう一つあります実はこの「price」に関しては数字を入れなければいけませんなぜならデータベースのフィールドの型が「int」型になっていますこちら「int」型になっているため例えば この「price」の部分に「あいうえお」等と入れてしまったりもしくわ このような全角で数字を入れてしまったりすると正しく動作しなくなりますそこでここでは「elseif」として「price」が空でなければ次の条件を指定します「price」がここでは「isnumeric」というファンクションを使います「is_numeric」というファンクションを使いますこのファンクションに掛けますと「$_POST」の「price」が数字であるかどうかというのを判定してくれますそして 数字であれば trueつまり条件を満たし数字でなければ false という事で条件を満たさなくなりますそのためここでは数字でなければエラーにしたいという事なのでここに否定の意味の「!」をつけますこれにより「$_POST」の「price」の値が数字でなければという条件を作る事ができるわけですでは こちらで「$error」の「price」をここでは「numeric」として数字ではないというエラーが発生したという事を記録しておきましょうさて これですべてのエラーのチェックが終わりましたでは これらすべてのエラーが一つも起こっていない場合だけこのmysql_query を発行させたいという事になりますのでここでは「if」とし「count」の「$error」としますするとこの「$error」の配列にはエラーが発生すると値がセットされるため 一つもエラーが発生しなかった場合はこのエラーの数は「0」になりますつまり「count」が「== 0」であれば この SQL を発行してもよいという事になるわけですでは こちら確認のメッセージのこちらの「print」もそのまま if の中に入れた状態で if 構文を中に入れていきましょうこれで出来上がりですではこちらで動きを確認していきましょうこちら MAMP が動作している事を確認しこちら「Lesson 02-02」の「input.php」にアクセスをしますそしてここで「登録をする」ボタンをクリックしてみましょうするとこのように何も変化が起こりませんでは「カテゴリ」をきちんと選び「商品名」を入れ「価格」も正しく挿入しますそして「登録する」というボタンをクリックすると このように「商品が登録されました」と出ましてデータベースの方を見ますと このように「バナナ」が「100」円で挿入されていますこうして情報が正しく入っていなければSQL を発行しないという処理を行う事によって安全性を保ち ユーザーにも使いやすい画面を作る事ができるという事になりますまだ 引き続きこの挿入画面は作り込んでいかなければいけませんのでまた次のレッスンで続きをやっていきましょう

PHP+MySQL入門

MySQLというデータベースはPHPと連携させてウェブサイト上で利用することによってよりその威力を発揮します。このコースではPHPとMySQLを組み合わせたWebシステムを構築する手法を紹介します。コースの後半ではページングの処理の仕方などについて学びながら、具体的に挿入画面や編集画面の作成を行っていきます。

3時間08分 (21 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 2,990
発売日:2014年01月20日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。