Это не сайт "напишите мой код для меня, пожалуйста", так что вам нужно быть немного более привлекательным и активным.Но мы, безусловно, можем дать некоторые рекомендации.Давайте посмотрим ...
В настоящее время у вас есть страница, которая отображает все записи из данной таблицы, это правильно?И вам нужно сделать две вещи:
- Прежде чем отображать какие-либо записи, попросите пользователя выбрать диапазон дат.И сохраните выбор диапазона дат на странице, чтобы пользователь мог выбрать повторно.
- Предоставьте кнопку, которая позволит пользователю экспортировать выбранные записи в Excel.
Для любого из этихвам нужно будет добавить фактическую форму на страницу.В настоящее время нет ни одного.Для выбора даты я рекомендую (естественно) использовать jQuery UI datepicker .Таким образом, форма для этого будет выглядеть примерно так:
<form method="POST" action="myPHPFile.php">
<input type="text" id="fromDate" name="fromDate" />
<input type="text" id="toDate" name="toDate" />
<input type="submit" name="filterDate" value="Submit" />
</form>
<script>
$(function() {
$("#fromDate").datepicker();
$("#toDate").datepicker();
});
</script>
Возможно, вам придется обернуть JavaScript в $(document).ready(){}
, чтобы заставить его работать правильно, вы захотите проверить это.В любом случае, это даст вам форму для отправки дат в ваш сценарий.Оберните части вашего скрипта, которые выводят данные в условное выражение, которое определяет, присутствуют ли значения формы или нет.Если это не так, не берите никаких записей.Если это так, выполните некоторую базовую проверку ввода (убедитесь, что значения являются допустимыми значениями, убедитесь, что fromDate
предшествует toDate
и т. Д.) И создайте запрос SQL для фильтрации по диапазону дат.(Старайтесь избегать уязвимостей в SQL-инъекциях.)
Для вывода в Excel вы можете найти готовое решение для вас, которое просто нужно немного переделать.Если бы я создавал его с нуля, я бы, вероятно, просто выводил файл .csv
, а не полный файл Excel.Большинство пользователей не знают / не заботятся о разнице.В этом случае вам просто нужно либо создать второй сценарий, который почти идентичен существующему, либо добавить к существующему флаг, который переключается между выводом HTML и CSV, например, через скрытое поле формы.
Для вывода CSV сначала убедитесь, что вы установили заголовки ответа .Вы захотите написать заголовок, чтобы сообщить браузеру, что вы выводите файл CSV, а не text/html
, и, возможно, предложить имя файла для сохранения браузером.Тогда форма ввода SQL-запроса будет почти такой же, как и раньше.Разница лишь в «HTML», который выводится.Вместо HTML-тегов вы должны обернуть записи в запятые, двойные кавычки (где это уместно) и возврат каретки.
Нет ничего особенного в выводе «файла» против «HTML», потому что HTTPПротокол не имеет различий между ними.Это всегда просто текст с заголовками.
Теперь я уверен, что у вас есть еще вопросы по этому поводу.И это нормально.На самом деле, нам нравится поощрять задавать (и, конечно, отвечать) вопросы здесь.Поэтому, пожалуйста, не стесняйтесь просить разъяснений либо в комментариях к этому ответу (или в других ответах), либо путем редактирования и уточнения исходного вопроса, либо задавая совершенно новый вопрос, если у вас есть конкретная тема, по которой вам нужна помощь.В идеале, хороший вопрос о переполнении стека состоит из примера кода, который вы пытаетесь написать, объяснения того, что код должен делать, описания фактического результата кода и любой полезной информации, относящейся к коду.,На данный момент ваш вопрос содержит код, несколько не связанный с тем, что вы спрашиваете, и вы просто просите, чтобы мы добавили к нему некоторые функции.