0

私はsmartyとphpを使用しています。2 つのドロップダウン メニューがあります。また、カテゴリの id を持つニュースを含む 2 つのデータベースがあります。メニューの 1 つがカテゴリを読み取ります。最初のメニュー カテゴリから選択すると、ページが自動的に更新され、そのカテゴリのニュースが 2 番目のドロップダウンに表示されます。

<form method="post">
        <h3>Category of news</h3>

      <select name="categoriesForm" id="news_cat">   
        <option value="0"></option>  
        {foreach from=$categories item=i}                              
            <option value="{$i.id}"> {$i.name|stripslashes} </option>            
        {/foreach}    
      </select>

        <h3 style="position:absolute;left:500px; top:130px;">Name of news</h3>

        <select name="news" id="news_name" style="position:absolute;left:500px; top:190px;">   
        <option value="0"></option>  
        {foreach from=$news item=i}                              
            <option value="{$i.id}"> {$i.name|stripslashes} </option>            
        {/foreach}    
      </select>


  </form>

これはコントローラーです:

function edit_news(){
                    $cat = $this->news->getCategoriesNews();
                    $this->assign('categories',$cat);


                    $selected_key = $_POST['categoriesForm'];



                    $news = $this->news->getNameNews($selected_key);
                    $this->assign('news',$news);

        }     

そしてこれがモデルです

 function  getCategoriesNews(){
        return  $this->db->GetAll("SELECT id, name FROM categories ");
   }

   function getNameNews($category){
        return $this->db->GetAll("SELECT name,cat_id FROM news WHERE cat_id = '$category' ");
   }
4

1 に答える 1

0

さて、私はプロセスの概要について言及しました。少しの宿題で、機能を実装できると確信しています。

1) ドロップダウンで使用onChangeしてcategoriesFormJavascript / jQuery 関数を呼び出します。したがって、 の値を変更するたびにcategoriesForm、スクリプト関数が呼び出されます。

<select name="categoriesForm" id="news_cat" onChange="feed_secondary()">

2)feed_secondaryの現在の値をフェッチし、categoriesForm起動して ajax 呼び出しを行います。
3) ajax 呼び出しで、現在のカテゴリの値を渡します。
4) コントローラーで、category_id を処理し、そのカテゴリーのすべてのニュースを応答として送信します。
4)feed_secondaryで、応答を処理し、セカンダリ ドロップダウンを操作しnewsます。

于 2013-11-11T09:21:21.137 に答える