在PHP数据库中插入jQuery转发器行

时间:2017-01-30 13:30:45

标签: php pdo repeater

我有1行有5个表单字段。用户可以添加/删除行。它可重复排。 现在我想用PDO php将这些字段存储到数据库中。

对于正常值我正在使用此代码,但我对转发器字段感到困惑。

$data = array(
    'bill_no' => trim($_REQUEST['bill_no']),
    'from_name' => trim($_REQUEST['from_name']),
    'to_name' => trim($_REQUEST['to_name']),
    'date' => trim($_REQUEST['date_bill']),
    'mr_or_ms' => trim($_REQUEST['mr_or_ms']),
);

if($crud->InsertData("bill",$data)) {
    header("Location: add-bill.php");
}

插入功能:

public function InsertData($table,$fields) {
    $field = array_keys($fields);

    $single_field = implode(",", $field);
    $val = implode("','", $fields);

    try {
        $query = $this->db->prepare("INSERT INTO ".$table."(".$single_field.") VALUES('".$val."')");

        $query->execute();
        return true;
    } catch(PDOException $e) {
        echo "unable to insert data";
    }
}

请帮我插入字段。感谢

2 个答案:

答案 0 :(得分:1)

更改表单字段的名称,将[]添加到末尾以获取PHP数组。例如,将bill_no更改为bill_no[]。像这样:

foreach($_REQUEST['bill_no'] as $row_number => $row_content){
   $data = array(
    'bill_no' => trim($_REQUEST['bill_no'][$row_number]),
    'from_name' => trim($_REQUEST['from_name'][$row_number]),
    'to_name' => trim($_REQUEST['to_name'][$row_number]),
    'date' => trim($_REQUEST['date_bill'][$row_number]),
    'mr_or_ms' => trim($_REQUEST['mr_or_ms'][$row_number]),
  );
  $crud->InsertData("bill",$data);
}

这假设浏览器没有混合字段的顺序,因此在添加行时,最好在表单字段中添加唯一名称。

此外,根本没有输入数据验证,请确保您正确地转发所有数据。

答案 1 :(得分:1)

我用这种方法做到了。

$total=count($_POST['description']);
for($i=0; $i<$total; $i++){
    $data1 = array(
        'bill_no' => trim($_POST['bill_no']),
        'description' => trim($_POST['description'][$i]),
        'nos' => trim($_POST['nos'][$i]),
        'nos_day' => trim($_POST['nos_day'][$i]),
        'pay' => trim($_POST['pay'][$i]),
        'weekly_off' => trim($_POST['weekly'][$i]),
        'hra' => trim($_POST['hra'][$i]),
        'rs' => trim($_POST['rs'][$i]),
        'ps' => trim($_POST['ps'][$i]),

    );
    $crud->InsertData("bill_details",$data1);
}