我有一个简单的脚本,比如添加到购物车,我可以在其中放置多个文件以供以后下载。当用户单击添加到购物车时,我将文件的ID存储在会话中,当他单击下载所有基于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']))
它们存储在列中,并且是同一列中的多个文件,以逗号分隔。
根据你所说的
它们存储在列中,并且是同一列中的多个文件,以逗号分隔。
你可以试试这种方式。用爆炸它们:
foreach($resArray as $col){
$items = explode(',', $col);
foreach ($items as $item) {
if (file_exists($filePath . trim($item))){
$valid_files[] = $filePath . trim($item);
}
}
然后这样称呼他们
foreach($valid_files as $res){
$zip->addFile($res);
}
只是
foreach(['upload_lesson_plan', 'upload_worksheet', 'upload_materials'] as $col){
if (file_exists($filePath . $resArray[$col])){
$valid_files[] = $resArray[$col];
}
}