передать переменные url результатов поиска mysql во 2-й процессор php, чтобы загрузить предпочтительные файлы в zip-файле

SITREP

В середине сборки построителя / загрузчика документов в виде корзины в PHP 5.6.11 и MySqli 5.6.30 в Ubuntu 15.04. Многие детали работают индивидуально, но не вместе.

Таблица базы данных содержит конкретные названия продуктов вместе с соответствующими URL-адресами документации (где PDF-файлы хранятся на сервере).

Вот последовательность событий, продиктованных рабочим процессом конечного пользователя:

  1. Установить сессионный cookie. (Возможно, скрытый iframe). Страница PHP # 1.
  2. Пользователь ищет через форму, отправляет, выводит десятки результатов + сопоставляет URL-адреса из базы данных с флажками. Страница PHP # 1.
  3. Пользователь устанавливает несколько флажков для элементов, которые он хочет загрузить. Страница PHP # 1.
  4. Пользователь ищет больше, проверьте еще несколько пунктов. Страница PHP # 1.
  5. Пользователь нажимает кнопку загрузки. Страница PHP # 1.
  6. Страница PHP № 2 использует $results['url'] Переменные со страницы PHP # 1 в массиве, создает zip, добавляет проверенные файлы и загружает подсказки.

Мне нужно решение для передачи возвращенных переменных URL-адресов $results['url'] из результатов поиска в базе данных на PHP # 1 в массив загрузки процессора PHP # 2.

Страница PHP # 1, запрос:

$raw_results = mysql_query("SELECT * FROM mobilesearchspec
WHERE (`url` LIKE '%".$query."%') OR (`product` LIKE '%".$query."%') ORDER BY product ") or die(mysql_error());

if(mysql_num_rows($raw_results) > 0){ // if one or more rows are returned do following

while($results = mysql_fetch_array($raw_results)){

echo "<p><input type=checkbox name=item[] value=$results[url]>" ; echo "".$results['product']."<br>";
echo "<a href='" .$results['url'] . "'>". $results['url'] . "</a>";

Вот полный код процессора PHP Page # 2 (из решения RajdeepPaul ниже + стирание zip-каталога):

$files = $_POST['item'];

$timestamp = date("M-d-Y_H:i:s"); //$timestamp takes the current time
$zipname = "zip_".$timestamp.".zip"; // add timestamp to the file name
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($files as $file){
$downloaded_file = file_get_contents($file);
$zip->addFromString(basename($file),$downloaded_file);
}
$zip->close();

header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile("$zipname");

// removes zip file from directory after creation
array_map('unlink', glob("*.pdf"));
array_map('unlink', glob("*.zip"));

Я открыт и чрезвычайно благодарен за любые предложения!

1

Решение

Измени свой foreach цикл следующим образом,

foreach ($files as $file){
$downloaded_file = file_get_contents($file);
$zip->addFromString(basename($file),$downloaded_file);
}

Итак, ваш код на Страница 2 должно быть так:

$files = $_POST['item'];

$timestamp = date("M-d-Y_H:i:s"); //$timestamp takes the current time
$zipname = "zip_".$timestamp.".zip"; // add timestamp to the file name
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($files as $file){
$downloaded_file = file_get_contents($file);
$zip->addFromString(basename($file),$downloaded_file);
}
$zip->close();

header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile("$zipname");
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector