プロが教えるわが家の防犯対策術!

いつもお世話になっています。

Smartyに関して質問します。

以下のようなtemplateがあった場合に、

<html>
<head><title></title>
</head>
<body>
<selection name="hobby">
<option name="hobby[]" value="0" >スポーツ</option>
<option name="hobby[]" value="1">卓球</option>
</selection>

<div id ="hobby_details">ここに、選択された値により表示する内容を変える
</div>
</body>
</html>

セレクトが選択されたら、それをキーにdbに接続して値をとってき、
再度<div></div>内部に値を表示することはできないのでしょうか?
その場合として、pluginクラスを作って表示することはできないのでしょうか?

したいのが、セレクトボックスが選択されたときに、<div></div>内に値を表示したいのです。


宜しくお願いします。

A 回答 (2件)

あまり難しく考えなくても


選択する度にPHP内でDB接続をして値をとってきて
テンプレート内に表示することは可能です

質問者さんのPHP内のデータベース接続が
どういった記述なのかわからないので
データベース接続部分は省略していますが
そちらもわからないようであれば
補足もしくは別に質問するのがいいでしょう

簡単な手ほどき的なものになりますが
更新させるためのサンプルを作ってみましたので
やってみてください
PHPとSmartyを使用しているのであれば理解できる内容です

テンプレートの記述(index.tplとして作成してみました)

<html>
<head>
<title>test</title>
<body>
<form method="post" action="index.php">
<select name="hobby" onChange="submit(this.form)">
<option>スポーツ</option>
<option value="0">卓球</option>
<option value="1">サッカー</option>
<option value="2">バレー</option>
<option value="3">リセット</option>
</select>
</form>
<div>
{if isset($str)}
{$str}
{/if}
</div>
</body>
</html>

php内の記述

if(isset($_POST['hobby'])){

#本来ならswitch文の内容はいらなく
#DBから値をもってきてテンプレートに送るだけの処理になります

switch ($_POST['hobby']){
case 0:
$smarty -> assign('str', '卓球');
break;
case 1:
$smarty -> assign('str', 'サッカー');
break;
case 2:
$smarty -> assign('str', 'バレー');
break;
}
}

$smarty -> display("index.tpl");
    • good
    • 0

それはPHPでもSmartyでもなくJavaScriptの分野だと思います。


参考URLはjQueryのものですが、一番下にサンプルがありSELECTタグの選択値に応じてDIVの内容を変更してます。

> セレクトが選択されたら、それをキーにdbに接続して値をとってき、

をしたいならAjaxで取ってくるか、あらかじめDBの値をHTMLに書き出しておく必要があるので難易度が上がります。
まずはSELECTの切り替えでDIVを入れ替えるとこまで実装するのが良いでしょう。

それと、
><selection name="hobby">
selectionじゃなくてselectの間違いだと思います。

参考URL:http://semooh.jp/jquery/api/events/change/fn/
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/07/09 07:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!