【问题标题】:Can't search for existing values in database PHP, Codeigniter无法在数据库 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">

我已经做了关于自动加载模型等的所有事情,或者我相信,我希望你们能帮助我。

【问题讨论】:

标签: php html mysql database codeigniter


【解决方案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 所以我所做的是
  • 这是因为没有从您的数据库中获取数据,您所做的是正确的
猜你喜欢
  • 2011-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-09
  • 2017-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多