Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 14

Создать zip архив

12.07.2013, 12:31. Показов 1764. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При нажатии на кнопку собирается csv файл и выдается пользователю на скачивание. Как сделать, чтоб этот файл выдавался заархивированным? Вот кусочки кодов по которым формируется файл. Пожалуйста помогите, сразу каюсь c php только начинаю общаться.

reports_menu.html
HTML5
1
<form name='Скачать' method="get" action="/csv/show29/29/"><input type="submit" value="Скачать свод" /></form>
csv2.html
HTML5
1
2
3
4
;[%sub_top1/{ ;[%name%];;;;}%] 
;[%sub_top/{ ;[%name%]}%] 
[%sub/{[%tr/{
}%] [%name2%];[%name1%] [%cols/{;[%./val%]}%]}%]
csv.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$csv_FILENAME2 = $front_html_path.'csv2.html';
 
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");
    
    if (isset($_GET['show29'])) {       
        $main = new outTree($csv_FILENAME2);
        $rep1 = new report($db,$_GET['show29'],$user_id,'df_vals');
        if (!$rep1->ifRead('role_read'))  header('Location: /error404');
 
        //вывод  таблицы 
        $rep1->ShowRep2(&$main,$_GET['rep_user']);  
  }
class.rep.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
function ShowRep2(&$main,$report_user) {
    if (!$this->ifRead('role_read')) return false;
     //шапка таблицы
    $this->putReportTop2(&$main);
    //остальные строки
    $this->ShowRows2(&$main,$report_user);
 }
 
 
   function putReportTop2(&$main) {
     $main->addField('rep_name',$this->name);
        $rc = new Select($this->db,"select u.id,u.name from users u,user_role r where r.user_id=u.id and r.role_id=1002 order by name"); /*выбираем всех юзеров с ролью 1002*/
            while ($rc->next_row()) {
                    $sub = new outTree();
                    $rc->addFields($sub,$ar1=array('id','name','sort'));
                    
                    $main->addField('sub_top1',&$sub);
                    //$id1++;
                unset($sub);
                
                $rcols = new Select($this->db,"select id, name, sort from df_cols where id_report=".$this->id_report." and (is_float=1 or is_string=1)  order by sort");
     
                while ($rcols->next_row()) {
                    $sub = new outTree();
                    $rcols->addFields($sub,$ar=array('id','name','sort'));
                    $main->addField('sub_top',&$sub);
 
                    //$id1++;
                    unset($sub);
                };      
                
            };
    $main->addField('rep_id',$this->id_report);
 }
 
 
 function ShowRows2(&$main,$report_user) {
  
        //выбор строк
        $rrows = new Select($this->db,"select * from df_rows where id_rep_group=".$this->id_rep_group." order by sort");
        
        //идем по строкам
        while ($rrows->next_row()) {
            //идем по юзерам
            $rc = new Select($this->db,"select u.id,u.name from users u,user_role r where r.user_id=u.id and r.role_id=1002 order by name"); /*выбираем всех юзеров с ролью 1002*/
            $i=1;
            while ($rc->next_row()) {
                $rep_user = $rc->result('id');
                
                //идем по колонкам
                $rcols = new Select($this->db,"select * from df_cols where id_report=".$this->id_report." order by sort");
              
                while ($rcols->next_row()) {
                    //если колонка не фиксированная
                if ($rcols->result('fix_col_id')==0) {
                        $sub = new outTree();
                        if ($i==1) {
                        $sub->addField('td','<td>');
                        $sub->addField('name2',$rrows->result("name2"));
                        $sub->addField('name1',$rrows->result("name1"));
                        
                        }
                        $sub->addField('cols','');                      
                        $rval = new Select($this->db,"select val,id_row,id_col from ".$this->values_table." where id_report=".$this->id_report." and id_col = ".$rcols->result('id')." and id_row=".$rrows->result('Id')." and id_user=".$rep_user." group by id_col,id_row");
                        if ($rval) {
                            if ($rval->next_row()) {                    
                                $val1=$rval->result('val');
                                $sub->addField('val',$rval->result('val'));
                            }
                        };                      
                        if ($i==1) { $sub->addField('tr','<tr>'); };
                        $main->addField('sub',&$sub);
                        unset($sub);    
            $i++;
            
                    };
                };
            };  
        };
 }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.07.2013, 12:31
Ответы с готовыми решениями:

Zip архив
Ребят Всем привет. В php слабо соображаю, подскажите. В корне сайта лежит архив: update.zip А в нем лежит файл 1.exe. Задача...

архив zip
с помощью обычной формы я загружаю архив в определенную папку upload.php &lt;html&gt; &lt;head&gt; &lt;title&gt;Результат загрузки...

Сохранить текст в архив .zip
Есть код: &lt;? $model=new Models_Product; if($id=$model-&gt;addProduct($_POST)) $response=array(&quot;msg&quot;=&gt;&quot;Создан товар №...

5
 Аватар для Vas-e-na
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
12.07.2013, 14:23
Я обычно сжимаю файлы так (sql поток)
PHP
1
2
3
$handle = gzopen('files/template/e_backup.sql.gz','w9');
      gzwrite($handle, $return);
      gzclose($handle);
0
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 14
12.07.2013, 15:29  [ТС]
у меня файл на сервере не хранится, а сразу после того как формируется выдается пользователю, и я не пойму как мне его перед выдачей заархивировать. Или тогда как исправить код чтоб его сперва сохранить, а уж потом архивировать и выдавать пользователю на скачивание.
0
 Аватар для Vas-e-na
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
12.07.2013, 15:37
http://www.php.net/manual/ru/function.gzencode.php - сжатие данных без помещения в файл
зы не забудьте подправить заголовки после этого (я так полагаю, но могу ошибиться)
1
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
12.07.2013, 15:48
проще всего включите ob_start('gz_handler') до того, как отдаете тело ответа. заголовки поменяются автоматически, сжатие потоковое, вроде как дефлейт, в вашем случае будет самое оно
1
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 14
12.07.2013, 16:10  [ТС]
Спасибо за ответы, буду пытаться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.07.2013, 16:10
Помогаю со студенческими работами здесь

Как распаковать zip архив в подпапке
Как распаковать zip архив в подпапке директории, т.е. на уровень ниже скрипта

Как скачать и распаковать zip-архив
Мне необходимо написать такой php скрипт: по некоторой ссылке надо скачать архив zip, распаковать его в опредленное место, и прочитать...

Как распаковать .zip архив с произвольным названием через php
Подскажите как распаковать .zip архив через php? Загвоздка в том что нужно одни пхп файлом распаковывать архивы с разным именем. Вот...

Удалить архив zip после обработки запроса
есть такой чудесный код $zip = new ZipArchive(); $filename = &quot;./test1122.zip&quot;; if ($zip-&gt;open($filename,...

Создать архив zip
Подскажите почему в архив попадают только последние файлы а не все МассивФайлов = НайтиФайлы(Файл, &quot;*.txt&quot;); Для каждого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru