Мне нужно предоставить пользователю возможность сохранить результат запроса в текстовом файле и загрузить его.
Теперь у меня есть этот код:
while ($row = mysqli_fetch_array($resulta)){
echo "<tr>";
echo "<td class='cell0'><a href='Visualizar_Disciplina.php?nome=" .$row['nome'] . "'>" . $row['nome'] . " </a></td>";
echo "<td class='cell0'>" . $row['nomeprofessor'] . "</td>";
echo "<td class='cell0'>" . $row['creditos'] . "</td>";
echo "</tr>";
}
И я не знаю, что делать, чтобы создать текстовый файл на сервере, а затем, когда пользователь нажал кнопку, файл будет загружен.
Как я могу это сделать?
Спасибо!
У вас в основном есть две альтернативы.
Альтернатива 1
Сохраните файл на сервере и убедитесь, что пользователь может получить доступ к необработанному файлу через некоторый URL. Вероятно, вы захотите иметь некоторую логику для очистки файлов, так как каждая новая загрузка добавит на сервер новый файл, который в конечном итоге закончится.
<?php
$uri = tempnam("/dir/for/files");
$myfile = fopen($uri, "w") or die("Unable to open file!");
while ($row = mysqli_fetch_array($resulta)){
$out = "<tr>\n";
$out .= "<td class='cell0'><a href='Visualizar_Disciplina.php?nome=" .$row['nome'] . "'>" . $row['nome'] . " </a></td>\n";
$out .= "<td class='cell0'>" . $row['nomeprofessor'] . "</td>\n";
$out .= "<td class='cell0'>" . $row['creditos'] . "</td>\n";
$out .= "</tr>\n";
fwrite($myfile, $out);
}
fclose($myfile);
?>
Теперь файл записывается на сервер, и вы можете указать своему клиенту на URL-адрес, соответствующий этому файлу.
Альтернатива 2
Поместите файл download.php где-нибудь, который "сгенерирует" контент, который будет загружен "на лету". Чтобы браузер вашего пользователя мог принять файл в качестве загружаемого файла, а затем как отображаемый контент, вам нужно установить соответствующие заголовки в верхней части download.php
<?php
header('Content-type: text/plain');
header('Content-Disposition: attachment; filename="filename.txt"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
while ($row = mysqli_fetch_array($resulta)){
echo "<tr>\n";
echo "<td class='cell0'><a href='Visualizar_Disciplina.php?nome=" .$row['nome'] . "'>" . $row['nome'] . " </a></td>\n";
echo "<td class='cell0'>" . $row['nomeprofessor'] . "</td>\n";
echo "<td class='cell0'>" . $row['creditos'] . "</td>\n";
echo "</tr>\n";
}
exit;
?>