システムの動作を確認していると、入力内容の確認画面だけ表示順序がおかしく、入力内容の変更画面、CSV出力は予定通りの順番に出力されるという現象に気がつきました。
具体的には、入力内容の確認画面では、
No.2 Bさん No.3 Cさん No.4 Dさん No.1 Aさん
という順番で表示されますが、入力内容の変更画面では、
No.1 Aさん No.2 Bさん No.3 Cさん No.4 Dさん
という順番で表示され、CSV出力も
No.1,No.2,No.3,No.4 Aさん, Bさん,Cさん,Dさん
という順番で出力されています。
添字を指定しているかしていないかで、正しい順序になるかならないか違う
入力内容の確認画面のソースコードを見ると、データベースから取得した値を配列に入れ、配列を順番に表示しています。
番号と名前を取得して、番号を配列の添字として利用しています。
データベースから値を取得するときの条件を確認すると、ソート条件に使える番号をORDER BY句に指定していませんでした。
ORDER BY句にソート条件として使える値を番号を指定したら、入力内容の確認画面でも、入力内容の変更画面、CSV出力と同じ順番になりました。
よくよくソースコードを見ると、入力内容の確認画面では、foreach文で配列に入っている値を最初から取り出して表示しています。
入力内容の変更画面、CSV出力でも同じ配列を利用していますが、最大5人まで登録される可能性があるので、for文で配列の添字として1~5を指定しています。
この違いがあったので、入力内容の確認画面では正しくない順番で表示されたのが、入力内容の変更画面、CSV出力は正しい順番となっていました。
最初からORDER BY句にソート条件として番号を指定しておけば発生しない現象でした。