1

假设有一个表 FRUITS:

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

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

在这里,我有一个列表,用户可以在其中选择他想要的食物,所以在用户选择“水果”的情况下,我从表 FRUITS 中获取数据并填写一个组合框....

用户填写表格后,一些表格将被更新。在此过程中,当用户在食物列表中选择水果时,我需要查阅 FRUITS 表中的数据并填写一个组合框....

如果我不使用 Codeigniter,我可以使用

<?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

当用户在表单中选择水果选项时...

4

2 回答 2

2

您可以使用 ajax post 来获取数据运行时并填写到您的组合框.. 像:

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

或者您也可以使用foraeach循环和填充。

于 2013-03-07T07:46:57.413 回答
1

在模型中,您可以使用“*”选择任何列。

您必须将数据传递给视图文件:

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);
    }
}

然后你可以在视图文件中做:

<?php foreach($fruits as $fruit): ?>
    <option value="<?php print  $fruit['fruitid'] ?>"><?php print $fruit['fruitname']</option>
<?php endforeach; ?>
于 2016-06-07T04:10:56.147 回答