2011-06-15 34 views
0
var a=0; 
function _add_more() { 
    var txt = "<br><input type=\"file\" name=\"item_file[]\"><br><input type=\"text\" name=\"text"+a+"\">"; 
    document.getElementById("dvFile").innerHTML += txt; 
    alert(a); 
    a=a+1; 
} 

我正在使用多個文件上傳和多個標題。我無法將標題中的文本保存在數據庫中。你能請告訴正確的語法$_POST["text"],我應該在哪裏放一個,我是increementing。多個上傳未保存到數據庫

$insert=mysql_query("insert into image_upload set title='".$_POST["text"]."', image='".$filen."'") or die(mysql_error()); 

回答

1

John Boker說的是真的。
但是,您需要遍歷它們以將它們插入到數據庫中。
一個簡單的方法是使name=\"text"+a+"\"name=\"text[]\"(如您的文件上傳元素),
這樣,那麼你將有標題的數組。

所以在PHP中:
foreach($_POST["text"] as $title){
$insert=mysql_query("insert into image_upload set title='".$title."', image='".$filen."'") or die(mysql_error());
}

而且爲什麼不能在JavaScript中使用'!而非逃避" S的?

當您循環播放上傳的文件時,您可能只需循環瀏覽標題。

1

$_POST["text"]沒有定義,字段的名稱是$_POST["text0"]$_POST["text1"]$_POST["text2"],......一個你必須每個輸入。

你應該添加a到一個隱藏的領域,那麼你就會知道你有多少輸入。

0

您可以使用相同的策略,爲您命名您的標題字段,你爲你所做的文件上傳字段:

var txt = "<br><input type=\"file\" name=\"item_file[]\"><br><input type=\"text\" name=\"text[]"\">"; 

通知我他們的名字都text[]。現在在PHP中,我有變量$_POST['text'],它本身就是一個包含所有標題的數組。

訪問的文件以及標題在PHP中,你可以這樣做:

for($i=0; $i<length($_FILES['item_file']); $i++) { 
    print $_FILES['item_file'][$i]['name'] +"<br>"; 
    print $_POST['text'][$i] + "<br>"; 
} 

此外,我不得不告訴你,沒有你輸入正確的驗證執行MySQL的查詢,勢必讓你砍死。請考慮使用:

$insert=mysql_query("insert into image_upload set title='". mysql_real_escape_string($_POST["text"]) ."', image='". mysql_real_escape_string($filen) ."'") or die(mysql_error());