ウェブカツ学習メモ Lesson14「プロフィール編集機能を作ろう!」

ソースコードで実際に動くまで約10時間・・・
原因を調べて修正するのは大変でしたが、自分に力が付いてきているなと実感できました。
特に2番目の不具合を発見するのには苦労しましたが、修正後動くようになった時は狂喜しました。一人絶叫したくなりました。

1.年齢の半角数字のエラーメッセージ
対象
webservice_practice05
function.php

事象
年齢を未入力で送信すると、「MSG11:郵便番号の形式が違います」が
表示されました。

原因
Function validNumberを確認したところ、
MSG11が$err_msgに格納されています。

修正前のコード
define(‘MSG11’, ‘郵便番号の形式が違います’);
function validNumber($str, $key){
if(!preg_match(“/^[0-9]+$/”, $str)){
global $err_msg;
$err_msg[$key] = MSG11;
}

修正内容
・新しい定数MSG12を定義
・MSG11からMSG12へ変更

修正後のコード
define(‘MSG12′,’半角の数字のみご利用いただけます’);
function validNumber($str, $key){
if(!preg_match(“/^[0-9]+$/”, $str)){
global $err_msg;
$err_msg[$key] = MSG12;
}

2.不要なはずのバリデーションチェックが走ってしまう
対象
webservice_practice05
profEdit.php

事象
ファイルのコメントに「//DBの情報と入力情報が異なる場合にバリデーションを行う」と
あるにも関わらず、未入力のすべての項目に対してバリデーションチェックが走ってしまう

原因
DBにはNullが格納されている。一方で比較する変数は空文字のため、
型までの厳密な比較をおこなうと「更新された」と判定されてしまう
gettypeでDB値および変数の型を出力させると確認できる

修正前のコード
if($dbFormData[‘username’] !== $username){
validMaxLen($username, ‘username’);}

修正内容
・DB値がnullかつ入力値が空文字の場合には、バリデーションチェックが
走らないようにif文を変更
・上記のケースに該当したことが見えるように、関数debugでログを出力する
・記載しているコードは、usernameですが、tel,zip,addr,ageについても同様です。

修正後のコード
//username,tel,zip
if(empty($dbFormData[‘username’]) && $username===””){
debug(‘usernameはDB値が(nullや0)かつ入力値が空文字のためバリデーション不要’);
}elseif($dbFormData[‘username’] !== $username){
validMaxLen($username, ‘username’);}

まだ完全でないと思われるところ
Emptyは0や0.0を許容してしまうため、意図せずにバリデーションを回避してしまうかもしれない

3.更新した内容がDBに反映されない
対象
webservice_practice05
profEdit.php

事象
php.logには「クエリ成功」と出力されているにも関わらず、
更新内容がDBに反映されない

原因
DB、ageの型はint型のため、空文字を書きもうとすると反映できない
以下のようなSQL文をphpMyAdminから流すことで上記の理由が確認できる
UPDATE users SET username = ‘例’, tel = ”, zip = 0, addr = ”, age = ”, email = ‘XXXX@gmail.com’ WHERE id = X

修正前のコード
$age = $_POST[‘age’];

修正内容
zipと同じように空で送信されきてきた場合には0を入れる

修正後のコード
$age = (!empty($_POST[‘age’])) ? $_POST[‘age’] : 0;

まだ完全でないと思われるところ
DBに反映できない場合には、エラーにならないといけない

4.ageを未入力で登録したにも関わらず0が表示される
対象
webservice_practice05
profEdit.php

事象
「3.更新した内容がDBに反映されない」での修正をおこなった後、
画面上で年齢に0が入ってしまう

原因
LESSON動画でも解説していたとおり、DBに0が入っているため

修正前のコード
ブログの文章に入力できないため一部<>等削除しています
input type=”number” name=”age” value=”php echo getFormData(‘age’);”>

修正内容
DB値0のときには値を空白にする

修正後のコード

ブログの文章に入力できないため一部<>等削除しています

input type=”number” name=”age” value=”php
if( !empty(getFormData(‘age’)) ){
echo getFormData(‘age’); }else{
debug(‘ageはemptyでtrue判定されました’);}”

まだ完全でないと思われるところ
年齢0を登録する反映されていないように見えてしまう

備考
「value=」と「<?php」の間に改行やスペースを入れると、それ自体が値になってしまう

ウェブカツ学習メモ106

DAY114 #100DaysOfCode

ウェブカツ

ウェブサービス部 課題DAY8
ログイン画面のPHP

エラーは結局タイポでした。ログを見て解決!
エラーはなくなったんですが、このページ成功のしるし
‘パスワード一致’のログが出ないんです・・・
var_dumpで各変数が問題ないのに〜

Today:1.5h Total:158.5

ウェブカツ学習メモ105

DAY113 #100DaysOfCode

ウェブカツ

ウェブサービス部 課題DAY7
ログイン画面のPHP

また別のエラーが出ていて未解決です。
debug_flg何のためにtrueで定義しているのかなと
動画を見返したら、開発時だけ使って公開した後は
使わないように変更するためだった。なるほど

Today:1.0h Total:157

ウェブカツ学習メモ104

DAY112 #100DaysOfCode

ウェブカツ

ウェブサービス部 課題DAY6
ログイン画面のPHP

DB接続の部分だけを書いて実行しました。
「undefined function debug()」
あ、debugって関数でしたね・・・
道のり長そうです。

Today:1.0h Total:156

ウェブカツ学習メモ103

DAY111 #100DaysOfCode

ウェブカツ

ウェブサービス部 課題DAY5
ログイン画面のPHP

想定していた通り一から書くのはまだ無理でした。
LESSONのコードを自分の画面に合わせて変更していきました。
Function.phpになっているコードをベタで書いたり。
ほぼ写経ですが、一応アウトプットということでm(_ _)m

Today:2.0h Total:155

ウェブカツ学習メモ102

DAY110 #100DaysOfCode

ウェブカツ

ウェブサービス部 課題DAY4
ログイン画面のhtml、CSS

この画面一から書くのに1.5h…
アウトプットまだまだです。
CSS久しぶりに書きました。見た目が
少しずつ出来上がっていくのはうれしい。
グーグルフォントも初めて自分で選びました。

Today:1.5h Total:153

ウェブカツ学習メモ101

DAY109 #100DaysOfCode

ウェブカツ

ウェブサービス部 課題DAY3
テーブルの作成、ログイン画面のhtml

まずはhtmlからスタート
なんとなく書けるものの、テキストボックスが出ない…
とりあえず明日はそこを調べる!

テーブルの作成は、XSERVERの環境でおこないました。

Today:0.5h Total:151.5

ウェブカツ学習メモ100

DAY108 #100DaysOfCode

ウェブカツ

処理フローとテーブルをエクセルに書いてみた。
コードは書いていないものの、企画を練っている
感覚が得られて楽しい。
もっともっとやっていたいけれど、もうこんな時間…

Today:1.0h Total:151

ウェブカツ学習メモ99

DAY107 #100DaysOfCode

ウェブカツ

2日空けてしまったけれど、また今日から再開!
作りたいいサービスの画面モック作成。
ページネーションに、Twitter APIも付けてみたい…

自分がレンタルしているXSERVERで、
phpMyAdminが使えることが判明。
もしかして、公開できるのか…

Today:1.5h Total:150

ウェブカツ学習メモ98

DAY106 #100DaysOfCode

ウェブカツ

WEBサービス部 Lesson25
mypage.php、function.php写経

分からないなりに、1周目を終えました!
明日から簡単なサービスを作りながら、
復習をしていきます。
なにつくろうかな~(^_^)

Today:1.0h Total:148.5