挫折からの回帰

1度プログラミング学習から逃げた者がどこまでやれるかもう一度挑戦するブログ

退会機能もあっさり!次の関門はプロフィール編集機能!!

f:id:iolwloi:20191006234532p:plain

こんにちは。

文系出身でも・未経験でも・プロのプログラマーを目指すブログ 略して「プロプロ」

あんまん(@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オブジェクト実行直後、SQLINSERTされた値の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 インデックス名

まとめ

明日はプロフィール編集機能のメモを作って実装までいきたいと思います!

今日はこの数日のわずかな期間にも成長を感じました。

やっぱり反復練習は人を裏切らないんだなぁ・・

 

明日も頑張ります!!