无法在数据库 PHP、Codeigniter 中搜索现有值
Posted
技术标签:
【中文标题】无法在数据库 PHP、Codeigniter 中搜索现有值【英文标题】:Can't search for existing values in database PHP, Codeigniter 【发布时间】:2017-06-04 23:31:04 【问题描述】:这是我第一次使用 CodeIgniter 和 php,所以我很迷茫,我想做的是显示一个包含数据库中所有元素的表格,然后通过输入和提交按钮搜索现有产品 但是每当我提交查询时,什么都不会显示。
这是我的控制器。
<?php
class HomeController extends CI_Controller
function index()
$this->load->model('HomeModel');
$data ['info'] = $this->HomeModel->getData();
// $config = array();
$this->load->view('HomeView',$data);
public function search_product()
$this->load->model('HomeModel');
$nombre_producto = $this->input->post('search');
if (isset($nombre_producto) and !empty($nombre_producto))
$data ['db_simbo'] = $this->HomeModel->search_product($nombre_producto);
$this->load->view('HomeView',$data );
else
redirect($this->index());
这是我的模特
<?php
class HomeModel extends CI_Model
public function getData()
$query = $this->db->get('db_simbo');
return $query->result();
public function search_product($nombre_producto)
$this->db->select('*');
$this->db->from('db_simbo');
$this->db->like('nombre_producto',$nombre_producto);
$query = $this->db->get();
if ($query->num_rows() > 0)
return $query->result();
else
return $query->result();
这是我的家庭视图的一部分,我认为它会造成麻烦
<input name="user id" value="<?php echo $inf->id;?>"/>
<?php ?>
</td>
<td> <?php foreach($info as $inf)?>
<input name="nombre_producto" value="<?php echo $inf->nombre_producto;?>"/>
<?php ?>
</td>
<td> <?php foreach($info as $inf)?>
<input name="proveedor" value="<?php echo $inf->nombre_proveedor;?>"/>
<?php ?>
</td>
<td> <?php foreach($info as $inf)?>
<input name="descripción" value="<?php echo $inf->descripción;?>"/>
<?php ?>
</td>
<td> <?php foreach($info as $inf)?>
<input name="precio" value="<?php echo $inf->precio;?>"/>
<?php ?>
</td>
</tbody>
</table>
<div>
<input type = "text" name="search" id="search" placeholder="id"/>
<button type = "submit" name="submit">Buscar</button>>[enter
这是我添加表单的地方
<form action="<?php echo base_url().'HomeController/search_product'; ?>" method="post">
我已经做了关于自动加载模型等的所有事情,或者我相信,我希望你们能帮助我。
【问题讨论】:
你为什么有这么多foreach? 您已经有表格了吗?您必须有一个表单并在表单 attr action 中指向控制器的 url 请检查我的回答好吗? 每个 foreach 都是为了填充表格,因此每列都将填充所有可用数据,是的,我有一个类似这样的表单 看看这里codeigniter.com/user_guide/general/styleguide.html#file-naming文件和类命名方法和codeigniter.com/user_guide/index.html#general-topics 【参考方案1】:试一试..
您必须添加form tag
和input type
function index()
$this->load->model('HomeModel');
$data ['info'] = $this->HomeModel->getData();
// $config = array();
$this->load->view('HomeView', $data);
public function search_product()
$this->load->model('HomeModel');
$nombre_producto = $this->input->post('search');
if (isset($nombre_producto) and ! empty($nombre_producto))
$data ['db_simbo'] = $this->HomeModel->search_product($nombre_producto);
$this->load->view('HomeView', $data);
else
redirect($this->index());
这是我的模型
class HomeModel extends CI_Model
public function getData()
$query = $this->db->get('db_simbo');
return $query->result();
public function search_product($nombre_producto)
$this->db->select('*');
$this->db->from('db_simbo');
$this->db->like('nombre_producto', $nombre_producto);
$query = $this->db->get();
if ($query->num_rows() > 0)
return $query->result();
else
return $query->result();
<form method="POST">
<td>
<?php foreach($info as $inf) ?>
<input name="proveedor" value="<?php echo $inf->nombre_proveedor; ?>"/>
<?php ?>
</td>
<td>
<?php foreach($info as $inf) ?>
<input name="descripción" value="<?php echo $inf->descripción; ?>"/>
<?php ?>
</td>
<td>
<?php foreach($info as $inf) ?>
<input name="precio" value="<?php echo $inf->precio; ?>"/>
<?php ?>
</td>
</tbody>
</table>
<div>
<input type = "text" name="search" id="search" placeholder="id"/>
<input type = "submit" name="submit" value="Buscar">[enter image description here][1]
</div>
</form>
【讨论】:
你的意思是为每个输入添加输入类型,因为我确实在我试图进行搜索的地方添加了输入,但我没有为我声明的每个输入添加类型 @K.vai 您只需在按钮类型提交中添加输入类型【参考方案2】:试试这个:
控制器
class HomeController extends CI_Controller
function index()
$this->load->model('HomeModel');
// $config = array();
if($this->input->post() != '')
$nombre_producto = $this->input->post('search');
if (isset($nombre_producto) and !empty($nombre_producto))
$data ['info'] = $this->HomeModel->search_product($nombre_producto);
else
$data ['info'] = $this->HomeModel->getData();
$this->load->view('HomeView',$data);
在您的视图中尝试将您的表单操作网址更改为:
<form action="<?php echo base_url().'HomeController/index'; ?>" method="post">
在您的表中尝试以下代码:
<?php foreach($info as $inf)?>
<tr>
<td>
<input name="user id" value="<?php echo $inf->id;?>"/>
</td>
<td>
<input name="nombre_producto" value="<?php echo $inf->nombre_producto;?>"/>
</td>
<td>
<input name="proveedor" value="<?php echo $inf->nombre_proveedor;?>"/>
</td>
<td>
<input name="descripción" value="<?php echo $inf->descripción;?>"/>
</td>
<td>
<input name="precio" value="<?php echo $inf->precio;?>"/>
</td>
</tr>
<?php ?>
【讨论】:
哦,谢谢你,它确实有效,现在一开始并没有显示数据库的所有元素,我应该使用另一种方法而不是我以前使用的方法吗?谢谢你的查询确实有效。 只使用一个foreach 我为您的表格视图更新了上面的代码,试试吧 嘿,谢谢你的回答,我试过你的代码,它仍然显示没有数据的表,我不得不为一些未定义的变量信息问题更改 foreach 所以我所做的是 这是因为没有从您的数据库中获取数据,您所做的是正确的以上是关于无法在数据库 PHP、Codeigniter 中搜索现有值的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 PHP Codeigniter 连接 SQL Server