2023-07-31〜
Yさん
⇒CSVファイルの読み込みですが、一部の環境依存文字に対応できていないので、mb_convert_encoding($str, "UTF-8", "SJIS");
のSJISをCP932にして下さい。
社長
⇒はい。
Yさん
【CSVファイル読み込み】
・今の仕様では、DBに登録完了、失敗どちらの場合も「読み込みが完了しました。」のメッセージが表示される。
⇒「○○件のレコードの登録が完了しました。」のように成功した件数を表示するとわかりやすいのではないか
・カンマに関して
⇒「,(半角カンマ)」が入力された場合「,(全角カンマ)」に変換する
⇒「新規登録・修正」から登録したカンマ入りのデータを「CSVファイルダウンロード」でダウンロードした場合もずれるため、同様に対応が必要
・今の仕様では、「必須項目に入力されているかのチェック→ダブルクォーテーションの処理」という順番で実装されている
⇒「”(半角ダブルクォーテーション)」が入力された場合に、入力があるため必須項目のチェックはクリアするが、ダブルクォーテーションの処理で削除され、DBには空文字として登録されてしまう
社長
⇒登録メッセージと「,(半角カンマ)」は修正しました。
・今の仕様では、「必須項目に入力されているかのチェック→ダブルクォーテーションの処理」という順番で実装されている
⇒「”(半角ダブルクォーテーション)」が入力された場合に、入力があるため必須項目のチェックはクリアするが、ダブルクォーテーションの処理で削除され、DBには空文字として登録されてしまう。
ですが、私が勘違いしているのかも知れませんが、再現出来ませんでした。
CSVファイルからの「,(半角カンマ)」です(ずれる)が、うっかりしていましたが、対策する必要がありますね。
「配列数がn以上だったら「,(半角カンマ)」を含む可能性があるので実行しない。」if (count($array) > n) {;}
としましょう。
社長
⇒ここまで真面目に検証したのだから、
CSVファイルのサイズも項目に入れましょう(入っていなければ)。
確かPHPのデフォルトは~8MBです、違うかも。
php.iniで値の変更できます。
.htaccessでも設定できます。
今は↓となっています。php_value max_execution_time 120
php_value post_max_size 100M
php_value upload_max_filesize 100M
~8MB(値は要相談)とするJavaScriptを実装しておきました。
Yさん
⇒CSVファイルサイズのチェック(JavaScript)の件でご相談です。if (file.size > 8388608) {
今実装が上記のようになっておりますが、こちらだと値とアラートがずれているかと存じます。
そのため、
・8388607 8MB以上です。
・8388608 8MBより大きいです。
等、値かアラートのどちらかに寄せていただければと考えているのですが、いかがでしょうか?
社長
⇒8388607 8MB以上です。
にしました。
Yさん
⇒先程の打ち合わせで報告させていただいた改行の件を送らせていただきます。
【新規登録・修正で登録する際に改行を含めた場合】
改行コード→crlf
【CSVファイル読み込みから登録する際に改行を含めた場合】
改行コード→lf
crlfがCSVファイルに含まれると行がずれてしまいます。
【解決案】
新規登録・修正で登録する際に、記号を半角から全角に変換したものと同じように、改行コードをcrlfからlfに変換することを考えております。
以下、参考になりそうなサイトを貼らせていただきます。
【PHP】改行コードを置換して配列に格納する
社長
⇒修正しました。
Yさん
⇒先程の打ち合わせの件を送らせていただきます。
①DBの定義
回答のNOT NULL制約が外れてしまっていたため修正を行う
→変更していただきありがとうございます。
②「CSVファイル読み込み」のファイルサイズ
8MBの場合、それぞれの項目に最大値まで入力した場合でも、1,000件は登録可能
→8MBの制限のままで良いと考えております。
③「CSVファイル読み込み」のファイルサイズ
8MBのファイルをインポートはできるが、IDが追加されるためそれをダウンロードし再度インポートするのは不可能
→そのままの実装で進めさせていただきます。テスト観点にも含めません。
④テスト仕様書の作成が完了いたしました。
⑤レビュー
→お時間いただきありがとうございました。
⑥テスト終了見込み
→エビデンスも取りながら進めていくため、週明けの終了を予定しています。
2023-08-07〜
社長
⇒以下2点、気が付いたので修正しました。
1.\n区切り(改行)のCSVファイルを読み込むと、
DBテーブルは容赦なく初期化、エラー表示はされず、「0件のレコードの登録が完了しました。」
となるのは、やはり仕様的に酷いので、
0件の場合はテーブルの初期化は行わず、完了メッセージも表示しないようにしました。
2.CSVファイル無しで読み込みを実行すると、サーバーがチェックしてエラーを表示する仕様もどうかと思うので、
クライアントでもチェックするようにしました。
モーダルにエラーメッセージを表示し、実行ボタンを不活性にするようにしました。
社長
⇒jQueryに依存するのか、しない方が良いと思う。
・Bootstrapも、5で依存から脱却
・JavaScriptの基本を知らずにjQueryを使うのは止めた方が良いと思う。
・今は標準のJavaScriptでほぼ同じことが出来る。
・ライブラリならReact?
いずれにせよJavaScriptの基本を知るのが先。
2023-08-14〜
社長
⇒正規表現問題は、原点に返り、以下で一応解決しています(たぶん)。$pattern = "\[(.+?)\]\((.+?)\)";
しかし、「URL何でもあり」はマズいので、追々、Yさん考えて下さい、私も考えます。