无法在数据库 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 taginput 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

PHP | Codeigniter 重定向 |无法修改标头信息

无法在 Codeigniter 中删除 index.php

无法在 codeigniter 中提交数据

无法在 Codeigniter 中使用包含函数文件

Codeigniter 无法连接到外部 SQL Server