チェックボックスのエラーについて - PHPプロ!Q&A掲示板
キーワード / キーワードが設定されていません
MYSQLに登録しております。
登録には思うような結果が返ってくるのですがチェックボックスのいずれかを
選択している状態でsubmitすると以下のエラーが出てしまいます。
『Warning: htmlspecialchars() expects parameter 1 to be string, array given in ファイル名 on line 268』
268行目は$v = htmlspecialchars($v, ENT_QUOTES);なのですがエラーを
なくすにはどうすればいいのでしょうか?
チェックボックスにチェックをしていない常態でsubmitした場合はエラーは
表示されず何が原因なのか全く想像もつかない状態です。。。
PHP
- function decode() {
- $array = array();
- foreach ($_POST as $k => $v) {
- if (get_magic_quotes_gpc()) {
- $v = stripslashes($v);
- }
- $v = htmlspecialchars($v, ENT_QUOTES);
- $array[$k] = $v;
- }
- return $array;
- }
- // チェックボックスの配列
- $status_list = array();
- $status_list = array('あああ', 'いいい', 'ううう', 'えええ', 'おおお')
- if (isset($_POST['confirm'])) {
- // 配列初期化
- $array = decode();
- // データ取得配列
- $data_list = array();
- foreach ($array as $k => $v) {
- $data_list["$k"] = "$v";
- }
- // ステータスチェック
- $status_key = array();
- if (is_array($_POST['status'])) {
- foreach ($_POST['status'] as $val) {
- // 配列に値を代入
- $status_key[] = $val;
- // 確認画面表示用
- $status_view .= $status_list["$val"] . ',';
- // mysql登録用
- $status_val .= $val . ',';
- // 選択状態保持
- $status_selected = $status_key;
- }
- // 確認画面表示用
- $data_list['status_name'] = $status_view;
- // mysql登録用
- $data_list['status_code'] = $status_val;
- }
- }
- $smarty->assign('status_checkbox', $status_list);
- $smarty->assign('status_selected', $status_selected);
smarty側tpl
- <form method="post" action="{$smarty.server.SCRIPT_NAME}">
- <table border="1">
- <tr>
- <th>ステータス</th>
- <td>
- {html_checkboxes name="status" options=$status_checkbox|smarty:nodefaults selected="$status_selected" separator=""}
- </td>
- </tr>
- </table>
- <p><input type="submit" name="confirm" value="登録内容確認"></p>
- </form>
1番目と2番目のチェックボックスを選択している状態でのprint_rの結果
- Array
- (
- [status] =>
- [confirm] => 登録内容確認
- [status_name] => あああ,いいい,
- [status_code] => 0,1,
- )
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。





ページのトップへ


kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。