"myc", "id" => "myc", "name" => "dro-6ren">
gpt4 book ai didi

php - 通过 codeigniter 中的 Controller 传递给模型?

转载 作者:行者123 更新时间:2023-11-29 21:31:21 25 4
gpt4 key购买 nike

我想从下拉菜单中选择产品类别选项并显示具有该特定类别的产品。

这是我的观点的表单部分:

<?php $attributes = array('method'=>"POST", "class" => "myc",  "id" => "myc", "name" => "dropdwn");
echo form_open_multipart('frontend/home/display', $attributes); ?>
<div class="form-group">

<div class="col-sm-9">
<select class="form-control" name="category" onchange="this.form.submit();" />


<option value="" <?php echo set_select('category', 'zero', TRUE); ?>>Categories...</option>

<option value="phone" >Phones</option>
<option value="laptops">Laptops</option>
<option value="accessories" >Accessories</option>

</select>

</div>
</div>

<?php echo form_close(); ?>

正如你所看到的,我通过 onchange="this.form.submit(); 从下拉菜单中获得了选项(如果这不是一个好主意,请建议其他方法,我只是不想使用ajax,因为我还不太擅长,无论如何建议看起来更好的方法)。

然后在我的 Controller 中,我获得该选项并将其转换为数组,以便在我的模型中使用它。

Controller 部分:

public function display($sort_by='product_id', $sort_order='asc', $offset = 0) 
{
$this->load->model('model_product');
$selected = implode(" ", $this->input->post());
//var_dump($selected);
$results = $this->model_product->fetch($selected, $limit, $offset, $sort_by, $sort_order);
$data['products'] = $results['rows'];
$data['num_results'] = $results['num_rows'];
//and then goes pagination part, I guess no meaning posting it, as it works fine.
}

我的模型:

function fetch($selected, $limit, $offset, $sort_by, $sort_order)
{
$sort_order = ($sort_order == 'desc') ? 'desc' : 'asc';
$sort_columns = array('product_id', 'name', 'description', 'category', 'country', 'price');
$sort_by = (in_array($sort_by, $sort_columns)) ? $sort_by : 'product_id';


//actual results query
$q = $this->db->select('product_id, name, description, category, country, price, img_name, thumb_name')
->from('products')
->where('category', $selected)
->limit($limit, $offset)
->order_by($sort_by, $sort_order);


$ret['rows'] = $q->get()->result();
var_dump($ret['rows']);
die;
//count query
$q = $this->db->select('COUNT(*) as count', FALSE)
->from('products');

$tmp = $q->get()->result();
$ret['num_rows'] = $tmp[0]->count;
return $ret;
}

这里我没有得到任何结果,可能是因为 where 子句没有返回结果。但是,如果我更改 where 子句,例如 ->where('category', 'phones') 它只显示电话。 那么如何正确地将选定的值传递给查询呢?

最佳答案

我会帮助你。查看文件

 <div class="box-header">
<h3 class="box-title">Enter Category Details</h3>
</div>

<?php
echo validation_errors(); $attributes = array('id' => 'formCategory','name'=>'formCategory');
?>
<?php echo form_open_multipart(base_url().'moderator/B2BCategory/addcategory'); ?>

<div class="box-body">
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label for="txtcatname">Title of Category :</label>
<input type="text" name="txtcatname" class="form-control" id="txtcatname" placeholder="Category Name " required="required">
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label for="categorysection">Section of the Category :</label>
<select class="form-control" name="categorysection" required>
<option value="" >----Select------</option>
<option value="1">Laptop</option>
<option value="2">Phone</option>
<option value="3">Accessories</option>

</select>
<input type="submit" name="selsub" class="btn btn-primary">
</div>
</div>


</div>

Controller

  public function addcategory() {
$this->load->helper(array('form', 'url'));
$this->load->view('moderator/templates/header');
$this->load->view('moderator/templates/sidebar');
if ($this->input->post('selsub')) {
$data = array('ctg_name' => $this->input->post('categorysection'));
$this->b2bcategory_model->form_insert($data);
}

在模型中

public function form_insert($data){

$this->db->insert('jil_category', $data);
}

要显示表格的输出,只需使用

 public function viewall()
{

$this->db -> select('*');
$this -> db -> from('jil_category');
$query = $this -> db -> get();
return $query->result();

}

关于php - 通过 codeigniter 中的 Controller 传递给模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35228814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com