一度登録したダンススクールを編集する画面を制作しています。
▽ここから
■PHP
//スクール情報(ダンスジャンル)を出力
$rs = mysql_query("SELECT genre FROM dtb_school WHERE school_id='$id'");
$array = mysql_fetch_assoc($rs);
$smarty->assign("genre_check",array($array['genre']));
■テンプレート
<!--{html_checkboxes name="genre" selected="$genre_check" options="$genreCheckBoxes"}-->
△ここまで
で該当する項目にチェックが入りません。
$array['genre']は「バレエ,ヒップホップ,」なので
$smarty->assign("genre_check",array(バレエ,ヒップホップ,));
ではチェックが入ります。
何が原因でしょうか?またどのやれば認識されますか?
宜しくお願い致します。
まず確認ですが、MySQLデータベースの genre フィールドには "バレエ,ヒップホップ" というように、カンマ区切りでダンスジャンルが登録されているのですよね。
となると、ご質問のスクリプトでは、下記のように配列の要素は1つしか渡されていないことになります。
$smarty->assign("genre_check", array('バレエ,ヒップホップ'));
目的としていることは、カンマ区切りで2つの要素に分離することでしょうから、関数 mb_split を使います。また、変数 $array が関数 array と同名というのもバグのもとになりかねないので、変更します。
ご質問のPHPスクリプトを下記に差し替えてみてください。
//スクール情報(ダンスジャンル)を出力 $InternalEncoding = 'UTF-8'; //処理している日本語の文字コードを設定してください mb_internal_encoding($InternalEncoding); mb_regex_encoding($InternalEncoding); $rs = mysql_query("SELECT genre FROM dtb_school WHERE school_id='$id'"); $arr = mysql_fetch_assoc($rs); $chk_options = mb_split(',', $arr); $smarty->assign("genre_check", $chk_options);
$smarty->assign("genre_check",array($array['genre']));
では
$smarty->assign("genre_check",array(array(バレエ,ヒップホップ)));
となってしまうので単純に
$smarty->assign("genre_check", $array['genre']);
ではないかと思いますよ。
URL必須なので、とりあえずマニュアル ↓
ちょっと関数がややこしかったですが、上記でもあるとおり
$array['genre']は「バレエ,ヒップホップ,」なのでそういうことではないです。
ご回答ありがとうございました。
まず確認ですが、MySQLデータベースの genre フィールドには "バレエ,ヒップホップ" というように、カンマ区切りでダンスジャンルが登録されているのですよね。
となると、ご質問のスクリプトでは、下記のように配列の要素は1つしか渡されていないことになります。
$smarty->assign("genre_check", array('バレエ,ヒップホップ'));
目的としていることは、カンマ区切りで2つの要素に分離することでしょうから、関数 mb_split を使います。また、変数 $array が関数 array と同名というのもバグのもとになりかねないので、変更します。
ご質問のPHPスクリプトを下記に差し替えてみてください。
//スクール情報(ダンスジャンル)を出力 $InternalEncoding = 'UTF-8'; //処理している日本語の文字コードを設定してください mb_internal_encoding($InternalEncoding); mb_regex_encoding($InternalEncoding); $rs = mysql_query("SELECT genre FROM dtb_school WHERE school_id='$id'"); $arr = mysql_fetch_assoc($rs); $chk_options = mb_split(',', $arr); $smarty->assign("genre_check", $chk_options);
>ご質問のスクリプトでは、下記のように配列の要素は1つしか渡されていないことになります。
なるほどよく分かりました!!
差し替えたところうまく動作しました!!
ありがとうございました!!
>ご質問のスクリプトでは、下記のように配列の要素は1つしか渡されていないことになります。
なるほどよく分かりました!!
差し替えたところうまく動作しました!!
ありがとうございました!!