2012-10-24 42 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)