2012-10-24 6 views
0

사용자가 제출 한 <input> 상자 중 하나가 비어 있으면 오류를 표시하고 싶지만 빈 이름이없는 상자도 처리하고 싶습니다. http://jsfiddle.net/Draven/rEPXM/27/PHP : 배열에서 빈 값 찾기

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 ($ folder) before if (! empty ($ folder))'. 뭐라 구요? – zarkoz

+1

@insertusernamehere PDO를 사용하고 있는데, 위생 처리 할 필요가 없습니다. – Draven

+0

@ zarkoz 두 개의 입력 상자를 추가했습니다. 첫 번째 입력란에는 "TEst"라는 이름이 붙었고 두 번째 입력란은 비어있었습니다. (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 === "")

하지만 난 당신이 $folder이 비어있는 경우 경우에 죽었 기 쿼리를 실행하는 이해가 안 돼요 ...

+0

이름이있는 상자를 처리하지 않습니다. 내 코드가 너를 혼란스럽게 만들었다. 내 수표를 꺼내 줄께. – Draven

+0

이해가 안됩니다. 이 조건이 true이면 쿼리를 수행하지 마십시오. 또는 반대 방향으로하려면 표현식을 무효화하십시오. – 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) 

을 지금, 그것은 경우 트림() 테스트를 사용하지 않고 (비어 있지 않은 경우) 출력은 다음과 같습니다.