Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сортировка в PHP + MySQL

382
23 апреля 2003 года
dodger
164 / / 07.02.2003
Люди, совсем запутался, не могу сделать сортировку данных, выведенных из массива со сложным запросом. Вот запрос:
 
Код:
$result6=mysql_query("SELECT fichiers.idProduction FROM production,fichiers WHERE fichiers.idProduction=production.idProduction AND fichiers.idProduction='$i'");

$amount=mysql_num_rows($result6);

Как видно из кода я считываю кол-во столбцов по определенному критерию и вывожу это кол-во. Как сделать сортировку, допустим по возрастанию? Заранее спасибо.
4
23 апреля 2003 года
mike
3.7K / / 01.10.2002
fichiers.idProduction='$i' ORDER BY fichiers.idProduction DESC");

например
382
23 апреля 2003 года
dodger
164 / / 07.02.2003
Цитата:
Originally posted by mike
fichiers.idProduction='$i' ORDER BY fichiers.idProduction DESC");

например


Пробовал - не хочет ;(

250
23 апреля 2003 года
Joker
1.4K / / 20.02.2000
Цитата:
Originally posted by dodger

Пробовал - не хочет ;(


что значит не хочит ?
Что выдает. и как именно ты пробывал, пример..

382
23 апреля 2003 года
dodger
164 / / 07.02.2003
Цитата:
Originally posted by Joker

что значит не хочит ?
Что выдает. и как именно ты пробывал, пример..


Дело все, наверное, в том, что это часть общего скрипта. Поэтому сейчас я приведу полный скрипт, может в нем какая ошибка.

Код:
<?
<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, а тут все как то сложно. Но как-то надо в этом разобраться.
283
24 апреля 2003 года
Alone
910 / / 20.11.2002
как вижно их кода примененна сортировка по убыванию (ASC) а ты просил по возрастанию (DESC)
может в этом проблемма ?
250
24 апреля 2003 года
Joker
1.4K / / 20.02.2000
Цитата:
Originally posted by dodger

Дело все, наверное, в том, что это часть общего скрипта. Поэтому сейчас я приведу полный скрипт, может в нем какая ошибка.
Код:
<?
<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) Никаких ругательств скрипт не выводит ?

382
24 апреля 2003 года
dodger
164 / / 07.02.2003
Цитата:
Originally posted by Joker

1) $id=@mysql_result($result6,'fichiers.idProduction'); убери плюшки он ничего не говорит ?
2) ORDER BY $key ASC какая то странная запись у меня сейчас нет мануала под рукой.. , но тут надо не по полю разве.. а так как он тебе будет выводить в порядки (уменьшение/увеличения) переменной..(может ты имел ввиду поле кей)
3) Никаких ругательств скрипт не выводит ?


Плюшки я убирал. А насчет сортировки ты прав, что нужно по тем данным которые выводятся, а я только знаю как это сделать в запросе SQL: ORDER BY $key ASC, где $key задается в сссылках при нажатии по названию соответствующего поля.

250
24 апреля 2003 года
Joker
1.4K / / 20.02.2000
Цитата:
Originally posted by dodger

Плюшки я убирал. А насчет сортировки ты прав, что нужно по тем данным которые выводятся, а я только знаю как это сделать в запросе SQL: ORDER BY $key ASC, где $key задается в сссылках при нажатии по названию соответствующего поля.


Тогда скажу подругому: Ты уверен что кей передается ? Повыводи глянь ?
У тебя вообще все это выдается.. но не сортируется ?

382
24 апреля 2003 года
dodger
164 / / 07.02.2003
Цитата:
Originally posted by Joker

Тогда скажу подругому: Ты уверен что кей передается ? Повыводи глянь ?
У тебя вообще все это выдается.. но не сортируется ?


Первые две колонки сортруются. Это понятно, т.к. запрос к базе находится в while, и к тому же, сортируем то, что выводим из базы напрямую. В третьем столбце выводим $amount - что является переменной, в которой хранитсься кол-во. Это кол-во и выводится. А вот как его отсортировать!!! Я хотел с помощью стандартных функций sort() итп, но они работают только с массивами, а

 
Код:
$amount=mysql_num_rows($result);
, что конечно массивом не является. :sad:
283
24 апреля 2003 года
Alone
910 / / 20.11.2002
Ужас во запутал (создается ощущение что специально :) так напутанно )

Тебе нужно(вопрос)
1.вывести из production строки с данными и отсортировать их по $key
2.когда ты выводиш их нужно обратится к еще 2 таблицам (одна из них таже) отсортировать их по $key2
подчитать кол-во ответов(строк) в этом запросе дписать это число к строке ответа из первого запроса и отсортировать по $amount

ОПТИМИЗАЦИЯ:
1.вывести из production строки с данными (без сортировки)
2.когда ты выводиш их нужно обратится к еще 2 таблицам (одна из них таже) (без сортировки)
подчитать кол-во ответов(строк) в этом запросе дписать это число к строке ответа из первого
3.Полученный массив данных отсортировать по $amount
382
24 апреля 2003 года
dodger
164 / / 07.02.2003
Цитата:
Originally posted by Alone
Ужас во запутал (создается ощущение что специально :) так напутанно )

ОПТИМИЗАЦИЯ:
1.вывести из production строки с данными (без сортировки)
2.когда ты выводиш их нужно обратится к еще 2 таблицам (одна из них таже) (без сортировки)
подчитать кол-во ответов(строк) в этом запросе дписать это число к строке ответа из первого
3.Полученный массив данных отсортировать по $amount


На самом деле я не пытаюсь запутать, просто сложно объяснить, как связаны таблицы. Может кинуть пример заполненных таблиц?
Отнсительно вопросов, которые вы мен задали:
Правильно, по $amount сортируется третий столбец.
Кстати, как я понимаю, если мы будем отсортировывать третий столбец, то, т.к. предыдущие столбцы не связаны никак с третьим (по запросам), то сортироваться будет только третий столбец, а остальные в этот момент не будут, а так и сохранят свои позиции? Т.е. получиться не соответствие по строкам?

382
28 апреля 2003 года
dodger
164 / / 07.02.2003
Ну неужели, никто не может мне помочь??? :(
283
28 апреля 2003 года
Alone
910 / / 20.11.2002
Хм....
Вроде все написал...
Данные из запросов выводиш не сразу на экран а в многомерный массив
А вот его уже и выводиш отсортировав по одному из стобцов...
Согласен памяти потребуется много(всмысле если если будут большие объемы данны ессественно) скрость тоже поуподет но что делать
Единственно решение это пересмотр структуры хранения данных...
Помоему так
382
28 апреля 2003 года
dodger
164 / / 07.02.2003
Цитата:
Originally posted by Alone
Хм....
Вроде все написал...
Данные из запросов выводиш не сразу на экран а в многомерный массив
А вот его уже и выводиш отсортировав по одному из стобцов...
Согласен памяти потребуется много(всмысле если если будут большие объемы данны ессественно) скрость тоже поуподет но что делать
Единственно решение это пересмотр структуры хранения данных...
Помоему так


Да, за это спасибо. У меня проблема в другом, как все это реализовать, т.е. как данные запихать в многомерный массив из базы. Может есть пример какой?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог