Сортировка imap_sort

qwelp

Новичок
Сортировка imap_sort

Не как не могу правильно использовать функцию imap_sort. Знающие люди подскажите.

PHP:
<?php
$anum = imap_num_msg($mbox);
echo "Писем: $anum";
$from= isset($_GET['f'])? intval($_GET['f']): 1;
$num = isset($_GET['n'])? intval($_GET['n']): 20;

$sort = imap_sort($mbox, SORTARRIVAL, true);
for($i=0; $i < $num && $i+$from <= $anum; $i++ )
{

$obj = imap_headerinfo($mbox, $i+$from);
$arr = isset($obj->Subject)? imap_mime_header_decode($obj->Subject) : '';
$fromname = imap_mime_header_decode($obj->fromaddress);
$msg_date = gmstrftime("%d %m %Y", strtotime($obj->Date));
$froms = $obj->from;
echo ("<tr>");
echo ("<td> ".($i+$from)." </td>");
echo ("<td>".$obj->Unseen."&nbsp;</td>");
echo ("<td><b> ". @convert_cyr_string($fromname[0]->text,$fromname[0]->charset,"w")."</b>&nbsp;&nbsp; ".$froms[0]->mailbox."@".$froms[0]->host."</td>");
echo ("<td><a href=\"messages.php?id=".($i+$from)."\">". ($arr === ''? '' : convert_cyr_string($arr[0]->text,$arr[0]->charset,"w"))."</a></td>");
echo ("<td>".$msg_date."</td>");
echo ("<td>".round(($obj->Size/1000),1)."КБ</td>");
echo ("</tr>\r\n");
}
echo ("</table>\r\n");
for($i = 0; $i < $anum; $i+=$num)
echo "<a href=?f=".($i+1)."&n=$num>".($i+1)."..".min($anum,$i+$num)."</a>\r\n";



echo ("<pre>");
print_r ($sort);
?>
 

qwelp

Новичок
Надо отсортировать в обратном порядке, чтобы последнии пришедшие письма были в начале списка.

Вот этой функцией.

Код:
$sort = imap_sort($mbox, SORTARRIVAL, true);
вывожу print_r ($sort); сортирует как надо.

Не могу разобраться как заставить этим сортировать массив imap_headerinfo
 

Гравицапа

elbirret elcno
qwelp
Ты шутишь что ли?
А где в твоем коде используется $sort кроме как для print_r($sort)?!
 

qwelp

Новичок
В том и дело что я не знаю как использовать функцию и в коде не где не используется. print_r($sort) сделал для просмотра порядка сортировки. он к коду не относиться.
 

Гравицапа

elbirret elcno
qwelp
Возвращаемые значения
Returns an array of message numbers sorted by the given parameters.
Тебе уже возвращается массив отсортированных по заданному тобой критерию сообщений. С ним и работай, а не
PHP:
$anum = imap_num_msg($mbox);
 

qwelp

Новичок
Что сделать я понимаю. а как это реализовать. вот в чем проблема
 

Фанат

oncle terrible
Команда форума
а ты подумай.
сначала отдохни, потом снова подума. попробуй так и эдак.
ещё подумай.
и все у тебя получится.

все программисты, поголовно, этим занимаются.
займись и ты.

а то как-то даже смешно получается.
веб-интерфейс нужен тебе, а пишут его совсем другие люди.
 

qwelp

Новичок
Фанат "Очень помог"......

веб-интерфейс нужен тебе, а пишут его совсем другие люди.

Не согласен с тобой. Пишу я. мне помогли разобраться в ключевых моментах(за что большое спасибо). теперь все это легко напишу без помощи. Осталось всего пару моментов :). + с помощью созданных постов многие с легкостью разберутся в процессе создания почтового интерфейса и не будут задавать лишних вопросов, воспользовавшись лишь поиском по форуму.

Я не просил делать сортировку (не сокрою надеялся :) но как показывает практика на этом форуме этот фокус не проходит, зато подталкивают на правильное решение ).
Может кто пример покажет.
На php.net все примеры с foreach и нет примера с for поэтому и прошу помочь разобраться. Тем более на форуме нет тем про функцию imap_sort. Один раз обсудим и больше этого вопроса не возникнет.
 

Фанат

oncle terrible
Команда форума
при чем здесь foreach и for?
ни один из этих операторов ничего не сортирует.
у тебя проблема с сортировкой или с чем?

"Очень помог"......
чувак.
уясни себе очень простую мысль.
Здесь не армия спасения. и не платная служба поддержки.
и не твоя бабушка, которая любит тебя бескорыстно, и которой ты можешь бросить саркастическое "спасибо, бабуля, помогла!".
Не нравится моя помощь? Никто не держит, интернет большой!
Впредь держи, пожалуйста, свое мнение по поводу качества помощи при себе.

