退会機能もあっさり!次の関門はプロフィール編集機能!!
こんにちは。
文系出身でも・未経験でも・プロのプログラマーを目指すブログ 略して「プロプロ」
あんまん(@aaii0123)です。
数日前は10月とは思えないほどの夏日だったのに、
今日はうって変わって、東京は秋らしい涼しい気候でしたね!
連日の猛暑に体が慣れてしまったのか、それとも私が寒がりになったのか、
今日くらいの気温だと、過ごしやすいを通り越して既に寒いと感じます笑
暑いのも苦手なのですが、これからどんどん寒くなっていくと思うと
それはそれで思いやられるなぁ・・
あったいお風呂に浸かって乗り越えようと思います笑
さて、今日の進捗です。
取り組んだこと
今日はこんなことに取り組みました!
・ユーザー登録後のログインをスキップしてマイページに遷移させる対処のエラー解決
・メモをとりながら退会機能のコード写経
・退会機能の実装
・メモをとりながらプロフィール編集機能のコード写経(途中)
ユーザー登録後のログインをスキップしてマイページに遷移させる対処のエラー解決
まずは、昨日宿題で残っていたエラーの対処をしました。
一晩たって、自然と治ってたりしないかな、なんて思いながら
念の為、挙動を確認したところ、無事昨日と同じエラーが(当たり前)
表示されたエラーをググったり、コードの怪しそうな部分を睨んだり
色々試して、数分で書き間違いに気がつきました。
複雑なエラーではないという直感が当たっていて何より笑
最初の頃に比べてだいぶエラーの原因に対する嗅覚が磨かれてきたことを感じます。
メモをとりながら退会機能のコード写経。そして実装。
続いていつものようにまずウェブカツの動画を視聴しつつ
退会機能のコードをメモで処理の流れを書き出しながら写経。
処理がシンプルということもありますが、実装にだいぶ慣れてきたおかげか、
なんとなくこんな流れで実装すればうまくいきそうだな、と
予想しながら動画を視聴している自分がいて、
ちょっとずつとはいえ、1ヶ月前に比べて我ながら成長したなとしみじみ・・
退会機能も処理としてはシンプルなので、メモもすくなくすみました。
退会機能実装の流れ
共通変数・関数の読みこみ
認証関数の読込み
POST送信のチェック
POST送信があればデータベース接続
指定したユーザーIDのデリートフラグに1をたてる
クエリ実行が成功であればセッションを削除し
ログインページへ遷移する
そして、メモをとり終えてから少し時間をおいて
正解コードは見ずにメモだけを見て自力でコードを書きました。
エラーも出ることなくこちらも、順調に実装完了♪
メモをとりながらプロフィール編集機能のコード写経(途中)
退会機能も特にエラーにつまずくことなく実装ができ、なかなか快調だったので
プロフィール編集機能にも着手しました。
こちらは、まだメモをとりながらの写経の途中ですが、
ログアウト・退会機能に比べるとコードの量が多くてエラーがたくさん出そうな予感笑
まだ作成途中ですがこちらのメモも晒します
プロフィール編集機能の実装の流れ
Function.php
ユーザー情報を取得する関数
データベースへ接続し、ユーザー IDの情報が合致するカラムを取得(全部)
クエリ実行が成功しているかどうかデバッグで確認
クエリ結果の値をfetchで取得して返す
フォーム入力保持関数
グローバル変数$dbFormDataを指定
ユーザーデータがあり、フォームにエラーがあり、POSTにデータがある場合POSTの情報を返す
ユーザーデータがあり、フォームにエラーがあり、POSTにデータない場合、DBの情報を返す
ユーザーデータがあり、フォームにエラーがあり、POSTにデータがありかつDBの情報が違う場合、POSTの情報を返す
ユーザーデータがあり、フォームにエラーがあり、上記に該当しない(そもそも変更されていない)場合、DBの情報を返す
ユーザーデータがない場合、POSTの情報を返す
profEdit.php
getUser関数を使い、変数$dbFormDataにデータベースから取得したユーザー情報を入れる
POST送信されていれば変数にユーザー情報を入れる
DBの情報とPOSTされた情報を比べて違いがあればバリデーションチェック
DB接続
レコード更新
マイページ遷移
関数が増えるとやはり少し複雑に感じますね。
それでも、初見に比べたらだいぶ落ち着いて処理の流れを読み取れるようになりました
ググったこと
・lastInsertID()
PDOオブジェクト実行直後、SQLにINSERTされた値のIDを取り出すことができる
機能実装の処理がシンプルだったので、今日はググったことも少なめです。
学んだこと
・ユーザー登録時のEmail重複チェックに対し、一度退会したEmailは登録できるようにする方法
バリデーションのDB接続時のSQLにデリートフラグが0である場合の条件を加える
DB側でもEmailの重複登録が可能な状態にする
・DBの情報を上書きするSQL文
UPDATE テーブル名 SET カラム名
・name属性のないinputタグはPOSTに情報街はいらないので注意
・登録されているテーブル内のインデックスを表示するSQL文
show indexes form テーブル名
・DBに付したインデックスを削除するSQL文
alter table テーブル名 drop index インデックス名
まとめ
明日はプロフィール編集機能のメモを作って実装までいきたいと思います!
今日はこの数日のわずかな期間にも成長を感じました。
やっぱり反復練習は人を裏切らないんだなぁ・・
明日も頑張ります!!