![]() |
Показаны 19 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Гуру! Срочно нужна помощь! (http://netadmin.ws/forum/showthread.php?threadid=825)
Гуру! Срочно нужна помощь!
Народ такая задача
Прога на ПХП с использованием dba
Тип базы "dba3".
В базе хранятся данные типа:
13::01/02/2002::тут::что-то
...
...
...
01::04/02/2002::хмм тут::и тут что-то
обозначения
13 ... 01 это номер записи, который соответствует ключу!
нужно сделать сортировку по дате по возрастанию и по убыванию, т.е.
asc 01/02/2002 ... 04/02/2002
desc 04/02/2002 ... 01/02/2002
Как это возможно?
Ð_ебята горю поможите!!! 
__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg
Не работал с DBA , даже не в курсе что за вещь , но если это одно и то же что и DBase , то можно попробовать вытащить все в ассоциативный массив а там уже пойдет сортировка массива ...
__________________
The time was broken ...
Ð_то обычная файловая ДБ.
Я могу вытащить все в массив...
Сортировку нужно вести по дате.
Мне посоветовали дату представить к примеру как 20020402, 20010401...
И уже вести сортировку по ней, но как вытащить из этого массива только часть value???
__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg
Только часть значений ? это как ? Что собтвенно тебе нужно ?
PS Если хочешь отсортировать дату я думаю оптимально было бы конвертнуть ее в unixtime, а там и с периодами просто и со всем остальным .
__________________
The time was broken ...
2 RaZEr
Существует массив.
Данные такие:
12::12/02/2002::влдыл влаов валова::лываоылвоалыва
13::31/03/2002::лывоа вылаоывлао::воавораво
т.е. мне нужно вытащить дату и по этой дате сортировать...
т.е. выводить в начале наибольшую дату, а затем меньшую
и наоборот, т.е. по возрастанию и убыванию.... нужна сортировка таким образом.
Ща понятно?
__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg
Как я понимаю PHP тут не поможет, надо самому алгоритм придумать . Я бы посоветовал перепахать твой текстовик preg_match'ем в массив где в начале будет идти поле по которому хочешь сортировать а потом сделать сортировку массива .
Можно выдергивать в ассоциативный массив а затем делать ksort или krsort, но тут проблема в том что дата может повторятся а вот имя элемента - нет .
__________________
The time was broken ...
сортировка многомерных массивов осуществляется при помощи функции usort(), то есть в твоем случае если имеется массив
$arr = array ( array("12","12/02/2002","влдыл влаов валова","лываоылвоалыва"),
array ("13","31/03/2002","лывоа вылаоывлао","воавораво"));
то сортировать нужно так:
Во первых написать функцию которая будет сравнивать два значения, вот пример функции:
function compare ($a, $b) {
if ($a[1] == $b[1])
return 0;
elseif ($a[1] < $b[1])
return -1;
else
return 1;
}
# далее можно использовать функцию usort();
usort($arr, compare);
__________________
Всегда есть решение.
2 polo
Спасибо большое, попробую!
__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg
Процитировал мануал .
2 ExcErr : Я так и не понял в чем проблема ? Что конкретно не получается ?
__________________
The time was broken ...
Всем спасибо, вопрос снимается :=)
Сделал
как посоветовал polo (за что ему и прибольшое спасибо
)
Правда грабли нашел потом еще одни..
Оказывается у меня сортировка не пахала от того, что у меня массив перегонялся в коде пустой.. Просто не досмотрел этого момента сразу
Вот и начал ковырять...
А формат даты для сортировки поменял на:
годмесдень
т.е. объединил их!
Спасибо всем еще раз!
__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg
Конечно я так и не понял чем помог поло, это все было в мане . Но ты тоже молодец, получается спросил ерунду .
PS А сортируй лучше в unixtime , проблем будет меньше .
__________________
The time was broken ...
хмм... в мане всегда почти все есть, но вот иной раз не знаешь где найти ответ, если исходить из этого то на почти все вопросы форума можно отвечать "поищи в мане, там есть".
Кстати о датах, верно отмеченно, лучше перевести в секунды, так меньше писанины и удобнее работать.
__________________
Всегда есть решение.
Не но тут странно : если надо работать с массивом логично что надо смотреть раздел array functions . Неправда ли ?!
Т.е. я не согласен что все нужно найти в мане . Ну вот к примеру вопросы : "Как отправлять встроенные в письмо изображения" или "Как перевести многомерный массив в одномерный" в мане не найти .
Хотя Polo , отчасти ты и прав .
PS Надо закрыть тему а то флудим , почем зря .
__________________
The time was broken ...
Нет, вряд-ли флудим, вопрос даже по теме, а то по моему лучщий вопрос для обсуждения (пхп), а раздел пустует.
__________________
Всегда есть решение.
RaZeR
Я же уже отметил, что была моя ошибка.
Просто передавал пустой массив и ни один вариант сортировки не пахал.
И из-за того что не досмотрел тот момент бросился распрашивать народ, что и почему.. А тихо и спокойно посидев над кодом продебагив его нашел грабли.
Поло чем помог? Да тем, что дал более четкое описание сортировки нежеле в том мане, который у меня есть, вот и все.
По поводу дыты согласен можно и так.. Но у меня в принципе это не столь принципиально.. Так как я сортирую всего навсего по дню мес и году.
Тут не важно какая данные пойдут первыми.. Если в это день то тут нет разницы что что-то должно обязательно быть первым, а что вторым. Тут стоял вопрос по дате, а не по дате и времени. Если бы как я сказал второй вариант, то да, тут было бы принципиально уже.
А дата типа 200210, не может быть больше 20021029, или может я опять ошибаюсь?
Спасибо еще раз всем!
__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg
quote:
А дата типа 200210, не может быть больше 20021029
__________________
The time was broken ...
2 RaZEr
Ну коли не трудно брось!
Мой номер аси 210743
Мыло dominator@azwave.net
По любому можешь бросить либо так, либо так!
По поводу даты, может я ошибся...
20021029 больше всегда того же 20020127 к примеру!
Тут и спора быть не может!
Время мне не принципиально!
__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg
Мануал в мыле .
А с датой ?! ... ты лучше все в unixtime делай . Сейчас может и так сойдет , но делать то надо "на потом" . Если вдруг потом вздумается высчитывать периоды ,- без unixtime тебе будет непросто .
__________________
The time was broken ...
2 RaZEr
Да я в курсах об этом :=)
Объясню почему мне не нужно всего этого!
Дело в том, что этот скрипт является скриптом новостей для сайта. Т.е. я делал движок, на базе которого будут создаваться сайты.
Ð_то обычная лента новостей.
Т.е. выбираю дату (год и месяц), для меня даже число не важно в принципе при выборе. Число выходит только тогда, когда я вывожу новости, то там я смотрю просто на какое число добавлена новость..
Функцию УнихТайм я знаю как юзать и что для этого нужно.. Мне самому если честно с ней на много работать. Просто описать две так сказать фунции, первая конвертит в унихтайм, вторая деконвертирует.. И все.. Буквально делов на 2 строчки
Удобно, согласен. Но у меня это не принципиально..
Да и так мне легче ща разобраться что как и чего!
В базу я ща могу руками лазить и отслеживать все 
Так что для меня пока енто самый лучший вариант! 
Спасибо тебе за помощь!
__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg
| Формат времени GMT. Текущее время 13:11. | Показаны 19 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.