質問: 商品を登録するときはチェックボックスで選択し、 データは整数で登録したいのですが、 新着は(新着=1 違う=2) キズは(キズ有り=1 キズ無し=2 少し有り=3) このデータを呼び出し、【新着! キズ無し】 のような感じで表示する時はどういったやり方がよいのでしょうか? if文などでまとめた定義ファイルを作るものなんでしょうか? また、その場合、例になるソースを教えていただけると助かります。
回答: そのような表示を行う箇所がどの程度出現するかによると思います。 出現が1度しかなければ、多少強引でも、単純にif文で処理すると思います。 また、何らかのフレームワークは利用していますか? 実際の表示部分は、各フレームワークによって対処が異なるかと思います。 あくまで自分の場合ですが、 Smartyを利用していれば、 その表示を行うテンプレートを容易して、includeすると思います。 ``` {include file="comment.tpl" is_new=新規フラグ has_damage=傷フラグ} ``` みたいな感じです。 こうしておいて、テンプレートの中身は多少複雑になっても、処理がちょっとしかないので、見通しがよいです。また、フラグの追加・変更も修正箇所が一度になってよいです。 cakePHPを利用していれば、 コンセプトは同等ですが、helperを作成します。 こちらも、利点は同様です。 PHPのみで処理しているのであれば、なんらかの出力関数を用意してあげるのがよいのではないでしょうか? 出力するPHPから共通にrequireするPHPファイル(例えば、common.php)を作成して、次のような関数を定義し、 ``` function showComment($status) { if (status['new'] == 1) { if (status['outlet'] == 0) { echo "【新着 キズなし】" } else { } } else { } } ※関数内はいい加減です。分岐のパターンによって効率的に直してください。 ※statusをarrayで渡しているのは、statusの内容の追加・変更があった場合に変更が少なくて済む用にです。 ``` 出力側では、 ``` require_once ("common.php"); 新規フラグ, 'outlet' => キズフラグ)); ?> ``` みたいな感じです。 いかがでしょうか?