人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP+MySQL+Smartyに関するご質問です。

一度登録したダンススクールを編集する画面を制作しています。

▽ここから

■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(バレエ,ヒップホップ,));

ではチェックが入ります。
何が原因でしょうか?またどのやれば認識されますか?

宜しくお願い致します。

●質問者: gelgelgel
●カテゴリ:インターネット ウェブ制作
✍キーワード:MySQL PHP SELECT Smarty ジャンル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kn1967
●10ポイント
$smarty->assign("genre_check",array($array['genre']));

では

$smarty->assign("genre_check",array(array(バレエ,ヒップホップ)));

となってしまうので単純に

$smarty->assign("genre_check", $array['genre']);

ではないかと思いますよ。


URL必須なので、とりあえずマニュアル ↓

◎質問者からの返答

ちょっと関数がややこしかったですが、上記でもあるとおり

$array['genre']は「バレエ,ヒップホップ,」なのでそういうことではないです。

ご回答ありがとうございました。


2 ● pahoo
●60ポイント ベストアンサー

まず確認ですが、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つしか渡されていないことになります。

なるほどよく分かりました!!

差し替えたところうまく動作しました!!

ありがとうございました!!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