2011-06-07 82 views
1

我是PHP新手,想知道如何實現以下結果。多文件上傳問題

我有一個HTML表單上傳多個文件(僅限PDF),最多可以說5個文件。 對於每個文件,它有一個用於選擇不同用戶(從數據庫檢索)的選擇標籤,以及另一個選擇標籤用於不同的月份。理想情況下,如果用戶逐個選擇文件,而不是在中間跳過任何文件,這並不複雜。

<input type=file name=pdf[] /> 
<select name=user[]> 
    <option value=a>user a</option> 
    <option value=b>user b</option> 
    <option value=c>user c</option> 
</select> 
<select name=month[]> 
    <option value=jan> jan </option> 
       . 
       . 
       . so on 
</select> 

例子:

File1.pdf --- UserA --- Jan 
File2.pdf --- UserB --- Feb 
Not choose --- 
File4.pdf --- UserA --- Mar 
Not choose --- 

當我點擊submit,該數據包含多個陣列在這裏,一個從$_POST,從$_FILES一個又一個,所以,我怎麼能recontruct和這些陣列組合成新陣列,並消除那些空的。

像:

Array(
[0]=> Array(user=>userA, month=>Jan, filename=>File1.pdf, type=>application/pdf, size=>1234456) 
[1]=> Array(user=>userB, month=>Feb, filename=>File2.pdf, type=>application/pdf, size=>1234456) 
[2]=> Array(user=>userA, month=>Mar, filename=>File4.pdf, type=>application/pdf, size=>1234456) 
) 

在此先感謝!

回答

-1

只要給你的領域更好的名稱:

result[0][user]result[0][month]result[0][pdf]
result[1][user]result[1][month]result[1][pdf]

然後,只需將文件重新組合成結果:

$results = $_POST['result']; 
foreach ($results as $i => &$result) { 
    if (isset($_FILES['result'][$i]['pdf']) && is_array($_FILES['result'][$i]['pdf'])) { 
     $result = array_merge($result, $_FILES['result'][$i]['pdf']); 
    } 
} 
+0

您好,感謝您及時回覆。我改變爲urs,但是我有第二個參數isn的問題; t數組:() – jasper 2011-06-07 07:15:53

+0

@jasper請參閱更新。您可能需要進一步自定義以適合您的需求,但我希望您明白。 – deceze 2011-06-07 07:43:17