2014-03-07 237 views
0

我正在爲我的工作室創建一個用於我的工作表程序的新表單。我有一個工作表工作所需的形式與4個領域輸入。這些被命名爲work1,work2,work3和work4。它需要這些並寫入數據庫表jobcardwork。這有兩個領域,jobcard和工作。我希望它只寫字段不爲空,因爲可能不是所有3行都有文本。我的代碼是這樣的。html多個輸入字段

$a = array($work1, $work2, $work3, $work4); 

foreach ($a as $b) 

{ 

$sql6 = "INSERT INTO jobcardwork (Jobcard,Work)VALUES('2','$b')"; 
$result6=mysql_query($sql6); 

} 

這個工作,但即使沒有在框中沒有任何東西,它會寫。結果是。

id  jobcard work 
14  2  
15  2   linda 
16  2   dan 

,你可以看到,它寫的第一線,進入jobcard數量,但有在框中沒有文本,它已經離開了這個空。請幫忙。謝謝。 p.s我知道mysql是舊的,但我開始在mysqli和PDO之前寫它。抱歉。

+0

你需要添加一些有條件的邏輯,因此,例如。如果'$ b!=「」'然後插入,否則做別的。儘管你應該首先清理字符串,而不是直接插入'POST'數據。 –

回答

0

解決方案,而iffing:

$a = array($work1, $work2, $work3, $work4); 
foreach (array_filter($a) as $b) { 
    $sql6 = "INSERT INTO jobcardwork (Jobcard,Work)VALUES('2','$b')"; 
    $result6=mysql_query($sql6); 
} 

http://lt1.php.net/array_filter

+0

嗨。我也嘗試了你的解決方案,但它清除了我的表單,並沒有做任何事情。我錯過了什麼嗎? – user3289239

+0

你和我的代碼之間的唯一區別是'array_filter()'調用,它將過濾掉空字符串,空值和錯誤值。你可以用'var_dump(array_filter($ a))'和'var_dump($ sql6)'調試這些值來獲得更多的見解。 – mirelon

+0

感謝這個網站的所有幫助。過去你曾經有過很多次的幫助,我開始更加了解這個節目。我是一名貿易數控機械師,所以這對我來說非常陌生。再次感謝!!!! – user3289239

0

您的代碼可以更被很多優化,編寫更安全,但它不是這個問題的話題,讓你快速解決應該是這樣的:

$a = array($work1, $work2, $work3, $work4); 
foreach ($a as $b) { 
    if($b!="") { 
    $sql6 = "INSERT INTO jobcardwork (Jobcard,Work)VALUES('2','$b')"; 
    $result6=mysql_query($sql6); 
    } 
} 
+0

嗨,謝謝你的幫助。我試過這個,但它清除了我的表格,並沒有做任何事情。我錯過了什麼嗎? – user3289239

0

正確的方法是去除多餘的空格,擺脫sql攻擊,然後檢查文本是否仍爲空。

檢查mysql_real_escape_stringtrim方法。最終的代碼將如下所示。

$result = array(); 
foreach ($a as $b) 
{ 
    $b = mysql_real_escape_string(trim($b)); 

    if($b != '') 
    { 
     $sql = "INSERT INTO jobcardwork (Jobcard,Work)VALUES('2','$b')"; 
     $result[] = mysql_query($sql); 
    } 

} 
var_dump($result);