从mysql数据库中的多个列压缩和下载多个文件

时间:2016-04-27 10:33:40

标签: php mysql

我有简单的脚本,例如add-to-cart,我可以放置多个文件供以后下载。当用户点击添加到购物车时,我将文件的ID存储在会话中,当他点击下载所有基于ID的存储时,查找数据库表并下载文件。

所有文件都存储在同一个文件夹中,我将名字保存在表格中。我遇到的问题是,在表格中我有3列,其中包含不同的文件(项目)。这是我到目前为止所做的工作,正在为一个专栏工作。问题是如何添加其他两列?

$files = $_SESSION['itemid'];

$valid_files = array();
if(is_array($files)) {
    foreach($files as $file) {

        $sql = "SELECT * FROM document_upload WHERE upload_id = :id"; 
        $result = $pdo->prepare($sql);
        $result->bindParam(":id", $file);
        $result->execute();                 

        $resArray = $result->fetch();

        if (file_exists($filePath . $resArray['upload_lesson_plan'])){
            $valid_files[] = $resArray;
        }
    }    
}
if(count($valid_files > 0)){
    $zip = new ZipArchive();
    $zip_name = "zipfile.zip";
    if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE){
         $error .= "* Sorry ZIP creation failed at this time";
}

foreach($valid_files as $res){
    $zip->addFile($filePath.$res['upload_lesson_plan']);
       // columns that I want to add and take files from...
    //$zip->addFile($filePath.$res['upload_worksheet']);
    //$zip->addFile($filePath.$res['upload_materials']);
}

这些是我想从

获取文件的列
    //$zip->addFile($filePath.$res['upload_worksheet']);
    //$zip->addFile($filePath.$res['upload_materials']);

我尝试了类似这样的东西但是没有用...只是向我显示空白页面并且没有下载任何内容而且没有错误。

if (file_exists($filePath . $resArray['upload_lesson_plan'] || $filePath . $resArray['upload_worksheet'] || $filePath . $resArray['upload_materials']))

它们存储在列中,它们是以逗号分隔的同一列中的多个文件。

2 个答案:

答案 0 :(得分:0)

根据你的说法

  

它们存储在列中,它们是以逗号分隔的同一列中的多个文件。

您可以尝试这种方式。爆炸他们:

delOptions

然后像这样打电话给他们

formatoptions

答案 1 :(得分:-1)

foreach(['upload_lesson_plan', 'upload_worksheet', 'upload_materials'] as $col){
    if (file_exists($filePath . $resArray[$col])){
        $valid_files[] = $resArray[$col];
    }
}