Сортировка в PHP + MySQL
$amount=mysql_num_rows($result6);
Как видно из кода я считываю кол-во столбцов по определенному критерию и вывожу это кол-во. Как сделать сортировку, допустим по возрастанию? Заранее спасибо.
например
fichiers.idProduction='$i' ORDER BY fichiers.idProduction DESC");
например
Пробовал - не хочет ;(
Пробовал - не хочет ;(
что значит не хочит ?
Что выдает. и как именно ты пробывал, пример..
что значит не хочит ?
Что выдает. и как именно ты пробывал, пример..
Дело все, наверное, в том, что это часть общего скрипта. Поэтому сейчас я приведу полный скрипт, может в нем какая ошибка.
<table border=0>
<tr>
$result4=mysql_query("SELECT * FROM production ORDER BY $key ASC"); //Это основная выборка, которая потом поступит в while?>
<th bgcolor="#BD2118"><a href="production.php?key=production.DateProduction&sess=<?echo session_id();?>">Jour</th>
<th bgcolor="#BD2118"><a href="production.php?key=production.Libelle&sess=<?echo session_id();?>">Production</th>
<th bgcolor="#BD2118"><a href="production.php?key2=fichiers.idProduction&sess=<?echo session_id();?>">Nb Fichiers</th>
</tr>
<?$i=1;
while($row=mysql_fetch_array($result4)){?>
<tr>
<td><?$Date2="{$row['DateProduction']}";
list($year,$month,$day)=split('[-.-]',$Date2);
print ("$day/$month/$year");?></td>
<td><?print ("${row['Libelle']}");?></td>
<td><?
$result6=mysql_query("SELECT fichiers.idProduction FROM production,fichiers WHERE fichiers.idProduction=production.idProduction AND fichiers.idProduction='$i' ORDER BY $key2 ASC");
$id=@mysql_result($result6,'fichiers.idProduction');
$amount=mysql_num_rows($result6);?>
','1','scrollbars=0,resizable=0,toolbar=0,menubar=0,width=800')"><?print ("$amount");?></td>
</tr>
<?$i+=1;
};?>
</table>
Как видно, есть общий запрос, и внутри него други запросы. Вот и получается, наверное, такая лажа. Я уже и разные переменные при сортировке сделал, но они не сортируются, и к тому же т.к. разные запросы, то столбцы сортирубтся независимо друг от друга. Я никогда не сталкивался с такими сложными. У меня обычно один запрос, обрабатываемый через while, а тут все как то сложно. Но как-то надо в этом разобраться.
может в этом проблемма ?
Дело все, наверное, в том, что это часть общего скрипта. Поэтому сейчас я приведу полный скрипт, может в нем какая ошибка.
<table border=0>
<tr>
$result4=mysql_query("SELECT * FROM production ORDER BY $key ASC"); //Это основная выборка, которая потом поступит в while?>
<th bgcolor="#BD2118"><a href="production.php?key=production.DateProduction&sess=<?echo session_id();?>">Jour</th>
<th bgcolor="#BD2118"><a href="production.php?key=production.Libelle&sess=<?echo session_id();?>">Production</th>
<th bgcolor="#BD2118"><a href="production.php?key2=fichiers.idProduction&sess=<?echo session_id();?>">Nb Fichiers</th>
</tr>
<?$i=1;
while($row=mysql_fetch_array($result4)){?>
<tr>
<td><?$Date2="{$row['DateProduction']}";
list($year,$month,$day)=split('[-.-]',$Date2);
print ("$day/$month/$year");?></td>
<td><?print ("${row['Libelle']}");?></td>
<td><?
$result6=mysql_query("SELECT fichiers.idProduction FROM production,fichiers WHERE fichiers.idProduction=production.idProduction AND fichiers.idProduction='$i' ORDER BY $key2 ASC");
$id=@mysql_result($result6,'fichiers.idProduction');
$amount=mysql_num_rows($result6);?>
','1','scrollbars=0,resizable=0,toolbar=0,menubar=0,width=800')"><?print ("$amount");?></td>
</tr>
<?$i+=1;
};?>
</table>
Как видно, есть общий запрос, и внутри него други запросы. Вот и получается, наверное, такая лажа. Я уже и разные переменные при сортировке сделал, но они не сортируются, и к тому же т.к. разные запросы, то столбцы сортирубтся независимо друг от друга. Я никогда не сталкивался с такими сложными. У меня обычно один запрос, обрабатываемый через while, а тут все как то сложно. Но как-то надо в этом разобраться.
1) $id=@mysql_result($result6,'fichiers.idProduction'); убери плюшки он ничего не говорит ?
2) ORDER BY $key ASC какая то странная запись у меня сейчас нет мануала под рукой.. , но тут надо не по полю разве.. а так как он тебе будет выводить в порядки (уменьшение/увеличения) переменной..(может ты имел ввиду поле кей)
3) Никаких ругательств скрипт не выводит ?
1) $id=@mysql_result($result6,'fichiers.idProduction'); убери плюшки он ничего не говорит ?
2) ORDER BY $key ASC какая то странная запись у меня сейчас нет мануала под рукой.. , но тут надо не по полю разве.. а так как он тебе будет выводить в порядки (уменьшение/увеличения) переменной..(может ты имел ввиду поле кей)
3) Никаких ругательств скрипт не выводит ?
Плюшки я убирал. А насчет сортировки ты прав, что нужно по тем данным которые выводятся, а я только знаю как это сделать в запросе SQL: ORDER BY $key ASC, где $key задается в сссылках при нажатии по названию соответствующего поля.
Плюшки я убирал. А насчет сортировки ты прав, что нужно по тем данным которые выводятся, а я только знаю как это сделать в запросе SQL: ORDER BY $key ASC, где $key задается в сссылках при нажатии по названию соответствующего поля.
Тогда скажу подругому: Ты уверен что кей передается ? Повыводи глянь ?
У тебя вообще все это выдается.. но не сортируется ?
Тогда скажу подругому: Ты уверен что кей передается ? Повыводи глянь ?
У тебя вообще все это выдается.. но не сортируется ?
Первые две колонки сортруются. Это понятно, т.к. запрос к базе находится в while, и к тому же, сортируем то, что выводим из базы напрямую. В третьем столбце выводим $amount - что является переменной, в которой хранитсься кол-во. Это кол-во и выводится. А вот как его отсортировать!!! Я хотел с помощью стандартных функций sort() итп, но они работают только с массивами, а
Тебе нужно(вопрос)
1.вывести из production строки с данными и отсортировать их по $key
2.когда ты выводиш их нужно обратится к еще 2 таблицам (одна из них таже) отсортировать их по $key2
подчитать кол-во ответов(строк) в этом запросе дписать это число к строке ответа из первого запроса и отсортировать по $amount
ОПТИМИЗАЦИЯ:
1.вывести из production строки с данными (без сортировки)
2.когда ты выводиш их нужно обратится к еще 2 таблицам (одна из них таже) (без сортировки)
подчитать кол-во ответов(строк) в этом запросе дписать это число к строке ответа из первого
3.Полученный массив данных отсортировать по $amount
Ужас во запутал (создается ощущение что специально :) так напутанно )
ОПТИМИЗАЦИЯ:
1.вывести из production строки с данными (без сортировки)
2.когда ты выводиш их нужно обратится к еще 2 таблицам (одна из них таже) (без сортировки)
подчитать кол-во ответов(строк) в этом запросе дписать это число к строке ответа из первого
3.Полученный массив данных отсортировать по $amount
На самом деле я не пытаюсь запутать, просто сложно объяснить, как связаны таблицы. Может кинуть пример заполненных таблиц?
Отнсительно вопросов, которые вы мен задали:
Правильно, по $amount сортируется третий столбец.
Кстати, как я понимаю, если мы будем отсортировывать третий столбец, то, т.к. предыдущие столбцы не связаны никак с третьим (по запросам), то сортироваться будет только третий столбец, а остальные в этот момент не будут, а так и сохранят свои позиции? Т.е. получиться не соответствие по строкам?
Вроде все написал...
Данные из запросов выводиш не сразу на экран а в многомерный массив
А вот его уже и выводиш отсортировав по одному из стобцов...
Согласен памяти потребуется много(всмысле если если будут большие объемы данны ессественно) скрость тоже поуподет но что делать
Единственно решение это пересмотр структуры хранения данных...
Помоему так
Хм....
Вроде все написал...
Данные из запросов выводиш не сразу на экран а в многомерный массив
А вот его уже и выводиш отсортировав по одному из стобцов...
Согласен памяти потребуется много(всмысле если если будут большие объемы данны ессественно) скрость тоже поуподет но что делать
Единственно решение это пересмотр структуры хранения данных...
Помоему так
Да, за это спасибо. У меня проблема в другом, как все это реализовать, т.е. как данные запихать в многомерный массив из базы. Может есть пример какой?