#php
#php
Вопрос:
Я борюсь со своим php и хотел бы получить некоторую помощь в правильном направлении. Вот мой код до сих пор:
<?php
$connection = mysql_connect("localhost", "root") or die(mysql_error());
mysql_select_db("rsi", $connection) or die(mysql_error());
$query = "SELECT * FROM events";
$result = mysql_query ($query) or die ("error in query");
if (mysql_num_rows($result)>0) {
echo "<table border=1></tr>" .
"<th>ID</th>" .
"<th>Name</th>" .
"<th>Date</th>" .
"<th>Location</th>" ;
while ($row = @ mysql_fetch_array($result)){
print "<tr>";
print "<td>".$row['id']."</td>";
print "<td>".$row['name']."</td>";
print "<td>".$row['date']."</td>";
print "<td>".$row['location']."</td>";
print "</tr>";
}
print "</table>";
}
?>
Теперь я надеюсь упорядочить результаты из базы данных, нажав на каждый / любой из заголовков (например, дата). Спасибо за ваше время.
Ответ №1:
Чтобы упорядочить результат, который вы используете ORDER BY
.
Вот пример для упорядочения по идентификатору:
$query = "SELECT * FROM events ORDER BY id";
Чтобы упорядочить его при нажатии на заголовок, вам нужно каким-то образом заставить его выполнить новый запрос. Как это сделать, я оставляю для вас, чтобы найти. Обычно вы перезагружаете всю страницу с параметром для сортировки или используете ajax, что позволит вам обновлять содержимое страницы без перезагрузки страницы.
Ответ №2:
Если вы используете ответ Шакти, я бы рекомендовал не использовать $_GET непосредственно в запросе. Я бы запустил ваш $ _GET через какую-то проверку работоспособности и разрешил только определенные значения, в противном случае вы оставляете свой сайт открытым для атак с использованием SQL-инъекций.
Ответ №3:
Вы должны передать порядок по имени столбца и упорядочить по возрастанию или убыванию с помощью GET или POST. Вот пример GET .
$query = "SELECT * FROM events";
if(isset($_GET['sort'])
{
$query.= ' order by '.mysql_real_escape_string($_GET['sort']).' '.mysql_real_escape_string($_GET['order']);
}
$result = mysql_query ($query) or die ("error in query");
while ($row = @ mysql_fetch_array($result)){
print "<tr>";
print "<td>".$row['id']."</td>";
print "<td>".$row['name']."</td>";
print "<td><a href='http://www.domain.com/currentpageurl?sort=dateamp;order=asc'>".$row['date']."</td>";
print "<td>".$row['location']."</td>";
print "</tr>";
}
Ответ №4:
Я думаю, вы хотите отсортировать таблицу в браузере. Вероятно, вы не хотите продолжать запрашивать у своей базы данных ту же информацию, только в другом порядке сортировки. Возможно, что-то вроде этого: http://tablesorter.com/docs/#Demo
Для использования tablesorter:
- Измените одну строку вашего кода на:
echo "<table border=1 id="myTable" class="tablesorter"><tr>" ."<th>ID</th>" ."<th>Name</th>" ."<th>Date</th>" ."<th>Location</th></tr>" ;
- Добавьте эту строку в конец текста:
<script>
$(document).ready(function()
{
$("#myTable").tablesorter();
}
);
</script>
- Если у вас еще нет jquery, включите его в
<Head>
раздел:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
-
Скачать jquery.tablesorter.js от http://tablesorter.com/__jquery.tablesorter.zip
-
Включить файл jquery.tablesorter.js вот так:
<script type="text/javascript" src="/path/to/jquery.tablesorter.js"></script>