簡體   English   中英

使用php空字段在多行中插入表單值

[英]Inserting form values in multiple row using php empty fields

我需要一點幫助。 我有以下代碼。 我希望當所有字段都未完成時,不要在數據庫中引入空字段。 只需上傳完成的文件即可。

for($i = 0; $i <count($_POST)+3; $i++){
    mysql_query("INSERT INTO `predare`(`id_factura`,`id_student`, `id_produs`, `cantitate`) 
    VALUES('".$_POST['id_factura'][$i]."','".$_POST['id_student'][$i]."', '".$_POST['id_produs'][$i]."', '".$_POST['cantitate'][$i]."');");
}

<input class="input-1" name="cantitate[]" id="cantitate" value="">
<input class="input-1" name="id_factura[]" id="id_factura" value="">
<input class="input-1" name="id_student[]" id="id_student" value="">
<input class="input-1" name="id_produs[]" id="id_produs" value="">

這是我建議這樣做的方式。 首先初始化您的SQL字符串和分隔符(用於通過一個查詢插入多個記錄。)

$sql = "INSERT INTO `predare` (`id_factura`,`id_student`, `id_produs`, `cantitate`) VALUES ";
$separator = '';

然后在提交的行上循環,如果行具有所有四個值,則追加到SQL字符串。

for ($i = 0; $i < count($_POST['cantitate']); $i++) {
    $values = array(); 
    foreach (array('id_factura', 'id_student', 'id_produs', 'cantitate') as $column) {
        // only add values to the $values array if something has been entered
        // (empty fields will be present as '', which evaluates to false)
        if ($_POST[$column][$i]) $values[] = $_POST[$column][$i];
    }
    if (count($values) == 4) { // only add the values to the SQL if all fields are present
        $sql .= "$separator ('" . implode("','", $values) . "')";
        $separator = ',';
    }
}

然后,您可以執行SQL語句一次插入所有完整記錄。

如果要包括不完整(但不為空)的行,則可以使用if ($values) {...代替if (count($values) == 4) {...

以這種方式設置它的好處是,將代碼轉換為使用帶有預准備語句的更好的數據庫擴展(例如PDO)會更容易,而不是像這樣將值串聯到SQL中。

您需要遍歷$ _POST ['id_factura']數組,並且需要在插入語句之前檢查值,如下所示:

for($i = 0; $i <count($_POST['id_factura']); $i++){
   if(isset($_POST['id_factura'][$i]) && isset($_POST['id_student'][$i]) && isset($_POST['id_produs'][$i]) && isset($_POST['cantitate'][$i])){
    mysql_query("INSERT INTO `predare`(`id_factura`,`id_student`, `id_produs`, `cantitate`) 
    VALUES('".$_POST['id_factura'][$i]."','".$_POST['id_student'][$i]."', '".$_POST['id_produs'][$i]."', '".$_POST['cantitate'][$i]."');");
    }
}

或者您可以檢查整數值是否大於0 ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM