2013-03-07 79 views
1

假设有一个表格填写水果组合框:从表中获取数据,并根据选择值笨

mysql> select * from FRUITS; 
+---------+-----------+ 
| fruitid | fruitname | 
+---------+-----------+ 
|  1 | Orange | 
|  2 | Apple  | 
|  3 | Pear  | 
|  4 | Banana | 
+---------+-----------+ 
4 rows in set (0.02 sec) 

我有一个包含表单的视图文件。

这里,我已经在那里用户选择他想要哪些食物,这样的情况下,用户选择“果实”我从桌子水果数据和填充组合框列表....

用户填写的后表格,一些表格将被更新。在这个过程中,我需要从水果表咨询的数据,当用户在食物的列表中选择水果填充组合框....

如果我没有使用笨,我可以用

<?php 
$conn = mysql_connect('localhost','yourUsernameHere','yourPasswordHere'); 
mysql_select_db('testdb',$conn); 
$query = "select fruitid,fruitname from FRUITS order by fruitname"; 
$result = mysql_query($query,$conn); 
$selectbox='<select name=\'fruit\'>'; 
while ($row = mysql_fetch_assoc($result)) { 
    $selectbox.='<option value=\"' . $row['fruitid'] . '\">' . $row['fruitname'] . '</option>'; 
} 

$selectbox.='</select>'; 
mysql_free_result($result); 
echo $selectbox; 
?> 

到填写表单内的组合框,然后捕获该值并将其发送到其他表中插入数据...

我该如何对Codeigniter执行此操作,因为查询必须在控制器文件中完成...?

更新

让我们说我有

模型

class Fruits extends CI_Model { 

    function __construct() 
    { 
     parent::__construct(); 
    } 

    function what_fruits() 
    { 
     $this->db->select('fruitname'); 
     $this->db->from('FRUITS'); 
     $q = $this->db->get(''); 
     if($q->num_rows() > 0) 
     { 
      $data = array(); 
      foreach($q->result() as $row) 
      { 
       $data=$row; 
      } 
      return $data; 
     } 
    } 
} 

控制器

class main_form_view extends CI_Controller 
{ 
    function __construct() 
    { 
     parent::__construct(); 
    } 

    public function index() 
    { 
     $this->load->view('main_form_view'); 
    } 

    public function result() 
    { 
     $this->load->model('Fruits'); 
     $data['fruitname'] = $this->Fruits->what_fruits(); 

    } 
} 

意见main_form_view

<html> 
    <head></head> 
    <body> 
    <form method="post"> 
     <select name="food" id="food" onchange="fill_cb_food(this.value);" > 
      <option value="0">fruits</option> 
      <option value="1">other1</option> 
      <option value="2">other2</option> 
     </select> 

     //response of ajax call display here.??? 
     <div class="selectbox" id="id_fruits"> 
      <select name="fruits" id="fruits"> 
      <option value="">--Choose fruit--</option> 
      </select> 
     </div> 



    </form> 
    </body> 
</html> 



    function fill_cb_food(id) 
    { 
     $.ajax({ 
       type: "POST", 
       url: "main_form_view/result.php, 
       data: "fruit=" + fruitname, 
       success: function(html){ 
        $("#id_fruits").html(html); 
       } 
      }); 
    } 

所以我希望得到一个组合框

Orange  
    Apple  
    Pear  
    Banana 

当用户选择的形式水果选项...

+0

您可以使用Ajax用于此目的,这将击中:

class main_form_view extends CI_Controller { public function index() { $this->load->model('Fruits'); $data['fruits'] = $this->Fruits->what_fruits(); $this->load->view('main_form_view', $data); } } 

,那么你可以在视图文件做控制器方法指向模型方法 – 2013-03-07 07:42:36

回答

2

您可以使用Ajax后获取的数据运行,并填写到您的组合框。 。 像:

  $.ajax({ 
       url: 'http://url_to_fetch_fruit_table_data/', 
       type: "POST", 
       data:data, 
       success: function(response) { 
        $("select").html(response); 
       } 
      }); 

或 您还可以循环使用foraeach填写。

+0

以及如何填充视图文件中的组合框? 'while($ row = mysql_fetch_assoc($ result)){$ selectbox。=''; }什么是模拟? – cMinor 2013-03-07 08:10:05

1

在模型中,您使用'*'选择任何列。

你必须将数据传递到视图文件:

<?php foreach($fruits as $fruit): ?> 
    <option value="<?php print $fruit['fruitid'] ?>"><?php print $fruit['fruitname']</option> 
<?php endforeach; ?> 
相关问题