Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 1
Регистрация: 28.04.2013
Сообщений: 47
1

Скачать xls-файл при нажатии на кнопку

08.07.2015, 11:36. Показов 2108. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Не получается при нажатии на кнопку скачивать файл. Выдает ошибку, как на сайте http://test.mitso.by/.

При нажатии на кнопку "Проходные баллы" должно открываться диалоговое окошко с предложением скачать или открыть файл. Помогите реализовать это, пожалуйста.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php 
    if( isset( $_POST['download'] ) )
    {
        $filename = 'book1.csv';
        header("Content-type: application/x-download");
        header("Content-Disposition: attachment; filename=$filename");
        readfile($filename);
    }
?>
<form method="POST">
    <input type="submit" name="download" value="Проходные баллы" />
</form>
Добавлено через 6 минут
Ругается на 5 и 6 строки.

Выдает ошибки:

Warning: Cannot modify header information - headers already sent by (output started at /www/test.mitso.by/index.php:39) in /www/test.mitso.by/index.php on line 48

Warning: Cannot modify header information - headers already sent by (output started at /www/test.mitso.by/index.php:39) in /www/test.mitso.by/index.php on line 49
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2015, 11:36
Ответы с готовыми решениями:

Скачать и установить apk при нажатии на кнопку
Здравствуйте, у меня вопрос как при нажатии на кнопку скачать apk файл по ссылке с сервера и...

Файл: Как сделать так, чтобы при нажатии на 1-ую кнопку считывалася 1-ая строка, при нажатии на 2 - 2 строка и т.д.
На форме размещено 30 кнопок. В файле .txt размещено 30 строк. Как сделать так чтобы при нажатий на...

Открыть файл Word при нажатии на кнопку
Как,при нажатии на кнопку,сделать открытие файла word?

Открыть excel файл при нажатии на кнопку?
Добрый день. Помогите разобраться. Нужно, чтобы при нажатии на кнопку открывался excel файл. ...

12
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 64
08.07.2015, 11:39 2
У вас перед PHP-кодом был HTML?
0
1 / 1 / 1
Регистрация: 28.04.2013
Сообщений: 47
08.07.2015, 11:46  [ТС] 3
Цитата Сообщение от Derrt Посмотреть сообщение
У вас перед PHP-кодом был HTML?
Derrt, да.
0
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 64
08.07.2015, 11:53 4
тогда все правильно. Прочтите про использование функции header() на php.net/
Там написано, что функцию header() нужно вызывать ДО вывода в браузер информации. Проще говоря, вы уже отправили сообщение, а заголовки, которые должны быть первыми, отправляете вдогонку.
Поэтому и ошибка.

Добавлено через 1 минуту
Вот ссылка на нужный Вам материал: http://php.net/manual/ru/function.header.php
0
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
08.07.2015, 11:58 5
уже поправили? мне файл отдается нормально
0
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 64
08.07.2015, 12:00 6
неа
Миниатюры
Скачать xls-файл при нажатии на кнопку  
0
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 64
08.07.2015, 12:02 7
Вы, же об этом сайте, да?
0
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
08.07.2015, 12:03 8
ну да
0
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 64
08.07.2015, 12:07 9
ну так вот, там все равно те же предупреждения:
Warning: Cannot modify header information - headers already sent by (output started at /home/user1100741/www/test.mitso.by/index.php:39) in /home/user1100741/www/test.mitso.by/index.php on line 48

Warning: Cannot modify header information - headers already sent by (output started at /home/user1100741/www/test.mitso.by/index.php:39) in /home/user1100741/www/test.mitso.by/index.php on line 49

Добавлено через 44 секунды
anastasia_b, скиньте сюда весь index.php
0
1 / 1 / 1
Регистрация: 28.04.2013
Сообщений: 47
08.07.2015, 12:30  [ТС] 10
Derrt, вот файл целиком.

HTML5
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
<HTML>
<HEAD>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <META HTTP-EQUIV="REFRESH" CONTENT="60">
    <TITLE> MITSO </TITLE>
        <script type="text/javascript">
        function MM_swapImgRestore() { //v3.0
          var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
        }
        function MM_preloadImages() { //v3.0
          var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
            var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
            if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
        }
 
        function MM_findObj(n, d) { //v4.01
          var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
            d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
          if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
          for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
          if(!x && d.getElementById) x=d.getElementById(n); return x;
        }
 
        function MM_swapImage() { //v3.0
          var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
           if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
        }
        </script>
</HEAD>
<BODY>
<center>
        <?php 
        echo "Информацию по проходным баллам Вы можете посмотреть ";
        echo '<a href="book1.csv">здесь</a>'; 
        echo "<br/><br/><br/>";
    if( isset( $_POST['download'] ) )
    {
        $filename = 'book1.csv';
 
header("Content-type: application/x-download");
header("Content-Disposition: attachment; filename=$filename");
readfile($filename);
    }
