【第10話】作って学ぶPHP!初心者による実践録!~追加画面②~

これからPHPの勉強を始める方に向けて!

PHP初心者の私が、実際に簡単なWebサイトを作成しながら学んでいく実践録です!!

この記事の目標は、同じく初心者の方が、実際に「作って学ぶ」を実践出来る内容を提示することです。

私自身は、他言語(C#、Javascriptなど)でのプログラミング経験がありますが、プログラミングを始めて勉強する方でも理解出来るように心がけて書いていきます。

ただし、HTML・CSSに関しては説明を省きます。ご了承ください。

また、分かりにくい所等あればコメント等頂けたら凄く喜びます。

こちらの記事は、「第10話」となっておりますので、第1話から読むことをオススメします!

のらくら

第9話を投稿してから第10話を投稿するまで、非常に長い間が空いてしまいました。
申し訳ありませんでした。
このシリーズは今回を含め残り、3話か4話となります。
なるべく連続して投稿出来るよう精進致します。

 

 

前回まで

第9話では、入力された値をサーバー側で受け取る所までを実装していました。

今回は受け取った値を使って、
・入力されているかどうかのチェックをする
・データベースに値を登録する
をやっていこうと思います!

 

現状を見ておきましょう

とりあえず現状がどうなっていたかを確認しておきます!

現状のソースはこんな感じになっていたと思います。

まとめ

まとめ

ここに新しくロジックを追加していきます!

追加画面の作成(続き)

それでは、さっそく作成をしていきます!

値が入力されているかどうかをチェック

もう覚えてない!って人もいるかと思うので、データベース内に作ったテーブルを思い出してください。

「memo」列は、NULL許可にしていて、その他の列は、NULLを禁止しています。

参考:【第3話】作って学ぶPHP!初心者による実践録!~DB編~

これがどういうことかと言うと、

「memo」以外の情報は、必ず入力されている必要があるということです。

なので、値が入力されているかのチェックをしてあげる必要があります。チェックをかけていない場合、データベースに保存する際にエラーとなってしまうので、注意してください。

ということで、チェックをかけていくわけですが、実装は簡単です!

「empty」という関数を使ってあげます。

この関数は、「引数に値が入っているかどうか」をチェックしてくれます。
引数に値が入っていたら「false」を、入っていなければ「true」となります。
なので、

empty

empty

このように書いてあげると、値が入力されたかどうかのチェックをすることが出来ますね!

ということで、「title」と「URL」に対してチェックをかけてあげましょう!

入力チェック

入力チェック





エラーが発生した場合に画面に表示させる

これで、入力されていたかどうかのチェックをかけることが出来ました。

さらに考えないといけないのが、エラーが出た場合にはそれ以降の処理を行わないこと。

そして、画面側にエラーがあることを表示してあげることですね。

1つ目の、エラーが出た場合に処理を行わないに関しては、非常に簡単!

まず、エラーが出た場合に「$err = true」としましたが
チェックをかける前に、「false」をセットしておきます。

そして、入力チェックを行った後に、「$err」がtrueになっていなければ処理を行うようにロジックを書いてあげればオッケーです!

エラーがなければ処理をする

エラーがなければ処理をする

こんな感じですね!

次のエラーを画面側に表示する方も、同じような考え方で出来ちゃいます!

エラーを表示

エラーを表示

エラーが「true」になっていれば、エラーを表示するHTMLを出力するだけですね!

 

データベースに値を登録する

さて、これでやっとデータベースに値を登録する所に入れます!
データベースへの接続に関しては、一覧画面作成の時にやりましたね!

ということで、同じようにDBへの接続ロジックを書いてみます。

書いていく場所は、先ほどエラーがなかったら処理を行うように記述したif分の中ですね!

DB接続

DB接続

ここまでは、一覧画面と同じです。

ここから、一覧画面の場合には「SELECT」を実行してあげてました。

今回は、データの登録なので「INSERT」を書いていきます!

INSERTの書き方はこんな感じ。

INSERT INTO テーブル名(値を入れる列1, 値を入れる列2, ・・・) VALUES(値1, 値2, ・・・)

今回は「bookmark」というテーブルの「title」「url」「memo」という列に値を入れるので

INSERT INTO bookmark (title, url, memo) VALUES(値1, 値2, 値3)

となりますね!

しかし!!

INSERTをする際には、単純に値を入れてしまってはいけません!!!!!

 

SQLインジェクションの対策をする

ユーザーが入力した値を、そのままデータベースに登録しようとするとある問題が発生します!

もし
入力された値が「データベースに対する命令文」を書かれてしまっていたら・・・

予期していない動作をしてしまうことになりますし、勝手に色んなデータを書き換えられたり、消されてしまったりする可能性が出てきます。

これが、「SQLインジェクション」と呼ばれるもの。(ざっくりですが。)

前回の第9話で、HTMLで意味がある文字列に対して対策をしたのと同じようにデータベースに対して値を入れたり書き換えたりするときにも同じように対策が必要というわけです。

ということで、その対策を含めて実際に記述するロジックがこちら。

INSERT

INSERT

INSERT分の中に「?」で書かれている所がありますね!

その「?」に対して、実際の値をセットしているのが「execute」と書かれている所になります。

その1つ前に、「prepare」と書かれているのが、SQLインジェクション対策になります!

最後の「lastInsertId」は、登録した時に出来た列のIDを自動で取得してくれるものです。これは後で使うので取得しておきます。





今回はここまで!

今回はここまで!次回が追加画面の最後になります!

データベースに登録した後の処理を実装していきます!

質問・指摘はこちらから

プログラミング初心者の方は、本当にわからないことだらけだと思います。
そんな方へ、少しでも役立つことが出来れば嬉しいです。

分からない所があれば、こちらの記事にコメントを入れてください。
出来る限り回答していきます!
Twitterからの質問でもかまいません。

また、間違い等あればご指摘頂けると幸いです。
PHPに関しては、私自身キャッチアップ中のため至らない点もあるかと思います。
ご指摘頂いた内容は、随時修正していきます!

 

こちらの題材としている「ブックマーク管理サイト」をリリースしました!
使い方をこちらの記事で紹介していますので、使って頂けると嬉しいです!!

【リリース】超シンプル!!ブックマークを管理するだけのサイト!

 

それでは、
のらくら でした!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です