phpとMySQLの連携ってすごい!
こんにちは。しゅーのーです。
参考書は下記。
埋め込んだ中に埋め込む感じ
phpはHTMLの中に埋め込んで、ホームページを動的にしてくれるプログラミング言語でした。
今日学んだMySQLはphpの中に埋め込んで、データベースの中にある情報にアクセスできます。
ややこしいですが、HTML→php→MySQLみたいになっているんですね。
今日の内容
今日はHTML上でMySQLのデータを色々といじれるように、phpのコードを書いていました。
具体的には
- データの一覧表示
- 一覧表示のページング
- データの追加
- データの編集
- データの削除
これらをブラウザ上でできるようにしたわけですね。
一覧表示のページングの部分は、ちょっとうまくいっていない部分もありますが、動いてはいるので、とりあえずは先に進めることにしました。
データベースを扱うだけなら、ぼくがSQLのコードを打っていればいいわけですが、Webアプリではユーザーにデータを入れてもらう必要があるので、今回はかなり勉強になりました。
これがスイスイできるようになれば、自分の想定していたアプリが作れそうです。
次回は
「twitter風の掲示板を作る」という内容になるようです。
中身としては今回の応用になると思います。
これができれば、Webアプリに組み込んでいってもいいかもしれませんね。
それから、今回の最後の方で、JavaScriptについて少し言及されていました。
phpの勉強が終わったら、Webアプリについて構想していく段階かな、と思っていましたが、JavaScriptも少し触れていこうかなと思いました。
今日はここまで。ではー。
SQLはほぼ英語だった!
こんにちは。しゅーのーです。
今日から3連休ということで、以前から進めていた日曜大工をしながらプログラミングの勉強をしていました。
今日はデータベース、「SQL」についてです。
参考書はこちら。
データベースと表
参考書は一度ざっと読んであるので、今日は実際にSQLを動かしてみることにしました。
「データベースと表って何が違うんだ?」というところからスタートしたんですが、データベースの方が処理が高速だったり、データの検索や集計が簡単にできたりするそうです。
住み分けとしては、小規模なものであれば表、大規模なものを扱うのであればデータベースを使うという感じで間違いないんじゃないでしょうか。
ほとんど英語
データベースはSQLというプログラミング言語で操作していきます。
他のプログラミング言語は、変数だとかオブジェクト指向だとか、複雑な印象がありますが、SQLは結構簡単なものだったなと思います。
そのほとんどが英語を書いているような感じで、直感的にが書いてあるのかがすぐに分かるようになっているからでしょうか。
「SELECT」、「FROM」、「WHERE」の後にいろいろなことが書いてあるので、読むのはそれなりに簡単なんじゃないかと思います。多分。
とは言え、参考書には「データベースは奥が深い」ということが書いてあるので、ぼくが触れたのは本当にごく一部だけで、もっともっと複雑な何かが眠っているのかもしれません。
でも特に心配はしていません。
SQLはみんなが使っているので検索ですぐに解決できたりしちゃいます。
SQLのリレーションで1回つっかえたけど、検索したら解決!やっぱり先人の知恵は偉大ですね。 #SQL
— 30歳からWebエンジニア転職を目指す (@jobchangeit1) 2018年11月23日
今回もエラーが出てんですが、ちょっと調べたら解決しました(バージョン違いによるエラーみたいでした)。
難しいのは設計
データベースで難しいと思われるのは、恐らくその設計なんだと思います。
データベース上には、テーブルという表みたいなものを準備するんですが、1個で済まそうとするとかなり大変なことになりそうです。
なので、テーブルひとつひとつに役割を持たせて、テーブルAはこの情報、テーブルBはあの情報、みたいにして、後からくっつけて利用していく方が便利です。
後からくっつける、というのをリレーションというみたいです。
英語で言うと「関係」という意味ですね。
あっちとこっちは関係あるよーっていうことを明らかにする必要があるみたいです。
明日からは
参考書にしたがって、phpとSQLを連携させてアプリケーションを作成していきます。
今回の参考書はフレームワークを使わずに、力技でまずは1つのアプリケーションを作っていくようなので、基礎固めにはちょうどいい、はずです。
今日はここまで。ではー。
SQLについて通して読んでみました
こんにちは。しゅーのーです。
近頃はカルロス・ゴーン氏に不正発覚とかで、目玉が飛び出そうな額の話題がテレビやネットで見受けられます。
稼いでもいいけど、不正はあかんよね。
というわけで、今日もプログラミングのお勉強。
今日はデータベースついてでした。参考書はこちら。
今日の収穫
今日はコードを書くというよりは、とりあえず参考書を通読することになりました。
この参考書は
1時間くらいでサーっと読んでみましたが、結構おもしろく読めました。
全体的にポップな感じになっていますが、基本的なことは充分できそうです。
ぼくが作ろうとしているWebアプリでも、この参考書はかなり役に立ちそうです。
いつの間にか使っていたデータベース
データベースってなんだか難しそうな感じがしましたが、仕事でちょっとだけ触れていたことに気がつきました。
使っていたのは「Microsoft Access」です。会社支給のパソコンにプリインストールされていました。
社内システムでデータを取り出して作業をすることが多いときがあったのですが、データが複数のExcelファイルになっていたりしたので困っていました。
「あっちの表にあるのと、こっちの表にあるのをくっつけられたらいいのに」
そんな悩みを解決してくれるのがAccessでした。
具体的にはExcelファイルをAccessで取り込んで、クエリでくっつけて新しい表を作ったりしていました。
AccessはSQLを「視覚的」に分かりやすくしたものです。
SQLの言語を知らないぼくでも、マウスとキーボードがあれば操作ができました。
SQL自体はほぼ英語
SQLも一応は「プログラミング言語」の位置付けであると参考書に書いてあります。
ただ、言語自体は普通の英語だったりするので、使うのは簡単な気がしました。
難しいのは、「データベースをどう設計するか」というところだと思います。
データベース内にはテーブルという表みたいなものがありますが、それが何個必要なのか。
テーブル内の要素はどういったものにしていくのか。
このあたりをアプリケーション作成前に詰めていかないといけません。
行き当たりばったりではダメそうです。
明日からはSQLの勉強をしながら、参考書の練習問題をしていこうと思います。
今日はここまで。ではー。
ログインフォーム(練習問題)ができました!
こんにちは。しゅーのーです。
今日も参考書『PHP入門講座』を使ってphpでのプログラミングの勉強をしていました。
ログインフォームができた!
今日はコンタクトフォームを応用した「ログインフォーム」を作るという練習問題にチャレンジしていました。
ページの移動はせずに、ユーザー名、パスワードを入力したときにメッセージを返すことになります。
まずは体裁を整える
phpでのプログラミングの前に、ユーザーに入力してもらう部分を作る必要があります。
これはHTMLでの記述になります。
まだHTMLも完全に理解しているわけではないのですが、<form>タグで囲った中で<input>のtypeをいじってテキストボックスにしたり、methodをpostにしたりして準備をします。
この辺はコンタクトフォームのものを流用して作ってしまいました。
ユーザー名、パスワードを変数で設定
この部分からphpでのプログラミングに入ります。
課題としては「$_SESSION['login']をTRUEにせよ」というものでした。
最初は「何言ってんだおめぇ」って感じで見てたんですが、考えてるうちに色々だんだん分かってきました。
とりあえず$userと$passwordという変数に何かしら入れておいて、ユーザーがpostしてきたものが一致したら「$_SESSION['login'] = TRUE」っていうことを書いてあげればいいわけです。
入力チェックも忘れずに
今回もこれまでの基礎学習と同様に、入力のチェックをしていきます。
テキストボックスに割り振ったname属性がpostされるので、$_POST変数をisset()関数で使ってチェックします。
入力されていれば、あとはif構文を使って$_POST変数とあらかじめ設定したユーザーとパスワードが一致しているかを調べて、一致していれば$_SESSION['login']をTRUEにします。
模範解答はかなりすっきり
こんな感じでウンウン考えながら、なんとか動作するプログラムが書けました。
その後に模範解答を見たら、すごくすっきりしたコードで書かれていたので驚きました。
自分で書いたコードでも動作しますが、当然のごとく模範解答のほうがいいコードだったので、自分で書いたものを少し改良してみたりして、理解を深めました。
「確かにこうしたほうがいいな」と思う部分もあったりしたので、それも盛り込みながらのコーディングになりました。
達成感
今回の練習問題は、解けたということもあってか、とてもすっきりした達成感がありました。
今使っている参考書は、ひとまずこれで終わりにします。
次は下のものを使ってphpとSQLの連携を勉強をしていこうと思います。
SQLだけやっているとphpを忘れそうなので、phpにも少し時間を割きながらSQLメインで勉強していきます。
明日は通読するだけになりそうな気もします。
今日はここまで。ではー。
練習問題が出来そう、でも出来ない
こんにちは。しゅーのーです。
今日もこちらの参考書でphpの勉強を進めました。
ドキュメントがやや読めるように
最近は仕事のお昼の休憩時間中にもphpに触れるようにしています。
この間まではCodeIgniterのチュートリアルだったわけですが、一旦断念したので、php.net、つまりphpの大元の方のドキュメントを読むことにしました。
このとき、自分の中でハッとしたことがあったのでtwitterに投稿しました。
https://t.co/6ZBxZW4p2bのドキュメント、最初は意味不明だったけど、少しずつ読めるようになってきた感じあるある。#php #プログラミング
— 30歳からWebエンジニア転職を目指す (@jobchangeit1) 2018年11月20日
そう、最初はドキュメントの内容はさーっぱり頭に入って来なかったのですが、結構読めるようになってきました。
これも勉強の成果かもしれません。まだわからない部分もあったりはしますが。
このことで少し自分の中で自信がついたりしてました。
コンタクトフォームは問題なく作成完了
前回はコンタクトフォームを作るために、とても時間がかかりました。
しかも内容のチェックのために書いてあるコードの意味も、あまり理解できていませんでした。
今回はかなりスムーズに完成まで持っていくことができました。
さらにセッションやクッキー、トークンというものの使い方もより深く理解できたように思います。
この辺りはセキュリティで重要になってくると思うので、しっかり押さえておこうと思います。
練習問題で苦戦
例によって、コンタクトフォームを作る章でも、最後に練習問題がついています。
これがなかなか難しいような気がします。
具体的には「ログインフォーム」を作ることになるんですね。
コンタクトフォームと大体の原理は一緒なはずです。
ユーザーが入力した内容と、phpで発行したID、パスワードが一致しているかを確認する。
これだけのはずなんですが、どこから手をつけたものやら。
考える時間も必要かなと思いますので、また明日チャレンジしたいと思います。
データベースの学習も必要?
Webアプリを作る上で、やっぱりデータベースを作る必要があるな、と感じました。
というわけで、以下の参考書を買いました。
多分、今やっていることと重複している部分もあると思うので、練習問題が終わったら、データベース部分に着手していきます。
データベースは仕事でMicrosoft Accessを使う機会があるので、何となく分かるような気もします。
ただ、Accessはかなり視覚的に分かりやすくなっているので、ちょっと勝手が違うような。
とりあえずやってみようと思います。
今日はここまで。ではー。
2回目のコンタクトフォーム作り
こんにちは。しゅーのーです。
今日は朝に寝坊する事件がありましたが元気です。
夕方〜夜はphpのお勉強。参考書は例によって下のもの。
コンタクトフォーム(2回目)
参考書の復習ということで、前回は相当苦戦したコンタクトフォーム作りをしています。
今回は2回目ということもあり、アンケートフォーム同様、かなりスムーズに作ることができています。
試運転でエラーがちょこちょこ出たりしていますが、全く解決できないようなエラーは発生していません。
できるものがもう分かっているから、と言えばそれっきりなんですけど、これも1つの成長の証なのかな、と思っています。
今日の収穫・・・?
と言うわけで、今日の収穫は特にありませんでした。
実はコンタクトフォームはユーザーが自由に記述できる欄が付いているために、ユーザーからの入力チェックだとか、攻撃対策にかなりの時間がかかります。
今日は入力チェックの部分の記述までで時間がきてしまいました。
入力チェック
入力チェックで何をするのか。
今回のコンタクトフォームでは「名前」、「メールアドレス」、「件名」、「本文」を入力することになっています。
名前、件名、本文は入力されているか、というチェックくらいで済むんですが、メールアドレスは少し複雑になります。
入力されているかの他に、「メールアドレスとしての形式に沿っているか」を確認する必要があります。
具体的に言うと「example@gmail.com」みたいな感じですね。
これには「正規表現」という手法(っていうでしょうか?)を用いてチェックすることになります。
メールアドレスの場合だと、「@より前の文字は何が入るか」、「@があるか」、「gmail.com」のような形になっているか、というのを正規表現で記述してあげます。
今回はメールアドレスがサンプルになっていますが、電話番号や郵便番号にも応用が可能なようです。
記述の方法がかなり特殊で難しいですが、覚えるというよりは、都度確認しながら組んでいく方がよさそうですね。
覚えるのが一番でしょうけど、今はとりあえずphpのことを頑張ることにします。
明日はコンタクトフォームをもう一度完成させて、練習問題にトライする予定です。
今日はここまで。ではー。
練習問題でつまづきながら
こんにちは。しゅーのーです。
今日は日曜日ということで、文字通り日曜大工をしていました。屋内で。
もちろんphpの勉強もしました。参考書は下記のとおり。
復習をすることに
前回までCodeIgniterと戦っていたわけなんですが、自分の力量が全然足りていないことが分かったので、もう一度参考書の最初からやり直すことにしました。
最初からやり直す予定はしていたのですが、とりあえず参考書が全部終わってからかな、と思っていました。
しかし、このままエラー画面を見ているままでは、時間が無駄に過ぎていくだけです。
思い切って予定を繰り上げて、最初から復習することにしました。
2回目なのでスムーズ
参考書に書いてあるコードを写していくのは、今回で2回目になります。
前回はけっこう時間がかかったのですが、さすがに1回やったことなのでスムーズに進みました。
今度は解説もちゃんと理解しながら進めていきます。
コードについてもただ写すだけではなくて、こう書けばよさそうだな、というポイントを押さえながら書いていきました。
練習問題に苦戦
この参考書には章が終わるごとに練習問題がついているのですが、1回目はこれをすっ飛ばしていました。
理由としては、まずは本に書いてある内容を全部通しで進めたかったからです(結局できなかったんですが)。
今回は練習問題にもとりくんでいきます。
練習問題なので、自分でコードを考えて、結果を出すわけです。
今日やったものは、1問目でいきなりつまづいてしまいました。
やりたいことは分かるのに、コードの書き方が分かりませんでした。
具体的に言うと、「繰り返しの処理でファイルに書き込みをする」という処理です。
自分なりに考えて、ああでもないこうでもないと、書いていたのですが、できませんでした。
結局、解答を見るはめに。できれば見たくはなかったのですが。
見てみたら、なんてことはない答えでした。
for構文で書いていくだけだったのですね。
目から鱗
ぼくが一番「うおっ」と思ったのは「for構文には必ずしもカウンターを入れなくていい」ということですね。
大体の基礎的なところだとこんな感じで書いてあるじゃないか。
for ($num = 0; $num <= 4; $num++) {
echo $num;
}
ぼくの頭の中の先入観として「for構文の中には必ずカウンターがある(今回は$num)。」が根強くありました。
これ、カウンターを裏で使うことも当然できるんですね。
for ($num = 0; $num <= 12; $num++) {
fwrite($fp, 0 . "\n");
}
これが今回の答えだったんですが、こうすることで「0」を13回、改行しながらかきこんでくれます。
あぁ、{}の中にカウンターがない。
処理の回数だけ数えててくれれば、それでいいんですね。
明日は苦戦したコンタクトフォーム
明日は1回目でエラーが多発した、「コンタクトフォーム」の復習をしようと思います。
今回はスムーズにいけばいいんだけど。
今日はここまで。ではー。