我只想将动态生成的输入字段数据插入数据库。我的数据库表具有三个字段 id(自动递增),product_name和rate 。我正在尝试使用动态生成的输入字段将批量数据插入数据库中,在这里我可以手动添加/删除输入字段。 我将输入字段创建为
<input class="form-control" placeholder="Product Name" name="prodname[]" type="text">
<input class="form-control" placeholder="Product Rate" name="prodrate[]" type="text">
这是我的下面的控制器
function Act_AddProducts() {
if ( $this->input->post( 'prodname' )&&$this->input->post( 'prodrate' )) {
foreach ( $this->input->post( 'prodname' ) as $key => $value ) {
$this->ProductModel->add_products( $value );
}
}
模型功能在下面
function add_products($val)
{
if($this->db->insert('tbl_product_master', array('product_name' => $val)))
{
return true;
}
else
{
return false;
}
}
现在,该值正在一次插入db中。因此,请帮助我确定代码问题。另外,我不太了解如何将 prodrate [] 值插入同一插入查询。
答案 0 :(得分:3)
希望这对您有帮助
您的控制器Act_AddProducts
应该是这样的:
function Act_AddProducts()
{
$prodnames = $this->input->post( 'prodname' );
$prodrates = $this->input->post( 'rate' );
if ( ! empty($prodnames) && ! empty($prodrates) )
{
foreach ($prodnames as $key => $value )
{
$data['product_name'] = $value;
/* make sure product_rate columns is correct i just guess it*/
$data['product_rate'] = $prodrates[$key];
$this->ProductModel->add_products($data);
}
}
}
您的模型add_products
应该是这样的:
function add_products($data)
{
if ( ! empty($data))
{
$this->db->insert('tbl_product_master', $data);
}
}
答案 1 :(得分:0)
只需将输入值直接传递给模型,然后在模型内部使用foreach
function add_products($val)
{
foreach ( $val as $key => $value ) {
$this->db->insert('tbl_product_master', array('product_name' => $value );
}
}
答案 2 :(得分:0)
请尝试
控制器
function Act_AddProducts() {
$product_rate = $data = array();
$product_rate = $this->input->post( 'prodrate' );
$product_name = $this->input->post( 'prodname' )
if ( !empty($this->input->post( 'prodname' ))&&!empty($this->input->post( 'prodrate' ))) {
foreach ( $product_name as $key => $value ) {
$data['product_name'] = $value;
$data['product_rate'] = $product_rate[$key];
$this->ProductModel->add_products($data);
}
}
模型
function add_products($data)
{
$product_name = $data['product_name'];
$product_rate = $data['product_rate'];
if($this->db->insert('tbl_product_master', array('product_name' => $product_name,'product_rate' => $product_rate)))
{
return true;
}
else
{
return false;
}
}
答案 3 :(得分:0)
这仅供您参考。...动态插入的简单示例代码。
defined('BASEPATH') OR exit('No direct script access allowed');
class Checking extends CI_Controller {
public function index()
{
echo "<form method='post' action='". base_url("Checking/save") ."'>";
for($i=0;$i<=5;$i++)
{
echo "<input type='text' name='input_text[]'>";
}
echo "<button type='submit'>Submit</button></form>";
}
public function save(){
foreach($this->input->post("input_text") as $Row){
$this->db->insert("checking",array("input_text"=>$Row['input_text']));
}
}
}
创建一个Checking.php控制器,并运行它。
对于数据库
CREATE TABLE `checking` (
`ch` int(11) NOT NULL AUTO_INCREMENT,
`input_text` varchar(255) DEFAULT NULL,
PRIMARY KEY (`ch`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
答案 4 :(得分:0)
如果您要上传批量记录,请使用insert_batch而不是简单的插入 您的控制器应该是
function Act_AddProducts()
{
$product_rate = $_POST['prodrate'];
$product_name = $_POST['prodname'];
if(!empty($product_rate) && !empty($product_rate)){
$data_array = array();
foreach ($product_rate as $key => $value )
{
$tmp_array = array();
$tmp_array['product_name'] = $value;
$tmp_array['product_rate'] = $product_rate[$key];
$data_array[] = $tmp_array;
}
$this->ProductModel->add_products($data_array);
}
模型应为
function add_products($data)
{
if($this->db->insert_batch('tbl_product_master', $data))
{
return true;
}
else
{
return false;
}
}