Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Выполнить код при нажатии на кнопку


Автор: Olegan 27.5.2015, 09:14
Здравствуйте!

Помогите пожалуйста разобраться как выполнить вот этот код:
Код

$filename = "result.csv"; 
$query = "select name from trm_in_users where store_id = $stor and name != 'admin' and deleted = 0 order by name";  
$tbl = mysql_query($query);  
if(!$tbl) exit("Ошибка выполнения запроса - ".mysql_error());  
if(mysql_num_rows($tbl))  
{  
$line = array();  
while($result = mysql_fetch_row($tbl))  
{  
$line[] = implode(";", $result);  
}  
file_put_contents($filename, implode("\r\n", $line));  
} 
header("Content-type: application/csv"); 
header("Content-Disposition: attachment; filename=$filename"); 
readfile($filename);

при нажатии на вот это кнопку:
Код

print("<button onclick=\"location.href='index.php'\">Экспорт списка</button> ");

Хотя возможно кнопка должна быть другой.  smile 

Суть в том, что мне нужно сохранить данные из таблицы в excel.

Прошу прощения если несу какой-то бред или вообще не туда залез. В php уровень ниже новичка, т.е. впервые что-то на нем делать пытаюсь.

Спасибо заранее!

Автор: sQu1rr 27.5.2015, 11:44
Нет времени проверять, однако примерно так:
Файл download.php
Код

// хедеры обычно всегда сверху
header("Content-type: application/csv"); 
header("Content-Disposition: attachment; filename=$filename"); 
// ваш код не проверял, надеюсь он четкий
$filename = "result.csv"; 
$query = "select name from trm_in_users where store_id = $stor and name != 'admin' and deleted = 0 order by name";  
$tbl = mysql_query($query);   // используйте новые функции mysqli_, mysql_ устарели
if(!$tbl) exit("Ошибка выполнения запроса - ".mysql_error());  
if(mysql_num_rows($tbl))  
{  
$line = array();  
while($result = mysql_fetch_row($tbl))  
{  
$line[] = implode(";", $result);  
}  
file_put_contents($filename, implode("\r\n", $line));  
} 
readfile($filename);
// единственный комент что вы записываете результат в файл, а потом его выводите, но зачем если можно сразу вывести:
echo implode("\r\n", $line); // вот так вот


файл index.php
Код

<блаблабла, хтмл, хед боди>
<a href="download.php"><button>Скачать на</button></a>
</блаблабла, хтмл, хед боди>

Автор: Olegan 27.5.2015, 13:28
sQu1rr, вроде дошло.
Тут получается что создается download.php, который выполняется при клике на кнопку на index.php.
А есть ли другой вариант? 
Можно ли обойтись без создания дополнительных файлов? Т.е. прописать и выполнить код внутри самого index.php при клике на кнопку.

Надеюсь понятно написал. smile 

Автор: sQu1rr 27.5.2015, 13:30
Можно
Код

<?php
if (isset($_REQUEST['download'])) {
    echo 'download';
}
?>
<a href="?download"><button>Скачать на</button></a>

Автор: Olegan 27.5.2015, 13:50
на
Код

<a href="?download"><button>Скачать на</button></a>

ругается.
Цитата

Parse error: syntax error, unexpected '<' in /var/www/localhost/htdocs/client/index.php on line 31


Пишу
Код

print("<a href="?download"><button>Скачать на</button></a>");

снова ругается 
Цитата

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/localhost/htdocs/client/index.php on line 31


Что-то не то делаю да?

Автор: sQu1rr 27.5.2015, 13:54
В первом случае - посмотрите на мою 5ю строчку - ?> - и убедитесь что у вас это есть перед html вставкой
Во втором случае вы не ескейпете ковычки внутри строки

Автор: Olegan 27.5.2015, 15:35
Цитата(sQu1rr @  27.5.2015,  14:54 Найти цитируемый пост)
В первом случае - посмотрите на мою 5ю строчку - ?> - и убедитесь что у вас это есть перед html вставкой

Понял, исправил. Сейчас кнопка работает.

Если использовать
Код

if (isset($_REQUEST['download'])) {
    echo 'download';
}


то в мой код будто не возвращается значение переменной $stor.

тут в самом начале скрипта вот что прописано:
Код

$stor = intval($_REQUEST['stor']);

if($stor < 1)
    err("Надо обязательно выбрать магазин!");
$type = intval($_REQUEST['type']);

Автор: sQu1rr 27.5.2015, 16:35
Цитата(Olegan @  27.5.2015,  13:35 Найти цитируемый пост)
то в мой код будто не возвращается значение переменной $stor.

Вы вообще о чем. этот код отличвается от того что вы привели. мне вообще не понятно что вы пытаетесь сделать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)