2013-03-26 97 views
0

我有一個文件驗證過程,通過進行ajax調用來檢查文件名是否已經在數據庫中。如果在existing-filenames.php中只有1個文件名被回顯,這是有效的,但是我無法弄清楚如何循環返回數據來檢查多個文件輸入中的每個文件名對應來自existing-filenames.php的每個結果循環。任何建議非常感謝。感謝檢查存在的文件名對多個文件輸入

var file = $('#file')[0]; 
$.get('existing-filenames.php', function(data){ 

    for (var i=0; i<file.files.length; i++) { 
     var fname = file.files[i].name; 

     if(fname == data){ 
      alert("these files already exist:" + data); 
      return false; 
     } 
     } 
    }); 

和現有的-filenames.php'

$allfiles = $db->query("SELECT filename FROM files WHERE email = '$_SESSION[email]'"); 

    while($result = $allfiles ->fetch_assoc()) { 
    echo $result['filename']; 
} 

回答

1

在你的PHP文件,你只是打印所有文件路徑沒有空格或新行。 此外,您應該使用準備的語句爲您的查詢,包括$_SESSION['email']沒有任何檢查是不安全的。

順便說一句,請編輯你的PHP文件是這樣的:

$allfiles = $db->query("SELECT filename FROM files WHERE email = '$_SESSION[email]'"); 

$fileList = array(); 
while($result = $allfiles ->fetch_assoc()) { 
    $fileList[] = $result['filename']; 
} 

echo json_encode($fileList); 

而且你的JS代碼:

$.get('existing-filenames.php', function(data){ 
     for (var i=0; i<file.files.length; i++) { 
     var fname = file.files[i].name; 

     if(data.indexOf(fname) >= 0){ 
      alert("these files already exist:" + data); 
      return false; 
     } 
     } 
    }, 'json'); 

沒有測試,但它應該工作

+0

感謝,工程巨大。你碰巧知道如何製作它,以便它只列出已被選擇的文件。現在如果警報被觸發,它將列出所有的文件。 – user2014429 2013-03-26 17:24:24

+0

如何選擇文件?你能發佈你的代碼嗎? – Uby 2013-03-26 17:29:13

+0

文件輸入是這樣的: user2014429 2013-03-26 17:33:07

1

嘗試改變你的JS到:

var file = $('#file')[0]; 
$.getJSON('existing-filenames.php', function(data){ 

    for (var i=0; i<file.files.length; i++) { 
    var fname = file.files[i].name; 

     if(~data.indexOf(fname)){ 
     alert("these files already exist:" + data); 
     return false; 
     } 
    } 
}); 

並在你的PHP文件中:

$result = []; 
while($files = $allfiles ->fetch_assoc()){ 
    $result[] = $files['filename']; 
} 
echo json_encode($result); 

......我想。我幾乎沒有寫過PHP。

+0

'fname == data [i]'只會檢查'data'列表中的1個元素 – Uby 2013-03-26 17:28:01

+0

啊,對。固定。謝謝。 – 2013-03-26 17:32:34

+0

謝謝,夥計。測試和運行良好。 +1 – user2014429 2013-03-26 17:42:32

1
var fileNames = $('.file-name').text(); 

fileNames.forEach(function(fileName){ 
    $.get('url',{filename: fileName},function(data){ 
        .... 
     }); 
}); 

我的做法會得到文件名到一個數組,每一次拍使用不同的參數GET請求