2010-12-14 8 views
0

HTML :서버 측 폼 유효성 검사 PHP 업로드

: "+ 버튼"

에 클릭 내가 가진 POST 필드를 계산 할 때 같은 필드를 복제 기능 파크

Owner: input type="text" name="owner[]" /> 
Category: 
<select name="cat[]"> 
     <option value="clothes">Clothes</option> 
     <option value="shoes">Shoes</option> 
     <option value="accessories">Accessories</option> 
</select> 
Upload: <input type="file" name="image[]" /> 

$num = count($_FILES['image']['name']); 

최종 사용자가 필드를 복제 한 횟수를 알고 싶기 때문입니다.

내가 원하는 것은 사용자가 "+ 버튼"이있는 모든 필드를 채워야합니다. 숨겨진 필드를 모두 확인하고 싶습니다. 필드를 확인하고 싶습니다.

그래서 무엇을 할 수 있습니까?

내가 같이 할 어차피 :

$owner = $_POST['owner'][$i]; 
$cat = $_POST['cat'][$i]; 
$file = $_FILES['image'][$i]; 

if ($owner && $cat && $file) 
    echo "bla bla bla"; 
else 
    echo "fill all the fields!"; 

누구든지 나를 도울 수 있습니까?

는 사전에 확인해야 할 몇 가지 포인트가 있습니다 당신에게

답변

3

감사합니다. 입력 필드의 name 속성을 ""또는 "cat[]"또는 "image[]"으로 사용할 때마다 배열이 생성됩니다. 그러나 입력 파일의 속성 액세스 기능은 기본적으로 이미 2D 배열이므로 3D 배열로 해당 속성에 액세스 할 수 있습니다. 당신은 배열 인덱스가 귀하의 질문 사항에 따라 0부터 시작하기 때문에 "[]"입력 파일 필드의 name 속성, 당신은 이제 1 파일의 이름을 얻을 것이다 "$_FILES['image'][0]['name']", 당신은 확인할 수 추가 한

-

<?php 
$numOwners = count($_POST['owner']); 
$numCats = count($_POST['cat']); 
$numFiles = count($_FILES['image']); 

// Check to see if the number of Fields for each (Owners, Categories & Files) are the same 
if ($numFiles === $numCats && $numFiles === $numOwners) { 
    $boolInconsistencyOwners = FALSE; 
    $boolInconsistencyCats = FALSE; 
    $boolInconsistencyFiles = FALSE; 

    for ($i = 0; $i < $numFiles; $i++) { 
     if (empty($_POST['owner'][$i])) { 
      $boolInconsistencyOwners = TRUE; 
      break; 
     } 

     if (empty($_POST['cat'][$i])) { 
      $boolInconsistencyCats = TRUE; 
      break; 
     } 

     if (!is_uploaded_file($_FILES['image'][$i]['tmp_name'])) { 
      $boolInconsistencyFiles = TRUE; 
      break; 
     } 
    } 

    if ($boolInconsistencyOwners || $boolInconsistencyCats || $boolInconsistencyFiles) { 
     echo "I knew that there will be some problems with users' mentality!"; 
     // Redirect with proper Error Messages 
    } 
    else { 
     echo "Wow, Users have improved & have become quite obedient!"; 
     // Proceed with normal requirements 
    } 
} 
else { 
    echo "Something fishy is going on!"; 
} 
?> 

희망이 도움이 될 것입니다.

+1

정말 감사합니다.이 코드를 작성하는 데 시간을 내 주셔서 감사합니다. 관심을 가져 주셔서 감사드립니다.하지만 불행히도 도움을주지 못했습니다. 실제로 답변과 작업 전 자신의 코드를 작성했습니다. 낭비를 위해 죄송합니다. 너의 시간 .... – Swell

+0

@Swell - 그건 괜찮아. 필요한 것은 올바른 작업 코드를 사용하는 것뿐입니다. 또한 나는 당신의 겸손에 감사드립니다. 한 가지 더 할 수있는 것은 코드를 답으로 쓰고 올바른 것으로 표시하거나 내 대답을 올바른 것으로 표시 할 수 있다는 것입니다. 이것은 다른 SO 사용자가 이미 해결되었으므로 더 이상이 질문에 대한 답변을 제공 할 필요가 없다는 것을 알게되기 때문입니다. 당신이 나의 요점을 이해하기를 바랍니다. 감사! –

+0

감사합니다. SO 사용자가 대화를 읽었을 때 내 문제가 해결되었음을 알게되었습니다. 감사합니다. – Swell

관련 문제