2012-04-24 1 views
0

トピックを追加する際の私のフォーラムでは、すべての可能なカテゴリのドロップダウンがあります。私が投稿し、テキストフィールドの1つが空である場合、エラーが発生し、選択されたアイテムをドロップダウンに選択したままにします。Smarty/PHPドロップダウンで1つのアイテムを選択したままにしたいが、スマートで作業してもらえません

私はそれを前にしましたが、Smartyではしませんでした。誰かが私が間違っていることを見ることができますか?

$query_cat = " 
    SELECT 
     fcID 
     ,fcName 
    FROM 
     forum_categories 
    "; 
    $exec_cat = mysql_query($query_cat);  
    while($categories = mysql_fetch_assoc($exec_cat)) 
    { 
     if(isset($_POST['category'])) 
     { 
      $selected = ' selected'; 
     } 
     else 
     { 
      $selected = ''; 
     } 
    } 
    $this->view->assign('selected', $selected); 

    if ($_SERVER['REQUEST_METHOD'] == 'POST') 
    { 
     $row = mysql_fetch_assoc($exec_cat); 
     $subject = mysql_real_escape_string(htmlentities($_POST['subject'])); 
     $content = mysql_real_escape_string(htmlentities($_POST['content'])); 

     $query_add_topic = " 
     INSERT INTO 
      forum_topics 
     (
      ftDate 
      ,fcID 
      ,fuID 
      ,ftSubject 
      ,ftMessage 
     ) 
     VALUES 
     (
      NOW() 
      ,'".$_POST['category']."' 
      ,'".$_SESSION['userid']."' 
      ,'".$subject."' 
      ,'".$content."' 
     ) 
     "; 
     $exec_add_topic = mysql_query($query_add_topic); 
    } 
    else 
    { 
     while ($row = mysql_fetch_assoc($exec_cat)) 
     { 
      $entries[] = $row; 
      $this->view->assign('entries', $entries); 
     } 
    } 

そしてSmartyの

<table width=100%> 
<tr> 
    <td>Onderwerp:</td> 
</tr> 
<tr> 
    <td width="50"><input type="text" name="subject"></td> 
</tr> 
<tr> 
    <td>Categorie type</td> 
</tr> 
<tr> 
    <td><select name="category"> 
    {foreach from=$entries item=entry} 
      <option value="{$entry.fcID}"{$selected}>{$entry.fcName}</option> 
    {/foreach} 
     </select> 
    </td> 
</tr> 
<tr> 
    <td class="text"><textarea name="content" cols="50" rows="10"></textarea></td> 
</tr> 
<tr> 
    <td colspan="2"><input type="submit" name="send" value="Verstuur"></td> 
</tr> 

答えて

1

選択し、{html_options}<option>タグを作成するためのSmartyのタグがあります。そのドキュメントはhereです。テンプレートに独自のループを構築する必要はなく、選択した値をパラメータとして指定することもできます。これをPHPから$ smartyオブジェクトに渡すことができます。これにより、最小限の労力と最大限の優雅さで<select>を作成し、以前に選択したトピックの値を簡単に渡すことができます。

1
Instead of this 

<select name="category"> 
    {foreach from=$entries item=entry} 
     <option value="{$entry.fcID}"{$selected}>{$entry.fcName}</option> 
    {/foreach} 
</select> 

You can use 

<select name="category"> 
     {html_options options = $entries selected = $entries.fcName} 
</select> 

hope so it will work for you