假设有一个表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();
}
}
<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 :(得分:2)
您可以使用ajax post来获取数据运行时并填充到您的组合框中。 像:
$.ajax({
url: 'http://url_to_fetch_fruit_table_data/',
type: "POST",
data:data,
success: function(response) {
$("select").html(response);
}
});
或 您也可以使用 foraeach 进行循环和填充。
答案 1 :(得分: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; ?>