Проблем с код за сортиране по desc и asc

bankera1990

Registered
PHP:
elseif($_GET['video_order'] == "desc"){
				$getdata = mysql_query("SELECT *, (SELECT Count(videos.id) FROM videos WHERE videos.us_id=users.id) AS videos_count FROM users GROUP BY users.id ORDER BY videos_count DESC, users.id DESC LIMIT $cur, $max");
			} elseif($_GET['video_order'] == "asc"){
				$getdata = mysql_query("SELECT *, (SELECT Count(videos.id) FROM videos WHERE videos.us_id=users.id) AS videos_count FROM users GROUP BY users.id ORDER BY videos_count ASC, users.id DESC LIMIT $cur, $max");
			}

Проблема е че не ми сортира по desc и asc
линка е
PHP:
 index.php?p=members&favorites_order=<?php if($_GET['favorites_order'] != "desc"){ echo "desc"; } else { echo "asc"; } ?>
 
Този код има много за оптимизиране. Значи първо имаш две еднакви заявки, в едната ползваш asc, в другата desc. Обединяваш ги, като на мястото на asc и desc слагаш променливата sort:

PHP:
//ако няма зададен $_GET['video_order'], слагаме 'desc'
$sort = isset($_GET['video_order']) ? $_GET['video_order'] : 'desc';
//ако потребителят е хакер и в $_GET['video_order'] не е нито desc нито asc, трябва да се предпазиш и от това:
$sort = $sort == 'asc' || $sort == 'desc' ? $sort : 'desc';

$getdata = mysql_query("
SELECT *, (SELECT Count(videos.id)
         FROM videos
         WHERE videos.us_id=users.id) AS videos_count

FROM users
GROUP BY users.id
ORDER BY videos_count $sort,
       users.id DESC
LIMIT $cur, $max
") or die(mysql_error());
mysql_error() ще ти върне грешката.
 
Благодаря ти за отговора но отново не ми се сортират по ид можели нещо от таблицата да е или полетата?
 
bankera1990 каза:
Благодаря ти за отговора но отново не ми се сортират по ид можели нещо от таблицата да е или полетата?
Точно за това разделих заявката на няколко реда. Сега може ясно да се види, че сортираш по брой видеа на потребител и ПОСЛЕ по ид. Тоест mysql сортира записите по брой видеа на човек. След това хваща равните стойности и ги сортира по ид(само тях!).

За да стане това, което искаш, трябва да обърнеш действията - първо по ид инслед това по брой.

Ето как трябва да стане:
Код:
ORDER BY 
users.id DESC,
videos_count $sort
:) :?:
 

Горе