2014-03-07 180 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);