ПОРЯДОК SQL ПО / Сортировка Php

#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:

  1. Измените одну строку вашего кода на:
 echo "<table border=1 id="myTable" class="tablesorter"><tr>"
."<th>ID</th>" ."<th>Name</th>" ."<th>Date</th>"
."<th>Location</th></tr>" ;
  
  1. Добавьте эту строку в конец текста:
 <script>
    $(document).ready(function() 
        { 
            $("#myTable").tablesorter(); 
        } 
    ); 
</script>
  
  1. Если у вас еще нет jquery, включите его в <Head> раздел:
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  
  1. Скачать jquery.tablesorter.js от http://tablesorter.com/__jquery.tablesorter.zip

  2. Включить файл jquery.tablesorter.js вот так:

 <script type="text/javascript" src="/path/to/jquery.tablesorter.js"></script>