2013-12-18 27 views
0

我有一個PHP的形式類似如下結構中存在的數據記錄:PHP/MSSQL;插入基於是否對於數組索引

<input type="text" name="code[]" id="code[]" value="<?php echo $code[4] ?>" /> 
<input type="text" name="period[]" id="period[]" value="<?php echo $period[4]; ?>" /> 

有我的形式與這種結構上的五行。我想要做的是,在提交時,如果用戶將數據輸入到這些行中,則只需插入記錄。每一行輸入將產生一個單獨的記錄。如果行是空白的,則不應寫入記錄。現在,我們在for()循環中使用INSERT語句,並且只要索引字段行爲空,它就會插入空白記錄。以下是INSERT語句現在的樣子:

<?php 
for($i=0; $i<=4; $i++) { 
    $new = $con->prepare("INSERT INTO table (code, period) VALUES(:code, :period)"); 
    $data = array('code'=>$_POST['code'][$i],'period'=>$_POST['period'][$i]); 
    $new->execute($data); 
} 
?> 

有沒有辦法完成我想要做的事情?

+0

無論'code'也不'period'應該是空的?或者一個空的是好的? – AbraCadaver

+0

這兩個字段都是必需的,所以它們必須都是空白的,或者兩者都必須填寫。 – Chris

回答

1

如果你想插入來自窗體唯一的非空行,只是檢查是否有東西填充:

<?php for($i=0; $i<=4; $i++) { 
    if(isset($_POST['code'][$i]) && $_POST['code'][$i] != '' && 
     isset($_POST['period'][$i]) && $_POST['period'][$i] != ''){ 
      $new = $con->prepare("INSERT INTO table (code, period) 
      VALUES(:code, :period)"); 
      $data = array('code'=>$_POST['code'][$i],'period'=>$_POST['period'][$i]); 
      $new->execute($data); 
    } 
} 
?> 

注意,如果您發送它們設置空白字段(isset返回true),但它們是空字符串

1

對於這兩個是不爲空(只是改變&&||如果一個人可以爲空):

for($i=0; $i<=4; $i++) { 
    if(!empty($_POST['code'][$i]) && !empty($_POST['period'][$i]) { 
     $new = $con->prepare("INSERT INTO table (code, period) VALUES(:code, :period)"); 
     $data = array('code'=>$_POST['code'][$i],'period'=>$_POST['period'][$i]); 
     $new->execute($data); 
    } 
}