0

如果用户提交的其中一个框为空,我想显示错误<input>,但我也想处理没有空名称的框。

这是表格: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";                 
}
4

4 回答 4

2

尝试如下

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

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

于 2012-10-24T16:03:30.210 回答
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>

...
于 2012-10-24T16:11:09.443 回答
0

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

但我不明白如果你$folder是空的,为什么你要运行查询......

于 2012-10-24T15:58:29.760 回答
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)
于 2012-10-24T16:30:22.883 回答