У меня есть страница, которая выполняет запрос MySQL от нажатия кнопки. Результат запроса отображает около 6 или около того столбцов с около 100 строк.
Я хотел бы, чтобы пользователь мог прибегать к результатам запроса на основе нажатия на заголовки столбцов. В значительной степени отправляю их на одну и ту же страницу с тем же запросом, только что прибегнув.
Итак, вот что у меня есть, все по одному сценарию.
HTML таблица (повторяется в PHP)
echo "<th id='frame_data_table'><a onClick='innerChange()' href='#'>Command</a></th>";
Функция JavaScript
function innerChange() {
document.getElementById("innerTest").value = "Changed it.";
location.reload(true);
}
HTML-тег ввода и обработка PHP-формы
<?php echo "-->" . $_POST['commandSort'] . "<--"; ?>
<form method="post">
<input type="text" id="innerTest" name="commandSort" value="command" />
</form>
Когда я делаю это, когда страница перезагружается, ничего не появляется для echo $_POST['commandSort']
, Ни исходное значение, ни измененное значение не отображаются.
На самом деле все, что мне нужно, это $_POST['commandSort']
чтобы получить значение измененного поля ввода, а затем я могу разместить любое значение, которое я хочу, в свой запрос, чтобы упорядочить его так, как я хочу.
Заранее спасибо!
-Энтони
================================================== ================
ОБНОВЛЕНИЕ: Решение
Решение этой проблемы (кредит предоставляется одному из пользователей, для которого я выбрал ответ) было с помощью document.getElementById['mainForm'].submit()
, Вот что у меня есть.
HTML-форма
<html>
<!--...some html code here...-->
<form method="post" id="mainForm" action="example.com/results.php">
<!--...more code inside of the form here...-->
<input type="checkbox" name="command" value="command" id="command"/><p>Command</p>
<!--...more code inside of the form here...-->
<input type="hidden" name="hiddenSort" id="hiddenSort" />
<!--...more code inside of the form here...-->
</form>
<!--...some more html code here...-->
</html>
PHP example.com/results.php Страница с Javascript
<?php
/*...more php code here...*/
<if (isset($_POST['command'])) {
?><th id="frame_data_table"><a href="javascript:sortFunction('command');">Command</a></th><?php
}
/*...more php code that displays the query result (while(...)) here...*/
?>
Функция Javascript
<script>
function sortFunction(x) {
var sortVar = x;
document.getElementById("hiddenSort").value = x;
document.getElementById("mainForm").submit();
}
</script>
Объяснение: После того, как исходный результат запроса извлечен и отображен, если пользователь щелкает ссылку на столбец «команда», document.getElementById['mainform'].submit()
повторно отправляет ту же форму, что была запущена ранее, одновременно передавая переменную через функцию javascript x. Переменная диктует, как запрос будет восстановлен, поскольку все, что действительно нужно сделать, это заполнить переменную "ORDER BY " . $_POST['commandSort']
в PHP. Не стесняйтесь, напишите мне для дальнейшего объяснения, если вы столкнулись с подобной проблемой.
Спасибо всем, кто откликнулся.
-Энтони
$_POST['commandSort']
является нулевым, потому что вы не отправляете форму, попробуйте вместо
location.reload(true);
с
document.forms["form1"].submit();
переименование
<form method="post" id="form1">
,
Вы уверены, что хотите использовать JavaScript для этого? Это можно сделать с помощью HTML и PHP.
например.
<tr>
<th><a href="myfile.php?sort=blah1">Header Text 1</a></th>
<th><a href="myfile.php?sort=blah2">Header Text 2</a></th>
..
</tr>
тогда в PHP вы можете получить это значение с помощью:
$sort = $_GET['sort'];
по нажатию кнопки вы можете сделать:
window.location.href = window.location.href.replace( /[\?#].*|$/, "?q=mysort" );
и получить вариант сортировки как $sort= $_GET['q'];