2016-04-27 16 views
0

私は後でダウンロードするために複数のファイルを置くことができるadd-to-cartのような単純なスクリプトを持っています。ユーザーがカートに追加をクリックすると、セッションのファイルのIDが保存され、IDを基にすべてをダウンロードするをクリックすると、データベーステーブルにルックアップされ、ファイルがダウンロードされます。mysqlデータベースの複数の列から複数のファイルをジップしてダウンロードする

すべてのファイルは同じフォルダに保存されていますが、その名前はテーブルに保存されています。私が直面した問題は、テーブル内に異なるファイル(項目)を保持する3つの列があることです。これは私が今までに持っていて、1つのコラムのために働いているものです。質問は他の2つの列を追加する方法ですか?

$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'])) 

これらは列に格納され、同じ列に複数のファイルがカンマで区切られています。

答えて

0

あなたは彼らが列に格納され、それらが分離された同じ列のカンマで複数のファイルである

を言った内容に応じて。

この方法で試すことができます。不正な文字列オフセット「upload_materials」、「upload_lesson_plan」、「upload_worksheet'`: - `警告

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); 
} 
-1

だけ

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

感謝の答えのためのようにそれらを呼び出すことが、私はエラーを得た:爆発彼らと –

+0

複数のファイルも列に保持されていることに注意してください。問題がある場合はカンマで区切ります。 –

+0

私は確信していませんが、この 'foreach($ valid_files as $ res){$ zip-> addFile($ filePath。$ res); ..}を変更して、 –

関連する問題