Ключевая мысль моего поста была в том, что я, например, когда сталкиваюсь с проблемой, сто сажусь и решаю её. А не бегу на форум, чтобы мне её решили.
И рекомендую тебе поступить точно так же.
Если что-то не получается - это не повод задирать лапки кверху. Это повод сесть, и решать проблему. Это твоя работа.

-~{}~ 02.05.07 17:41:

На php.net все примеры с foreach и нет примера с for
КАКОЙ КОШМАР!
все - туши свет, сливай воду, пхп на свалку.

А САМ себе пример написать не пробовал? Тестовый скрипт, чтобы разобраться с for?
Все примеры тебе должен дядя сделать, а сам ты беспомощный младенец?
 

Гравицапа

elbirret elcno
На php.net все примеры с foreach и нет примера с for поэтому и прошу помочь разобраться.
Эх...а уже почтовый интерфейс пытаешься сделать.

-~{}~ 02.05.07 20:49:

ем более на форуме нет тем про функцию imap_sort.
Открою тебе секрет, на этом форуме пока не для всех функций PHP есть свои темы.
 

qwelp

Новичок
"Очень помог"......
Чувак.
К тому что не хочешь помогать. зачем писать ответ?
и много бредятины ты в последним посте написал
(по себе людей не судят).

при чем здесь foreach и for?
Как я понимаю что сортировать надо цикл..

-~{}~ 02.05.07 17:56:

Эх...а уже почтовый интерфейс пытаешься сделать.
хороший способ затронуть многие моменты php
 

Гравицапа

elbirret elcno
хороший способ затронуть многие моменты php
"Тренируйся лучше на кошках", - "Операция Ы и другие приключения Шурика".
Попробуй начать с простого...напиши гостевую..а там уже как пойдёт.
 

qwelp

Новичок
хм интересно а как цикл можно отсортировать?!
for($i=0; $i < $num && $i+$from <= $anum; $i++ )

-~{}~ 02.05.07 20:17:

Дело в том что отсортировать я могу
вот так
Код:
$arr=imap_sort($mbox,SORTDATE,1,SE_UID); 
$obj=imap_headerinfo($mbox,imap_msgno($mbox,$arr[0]));
Но у меня уже есть 1 парамтр сортировки. Вот:
Код:
$obj = imap_headerinfo($mbox, $i+$from);
не могу применить. второй параметр

-~{}~ 02.05.07 20:22:

Получилось. Кому интересно вот код:
Код:
for($i=0; $i < $num && $i+$from <= $anum; $i++ )
{

$sort = imap_sort($mbox,SORTDATE,1,SE_UID); 
$obj = imap_headerinfo($mbox, imap_msgno($mbox,$sort[$i]), $i+$from);
$arr = isset($obj->Subject)? imap_mime_header_decode($obj->Subject) : '';
$fromname = imap_mime_header_decode($obj->fromaddress);


$msg_date = gmstrftime("%d %m %Y", strtotime($obj->Date));
$froms = $obj->from;
echo ("<tr>");
echo ("<td> ".($i+$from)." </td>");
echo ("<td>".$obj->Unseen."&nbsp;</td>");
echo ("<td><b> ". @convert_cyr_string($fromname[0]->text,$fromname[0]->charset,"w")."</b>&nbsp;&nbsp; ".$froms[0]->mailbox."@".$froms[0]->host."</td>");
echo ("<td><a href=\"messages.php?id=".($i+$from)."\">". ($arr === ''? '' : convert_cyr_string($arr[0]->text,$arr[0]->charset,"w"))."</a></td>");
echo ("<td>".$msg_date."</td>");
echo ("<td>".round(($obj->Size/1000),1)."КБ</td>");
echo ("</tr>\r\n");
}
 

Фанат

oncle terrible
Команда форума
попробуй прочитать свое сообщение со стороны, к будто бы если не ты его писал.
и ответь себе на вопрос - его вообще можно понять?

в ответ на вопрос, как можно отсортировать цикл - какой-то невнятный кусок кода, который не объясняет, как можно отсортировать действие.

какой-то второй параметр, который к сортировке не имеет отношения, и втыкается ,почему-то не в функцию сортировки.

что такое, по-твоему, означает понятие "сортировка"? Похоже, что ты называешь этим словом что-то другое.

-~{}~ 02.05.07 20:25:

слава тебе господи.
все-таки, последовал моему совету.
значит, не безнадежен
 
Сверху