前提・実現したいこと
既に動いているWEBアプリ(PHP)の改修をしています。
利用者に野菜を選択してもらい、その野菜の分類に応じた画像と注釈を表示するアプリです。
画像は矢印つきで、後付で注釈とリンクを入れています。
注釈の内容とリンク先の設定はDBで、座標と表示注釈の指定をPHP上で行っています。
画像は全部で15種類ほどあり(以下の例でいう「分類」ごとに1画像準備されています)、今後も少しずつ増える予定です。
DBの元となっているExcelを管理している人と、画像の座標を指示してくる人がそれぞれ別なため、このような管理にしたのですが、
どんどんPHP側が長くなってしまった上に、コードを書いている本人(私)しか座標の指定方法がわからないだろう状態になってしまいました。
座標テーブルを新規に設けてDB側で座標(と表示する注釈)を管理すべきかと思うのですが、
デザイン(外見)のコントロールをDBに任せるという考えが正しいのかどうか自信がありません。
よい知見をお持ちでしたら、
根本的な改善法も含めて教えていただけないでしょうか。
該当のソースコード
野菜テーブル
野菜 | 分類 |
---|---|
トマト | 果菜類 |
小松菜 | 葉菜類 |
キャベツ | 葉菜類 |
大根 | 根菜類 |
ニンジン | 根菜類 |
症状テーブル
|症状ID(symptomID)|症状(symptom_text)|解決法(solution_text)|解決法詳細PDF(solution_PDF)|
|--|--|--|
|S_001|実がつかない|肥料をやる|T_01.pdf|
|S_002|根が腐る|水をやりすぎない|T_02.pdf|
|S_003|葉が虫に食べられる|農薬の散布|T_03.pdf|
|S_004|葉が変色する|水をやりすぎない|T_02.pdf|
|S_005|可食部が少ない|肥料をやる|T_01.pdf|
php
1 2//座標と文言の指定 3$pos = array( 4 '果菜類' => array( 5 'pos1' => array( 'pos' => 'left:15px;top:260px' , 'text' => 'S_001' ), 6 'pos2' => array( 'pos' => 'left:160px;top:140px', 'text' => 'S_002' ), 7 'pos3' => array( 'pos' => 'left:476px;top:250px', 'text' => 'S_003,S_004' ), 8 ), 9 '葉菜類' => array( 10 'pos1' => array( 'pos' => 'left:20px;top:140px', 'text' => 'S_002' ), 11 'pos2' => array( 'pos' => 'left:246px;top:290px', 'text' => 'S_003,S_004' ), 12 ), 13 '根菜類' => array( 14 'pos1' => array( 'pos' => 'left:20px;top:140px', 'text' => 'S_002' ), 15 'pos2' => array( 'pos' => 'left:246px;top:290px', 'text' => 'S_005' ), 16 'pos3' => array( 'pos' => 'left:420px;top:22px', 'text' => 'S_003,S_004' ), 17 ), 18); 19 20//$symptomには症状テーブルの情報が入っている 21foreach($symptom as $val){ 22 $symptom[$val['symptomID']] = $val; 23} 24 25//$kindに果菜類/葉菜類/根菜類のいずれかが入る 26//画像を貼る 27echo '<img src="image/',$kind,'.png">'; 28 29//$kindに果菜類/葉菜類/根菜類のいずれかが入る 30//文言を貼る 31foreach($pos[$kind] as $key => $val ){ //$kind=="根菜類"で一周目の場合 32 $tmp = explode(',', $val['text']); 33 echo '<ul style="', $val['pos'] ,'">'; //<ul style="left:20px;top:140px"> 34 foreach( $tmp as $tmp_val ){ 35 echo '<li>'; 36 echo $symptom[$tmp_val]['symptom_text']; //echo "根が腐る" 37 //本当はもっとややこしい処理 38 echo '</li>'; 39 echo '</ul>'; 40}
補足情報(FW/ツールのバージョンなど)
PHP 7.2.3
MariaDB 10.1.31
Laravel 5.6.3(現在移行作業中)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/13 03:15