Здравствуйте, сделал сортировку в таблице, по определённому полю, всё работает, только вот в чём вопрос Если я хочу сделать разные виды сортировки, мне же не обязательно для этого создавать кучу файлов,где каждый будет выводить записи по своей сортировке. Сейчас у меня пока 1 файл /result.php, в котором отсортировано имя по возростанию Хочу сделать что то типо Сортровать по email , чтобы при нажатии выполнилась сортировка, но как? 1) Создавать новую страницу подобную /result.php только там сделать сортировку по email? 2) Найти более правиньный вариант что то типо такого ?gr=9&r=13 или такого ?rub=4d49. Ведь это же не страницы созданные специально для сортировки? Как сделать чтобы сортировка произошла на этой же странице, чтобы в адресной строке было что то типо ?rub=4d49 или что то подобное. Что это из себя предстваляет и как такое сделать? Спасибо На данный момент это мой файл PHP: <?php include ("mysql_connect.php"); $select = mysql_query(" SELECT * FROM `gb` ") or die ("Could not select from table".mysql_error()); $num_rows= mysql_num_rows($select); echo "Всего сообщений в книге: ".$num_rows."<br>"; $select= mysql_query(" SELECT * FROM gb ORDER BY name ASC "); //Выводим сообщения гостевой while ($s= mysql_fetch_assoc($select)) { //тело цикла, тут например: echo "Запись №: ".$s['ID']."<br>"; echo "Имя: ".$s['name']."<br>"; echo "Email: <a href=\"mailto:".$s['email']."\">".$s['email']."</a><br>"; echo "Homapage: <a href=http://".$s['homepage']." target=blank>".$s['homepage']."</a><br>"; echo "Сообщение: ".$s['text']."<br>"; echo "Сообщение добавлено: ".$s['time']."<br><hr>"; } //Конец вывода ?>
PHP: <?php switch($_GET['sort']) { case "email": $sSort = "email"; break; case "time": $sSort = "time"; break; default: $sSort = "name"; break; } ... $select= mysql_query(" SELECT * FROM gb ORDER BY $sSort ASC "); ... ?> result.php?sort=email upd. Вот это Если вы этот запрос используете, только для того, что бы посчитать сколько всего сообщений в книге, зачем выбирать все данные, если есть "SELECT COUNT(*) - http://www.mysql.ru/docs/man/Group_by_functions.html"?
Спасибо большое, сейчас попробую, заодно и нашлось руководство по mysql http://www.mysql.ru/ Достаточно его для изучения майскл, или может ещё что то посотетуете? А это уже убрал, просто код не просмотрел на излишевства )
Да, про инъекции главное не забывайте. Вот это всё отключить, если включено: http://php.ru/manual/security.globals.html http://php.ru/manual/security.magicquotes.html - с ними, только лишняя путаница Это использовать в качестве защиты: http://php.ru/manual/function.mysql-real-escape-string.html + http://php.ru/manual/function.is-numeric.html(если числа)
Спасибо большое, вот что получилось с Вашей помощи. Ну оформление подправлю, всегда можете покритиковать моё творение ) Приму пожелания по улучшению и добавлению чего либа в вывод записей) PHP: <?php include ("mysql_connect.php"); //switch switch($_GET['arsort']) { case "name": $arsort = "name"; break; case "email": $arsort = "email"; break; case "time": $arsort = "time"; break; default: $arsort = "time"; break; } //switch $select= mysql_query(" SELECT * FROM gb ORDER BY $arsort DESC "); echo "<a href=\"?arsort=name\">Сортировать по имени по убыванию</a><br>"; echo "<a href=\"?arsort=email\">Сортировать по email по убыванию</a><br>"; echo "<a href=\"?arsort=time\">Сортировать по time по убыванию</a><br>"; //switch switch($_GET['asort']) { case "name": $asort = "name"; break; case "email": $asort = "email"; break; case "time": $asort = "time"; break; default: $asort = "time"; break; } //switch $select= mysql_query(" SELECT * FROM gb ORDER BY $asort ASC "); echo "<a href=\"?asort=name\">Сортировать по имени по возрастанию</a><br>"; echo "<a href=\"?asort=email\">Сортировать по email по возрастанию</a><br>"; echo "<a href=\"?asort=time\">Сортировать по time по возрастанию</a><br>"; //Выводим сообщения гостевой while ($s= mysql_fetch_assoc($select)) { //тело цикла, тут например: echo "Запись №: ".$s['ID']."<br>"; echo "Имя: ".$s['name']."<br>"; echo "Email: <a href=\"mailto:".$s['email']."\">".$s['email']."</a><br>"; echo "Homapage: <a href=http://".$s['homepage']." target=blank>".$s['homepage']."</a><br>"; echo "Сообщение: ".$s['text']."<br>"; echo "Сообщение добавлено: ".$s['time']."<br><hr>"; } //Конец вывода ?>
В любой случае будет сортировка по возрастанию, вы переменной $select присваиваете новое значение(переписываете). Делайте проверку на существование переменной $_GET['asort'], если она есть, то выполнением сортировку по возрастанию. И, я бы на вашем месте, сделал бы так Код (Text): echo "<a href=\"?sort=name&desc=1\">Сортировать по имени по убыванию</a><br>"; echo "<a href=\"?sort=name&desc=0\">Сортировать по имени по возрастанию</a><br>"; Т.е. если desc равен 1, то делаем сортировку по убыванию, в противном случае, по возрастанию. Что-то типа такого Код (Text): if(isset($_GET['desc']) && $_GET['desc'] == 1) { $sSortType = "DESC"; } else { $sSortType = "ASC"; } $select= mysql_query(" SELECT * FROM gb ORDER BY $sort $sSortType ");
Тоже идея, спасибо, но думаю для первых двух месяцев знакомства с ПХП я кое что начал понимать, хотя раньше не на одном из языков не умел программировать), а тем более не представлял что это такое даже, спасибо , что помогли, так как кроме этого форума в этом деле никто больше не поможет мне