За последние 24 часа нас посетили 16540 программистов и 1679 роботов. Сейчас ищут 864 программиста ...

Создание архивов zip на лету

Тема в разделе "Прочие вопросы по PHP", создана пользователем siuzi_drum, 18 янв 2012.

  1. siuzi_drum

    siuzi_drum Активный пользователь

    С нами с:
    18 янв 2012
    Сообщения:
    14
    Симпатии:
    0
    Здравствуйте! У меня есть код, который создает архив
    Первый кусок кода -


    Код (Text):
    1.  
    2. $zipForm = '<form method="post" action=""><input type="submit" name="crAr" value="Создать архив"></form>';
    3. $goZip = $_POST['crAr'];
    4. $zipTable = $dbPer.'zip';
    5. $i = 1;
    6. $zipName = '№'.$i;
    Ну и само создание архива.



    Код (Text):
    1.  
    2. if ($goZip){   // если нажата кнопка создать архив
    3.                                  // Создаем архив и добавляем в него все файлы из директории
    4.                                 $zip = new ZipArchive;
    5.                                 $res = $zip -> open($fullZipName, ZipArchive::CREATE);
    6.                                 if ($res === TRUE)
    7.                                 {
    8.                                 $dir = opendir( "./$uploaddir" );
    9.                                 chdir( "./$uploaddir" );
    10.          
    11.                                 while( $d = readdir( $dir ) )
    12.                                                             {
    13.                                                             if( is_file( $d ) )
    14.                                                             {
    15.                                 echo "Добавляем в архив файл ".$d." размером ".filesize( $d )."";
    16.                                 $zip -> addFile( $d, $d);  
    17.                                                             }
    18.                                                             }
    19.                                 $zip -> close();
    20.                                 closedir( $dir );
    21.                                 echo '<p>Файлы добавлены в архив</p>';
    22.                                 }
    23.  else
    24.  {
    25.      echo '<p>Ошибка</p>';
    26.  }
    27.                                 }
    Так как я знаком с пхп всего лишь 2 дня(это образно=)), не могу понять, как мне реализовать функцию, чтоб при нажатии на кнопку создать архив, создавался архив под номером 1, второй раз нажимаешь на эту же кнопку, создается архив номер 2(предварительно проверив если файлы одинаковые, то не создавать этот архив)
    нажимаешь еще раз - архив номер 3..... и так до потери пульса...

    Если знаете пути решения - помогите с этим вопросом.
    Заранее благодарен.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в гугл напиши - получить листинг директории. это тривиальная задача которая уже имеет пару-тройку готовых решений. и добавляй единичку к последнему имени файла, который найдешь.
     
  3. asokol

    asokol Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    162
    Симпатии:
    0
    Если архивов будет очень много, то лучше создать текстовый файлик, в котором хранить номер последнего или следующего архива.
     
  4. siuzi_drum

    siuzi_drum Активный пользователь

    С нами с:
    18 янв 2012
    Сообщения:
    14
    Симпатии:
    0
    Спасибо!=) У меня не в файл. у меня названия архивов пишутся в БД
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тогда можно иметь в качестве названия прямо номер из бд
     
  6. siuzi_drum

    siuzi_drum Активный пользователь

    С нами с:
    18 янв 2012
    Сообщения:
    14
    Симпатии:
    0
    Напишу не знаю этих терминов, жаль =)
    А с кодом ес что помочь сможешь?
    Если вообще капут будет. Думаю такого не должно быть.
    selectom вытаскивать и делать проверку - если есть $имяфайла, то $имяфайла = $имяфайла+1 ?
     
  7. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Таблица, в которой хранятся данные о файлах (архивах) - должна иметь поле AUTO_INCREMENT (там хранятся ID файлов).
    Сперва создаёшь запись в этой таблице о новом файле, получаешь ID только что созданной записи с помощью mysql_insert_id() и далее можешь сохранить файл с этим названием.
     
  8. siuzi_drum

    siuzi_drum Активный пользователь

    С нами с:
    18 янв 2012
    Сообщения:
    14
    Симпатии:
    0
    вот вывел я массивом список названий в бд
    Теперь надо сделать так, чтоб по каждому нажатию кнопки создать архив плюсовалась единичка?
     
  9. Ilyaska

    Ilyaska Активный пользователь

    С нами с:
    16 янв 2012
    Сообщения:
    17
    Симпатии:
    0
    Если автоинкремент поле, в бд при добавление ид и так на единичку увеличиться, а так еще есть способ
    $i=0;
    $f='filename';
    $ext='zip';
    while(!is_file($f.$i.'.'.$ext)){
    $i++;
    }
    //имя архива будет $f.$i.'.'.$ext
     
  10. siuzi_drum

    siuzi_drum Активный пользователь

    С нами с:
    18 янв 2012
    Сообщения:
    14
    Симпатии:
    0
    Огромное спасибо!