2012-10-24 29 views
0

如果用户提交的<input>框之一为空,但我想要处理没有空名称的框,我想要显示一个错误。PHP:在数组中找到空值

这里是形式:http://jsfiddle.net/Draven/rEPXM/27/

PHP:

if(isset($_POST['addFolder'])) 
{  
    foreach($_POST['folder'] as $id => $value) 
    { 
     $database->query('INSERT INTO folders (name) VALUES (?)', array($value)); 
    } 
    $success[] = "Folder(s) added";     
} 
+0

var_dump($文件夹)在if(!empty($ folder))之前''。你得到什么? – zarkoz

+1

@insertusername我在使用PDO,我不需要消毒。 – Draven

+0

@zarkoz我添加了两个输入框,第一个输入框名称为“TEst”,第二个输入框为空。 '数组(2){[0] =>字符串(4)“TEst”[1] =>字符串(0)“”}' – Draven

回答

2

试试如下

foreach($folder as $id => $value) 
{ 
    if($value){ 
     $database->query('INSERT INTO folders (name) VALUES (?)', array($value)); 
    } 
    else { 
     $error[]=$id; 
    } 
} 

$ error包含所有没有值的索引。

+0

这会工作。我会留下一个错误。无论如何可能会混淆人。谢谢。 – Draven

0

if(!isset($folder) || $folder === "")

但我不明白whyyou正在运行的查询,如果您若$folder是空的...

+0

这不会处理有名字的方框。我的代码可能让你感到困惑。我会拿出支票。 – Draven

+0

我不明白。如果这种情况属实,请不要执行查询。或者只是否定表达,如果你想以相反的方式去做。 – thatidiotguy

2

试试这个:

$folder = isset($_POST['folder']) && is_array($_POST['folder']) 
     ? $_POST['folder'] 
     : array(); 
$errors = array(); 
foreach ($folder as $id => $value) { 
    $value = is_array($value) ? '' : trim($value); 
    if ($value == '') { 
     $errors[$id] = 'Empty value'; 
     continue; 
    } 

    $database->query('INSERT INTO folders (name) VALUES (?)', array($value)); 
} 

编辑您的模板:

... 

<div id="foldercontainer"> 
<?php foreach ($errors as $error): ?> 
    <div> 
     <div><?php echo $error ?></div> 
     <input name="folder[]" type="text" size="20" value="" /> 
    </div> 
<?php endforeach ?> 
</div> 

... 
0

补充说了些什么。 如果要测试值是否为空,请使用trim()。你不想来命名具有空值的文件夹,右:?

$folder = array('aaaa', 'bbbb', ' ', ' '); 

foreach($folder as $id => $value) { 
    $value = trim($value); 

    if(!empty($value)) { 
     var_dump($value); 
    } else { 
     $error[]=$id; 
    } 
} 

在一路输出将是:

string 'aaaa' (length=4) 

string 'bbbb' (length=4) 

现在,没有使用TRIM(),并测试它是否不是空的,输出是(并且是一个错误):

string 'aaaa' (length=4) 

string 'bbbb' (length=4) 

string ' ' (length=1) 

string ' ' (length=4)