?>
<form method="POST">
    <input type="submit" name="download" value="Проходные баллы" />
</form>     
</center>
<?php
$data = File("book1.csv");
echo "<b><h1><center></b></h1></center>";
echo "<center><table border=0><tr>";
$dat_arr = explode(";", $data[0]);
for ($p=0;$p<count($dat_arr);$p++) {
echo "<td bgcolor=lightgrey><center><b>$dat_arr[$p]";
}
echo "</tr>";
for ($i=1;$i<count($data);$i++) {
$data_array = explode(";", $data[$i]);
echo "<tr>";
    for ($f=0;$f<count($data_array);$f++) { 
echo "<td bgcolor=#f5f5f5><center><b>$data_array[$f]";
}
echo "</tr>";}echo "</table></center>";
?>
</BODY>
</HTML>
0
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 64
08.07.2015, 13:21 11
Попробуйте так:
HTML5
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
<?php 
    if(isset($_post['download'])) {
    $filename = 'book1.csv';
        header("content-type: application/x-download");
        header("content-disposition: attachment; filename=$filename");
        readfile($filename);
    }
?>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=windows-1251">
    <meta http-equiv="refresh" content="60">
    <title> mitso </title>
        <script type="text/javascript">
        function MM_swapImgRestore() { //v3.0
          var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
        }
        function MM_preloadImages() { //v3.0
          var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
            var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
            if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
        }
 
        function MM_findObj(n, d) { //v4.01
          var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
            d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
          if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
          for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
          if(!x && d.getElementById) x=d.getElementById(n); return x;
        }
 
        function MM_swapImage() { //v3.0
          var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
           if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
        }
        </script>
</head>
<body>
<center>
    <p>информацию по проходным баллам вы можете посмотреть</p>
    <a href="book1.csv">здесь</a> 
    <br/>
    <br/>
    <br/>
    <form method="post">
        <input type="submit" name="download" value="проходные баллы" />
    </form>     
</center>
<?php
    $data = file("book1.csv");
    echo "<b><h1><center></b></h1></center>";
    echo "<center><table border=0><tr>";
    $dat_arr = explode(";", $data[0]);
    for ($p = 0; $p < count($dat_arr); $p++)
        echo "<td bgcolor=lightgrey><center><b>$dat_arr[$p]";
    echo "</tr>";
    for ($i = 1; $i < count($data); $i++) {
        $data_array = explode(";", $data[$i]);
        echo "<tr>";
        for ($f = 0; $f < count($data_array); $f++)
            echo "<td bgcolor=#f5f5f5><center><b>$data_array[$f]";
        echo "</tr>";
    }
    echo "</table></center>";
?>
</body>
</html>
Добавлено через 2 минуты
Стоп. Вот этот код:

PHP
1
2
3
4
5
6
7
8
<?php 
    if(isset($_post['download'])) {
    $filename = 'book1.csv';
        header("content-type: application/x-download");
        header("content-disposition: attachment; filename=$filename");
        readfile($filename);
    }
?>
Вам нужен для закачки файла?

Добавлено через 1 минуту
стоп, так уже работает ссылка)
0
1 / 1 / 1
Регистрация: 28.04.2013
Сообщений: 47
08.07.2015, 13:26  [ТС] 12
Цитата Сообщение от Derrt Посмотреть сообщение
Попробуйте так:
при нажатии на кнопку вообще ничего не происходит.

Цитата Сообщение от Derrt Посмотреть сообщение
Вам нужен для закачки файла?
да

Цитата Сообщение от Derrt Посмотреть сообщение
стоп, так уже работает ссылка)
мне нужно то же самое при нажатии на кнопку.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
08.07.2015, 16:43 13
Есть закрепленная тема, где отлично объясняются причины такой ошибки, и как от нее избавиться Что означает предупреждение "headers already sent"
0
08.07.2015, 16:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.07.2015, 16:43
Помогаю со студенческими работами здесь

при нажатии на кнопку отчистить txt файл от текста
на странице html кнопка, при ее нажатии необходимо в файле на стороне клиента очистить текстовый...

Как запустить exe-файл при нажатии на кнопку
Здравствуйте.Начал изучать с#.Хотел бы спросить:как сделать в vs,чтобы при нажатии на...

Надо чтобы при нажатии на кнопку открывался CHM файл
Надо чтобы при нажатии на кнопку открывался CHM файл

Как загрузить файл в определённую папку при нажатии на кнопку?
Как мне сделать загрузку файлов в определённую папку при нажатии на кнопку? И где это можно...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru