Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

09.02.2008, 22:40
|
|
Banned
Регистрация: 07.12.2007
Сообщений: 69
Провел на форуме: 104859
Репутация:
31
|
|
Вывод по алфавиту
Проблема ужас...
$lines[$p] это строки в файле data.dat
Они такого формата
1|Требуются[ktname]Работа и бизнес|Хек[email]xxx@sfafs.ru|А это тема|П|Текст|07.02.2008|1203003302|2|vip |95881|1202398502||||||||Работа и бизнес|
В этом примере "А это тема" это название темы...
PHP код:
<?php
// БЛОК СОРТИРОВКИ
$p = $itogo;
$ivip=0;
while($p > 0)
{
$p--;
$dt = explode("|", $lines[$p]);
if($dt[9]=="vip")
{
$ivip++;
}
$newlines[$p]="$dt[9]|$dt[11]|$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$dt[10]|$dt[12]|$dt[13]|$dt[14]|$dt[15]|$dt[16]|$dt[17]|$dt[18]|";
}
usort($newlines, "prcmp");
$p = $itogo;
while($p > 0)
{
$p--;
$dt=explode("|", $newlines[$p]);
$lines[$p]="$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$dt[9]|$dt[10]|$dt[0]|$dt[11]|$dt[1]|$dt[12]|$dt[13]|$dt[14]|$dt[15]|$dt[16]|$dt[17]|$dt[18]|\r\n";
echo $lines[$p]."<br/>";
}
while($p > 0)
{
$p--;
$dt= explode("|", $newlines[$p]);
sort($dt[5]);
$slines[$p] = "$dt[3]|$dt[2]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$dt[9]|$dt[10]|$dt[0]|$dt[11]|$dt[1]|$dt[12]|$dt[13]|$dt[14]|$dt[15]|$dt[16]|$dt[17]|$dt[18]|\r\n";
$s[] = $dt[5];
}
sort($s);
// КОНЕЦ сортировки
// Показываем QQ ОБЪЯВЛЕНИЙ
while($a1 > $u) {
$a1--;
$dt = explode("|", $lines[$a1]);
$num++;
$url="index.php?fid=$fid&id=$dt[10]";
if ($dt[4]=="П") {$colorsp="#ff3333";} else {$colorsp="#1414CD";}
$deldate=date("d.m.Y",$dt[7]); // конверируем дату удаления в человеческий формат
$tekdt=mktime();
$deldays=round(($dt[7]-$tekdt)/86400); // Дата удаления
$dt[5]=str_replace("<br>", "\r\n", $dt[5]);
// приводим слово ДЕНЬ/ДНЯ/ДНЕЙ - к нужному типу
$dney="дней"; if ($deldays=="0") {$deldays=1;}
if ($deldays>20) {$ddays=substr($deldays,-1);} else {$ddays=$deldays;}
if ($ddays=="1") {$dney="день";}
if ($ddays=="2" or $ddays=="3" or $ddays=="4") {$dney="дня";}
sort($dt[3]);
if ($dt[9]=="vip") {print "<TR height=28 class=vip onmouseout=\"vipout(this)\" onmouseover=\"vipover(this)\">";}
else {print "<TR height=28 class=row1 onmouseover=\"trtover(this)\" onmouseout=\"trtout(this)\">";}
if (stristr($dt[2],"[email]"))
{
$tdt=explode("[email]", $dt[2]);
$dt[2]="$tdt[0]";
$usdat="<TD onclick=\"LmUp('$url')\">$dt[2]";
}
else
{
$usdat="<TD onmouseover=\"tover(this)\"
onmouseout=\"tout(this)\"
onclick=\"LmUp('tools.php?event=profile&pname=$dt[2]')\">
<A href='tools.php?event=profile&pname=$dt[2]'>$dt[2]</A>";
}
print"
<TD align=center><B>$num</B></TD>
<TD><FONT color=$colorsp><B>$dt[4]</B></FONT></TD>
<TD onmouseover=\"tover(this)\" onclick=\"LmUp('$url')\" onmouseout=\"tout(this)\">
<A href='$url' title='$dt[5]'>";
if ($dt[9]=="vip")
{print"<B>$dt[3]</B>";}
else
{print"$dt[3]";} print"</A></TD>
$usdat</TD>
<TD align=center onclick=\"LmUp('$url')\"> $dt[6]</TD>
<TD onclick=\"LmUp('$url')\">$deldate - через <B>$deldays</B> $dney </TD></TR>";
if (($dt[9]=="vip") and ($ivip==1)) {print"<TR height=15 class=small bgColor=#FFFFFF><TD colspan=6> </TD></TR>";}
$ivip--;
if ($dt[4]=="С") {$itogos++;}
}
?>
Вообщем здесь вывод разделов...
На строке
PHP код:
if ($dt[9]=="vip") {print"<B>$dt[3]</B>";} else {print"$dt[3]";} print"</A></TD>
$dt[3] это название темы...
Так вот...этим кодом на странцие выводятся темы по дате создания...мне необходимо чтобы они выводились по алфавиту..
Запарился уже менять все...
Там где sort($s) это я сам писал..так вот в этом $s названия тем по алфавиту норм..но я не смог вывести это по алфавиту ((
Помогите пожалйста..
|
|
|

09.02.2008, 22:43
|
|
Banned
Регистрация: 06.06.2006
Сообщений: 944
Провел на форуме: 3986705
Репутация:
1403
|
|
sort($des) - Сортирует элементы масива по возростанию
rsort($des) - по убыванию
ksort($des) - сортирует ключи массива по возростанию
krsort($des) - ключи по убыванию
Вот пример:
PHP код:
<?php
$mass = array("З","А","Я","М");
sort($mass);
foreach($mass as $str) {
echo $str."<br>";
}
?>
Вывод будет:
Последний раз редактировалось bul.666; 09.02.2008 в 22:48..
|
|
|

09.02.2008, 22:49
|
|
Banned
Регистрация: 07.12.2007
Сообщений: 69
Провел на форуме: 104859
Репутация:
31
|
|
Я знаю что значат все эти функции...
Сама проблема в коде..надо в правильном месте выставить....
|
|
|

09.02.2008, 22:52
|
|
Banned
Регистрация: 06.06.2006
Сообщений: 944
Провел на форуме: 3986705
Репутация:
1403
|
|
Вообще в данном случае все очень запарно...
Можно сделать все намного легче с MySQL...
Вообще хз, но нужно вывести в отдельный массив все названия тем, сортировать его по алфавиту, подом перебирая этот массив в цикле выводить основной массив, где встречаеться эта тема...
Гемор
Последний раз редактировалось bul.666; 09.02.2008 в 22:58..
|
|
|

09.02.2008, 22:56
|
|
Banned
Регистрация: 07.12.2007
Сообщений: 69
Провел на форуме: 104859
Репутация:
31
|
|
Нет не мой...я не юзаю файлы
|
|
|

09.02.2008, 23:12
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме: 3941248
Репутация:
668
|
|
А если
PHP код:
if($dt[9]=="vip")
{
$ivip++;
}
заменить на
PHP код:
if($dt[9]=="vip")
{
$ivip++;
$theme[] = $dt[3];
}
А потом при выводе $theme сортировать по алфавиту =) сои еси чё не так
|
|
|

09.02.2008, 23:22
|
|
Banned
Регистрация: 06.06.2006
Сообщений: 944
Провел на форуме: 3986705
Репутация:
1403
|
|
Вот наркоманский пример:
Файл data.txt
1|dsaadsdsa|Бама|sssssas
2|dsaadsфвыdsa|Вывы|sssasdss
3|dsaadsasdasds|Аыы|sssss
4|dsaaddasddsa|Ыы|ssssss
5|dsaadsdsa|Яв|sssdsass
6|dsaaddassdsaб|Уя|sssdsass
Курсивом отметил "темы"...
Файл sort.php
PHP код:
<?php
$osnova = file("data.txt"); //Создаем массив из файла
foreach($osnova as $temp) {
$ss = explode("|",$temp);
$new[] = $ss[2]; //Перебираем массив и создаем новый с "темами"
}
sort($new); //Сортируем массив с "темами"
foreach($new as $str) {
foreach($osnova as $dd) {
$ss = explode("|",$dd);
if ($str == $ss[2]) echo $ss[0]."|".$ss[1]."|<b>".$ss[2]."</b>|".$ss[3]."<br>"; //Если тема из массива тем совпадает с основным массивом то выводим эту строку
}
}
?>
Короче на выходе получилось:
3|dsaadsasdasds|Аыы|sssss
1|dsaadsdsa|Бама|sssssas
2|dsaadsфвыdsa|Вывы|sssasdss
6|dsaaddassdsaб|Уя|sssdsass
4|dsaaddasddsa|Ыы|ssssss
5|dsaadsdsa|Яв|sssdsass
|
|
|

09.02.2008, 23:47
|
|
Banned
Регистрация: 06.06.2006
Сообщений: 944
Провел на форуме: 3986705
Репутация:
1403
|
|
Нажми сюда:
И выбери вверху удалить сообщение
|
|
|

10.02.2008, 14:54
|
|
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме: 6023777
Репутация:
2642
|
|
PHP код:
<?php
function sort_db($db) {
function cmp($a, $b) {
return strcmp($a[3], $b[3]);
}
$new_array = array();
foreach(explode("\n", $db) as $str) {
$new_array[] = explode('|', $str);
}
usort($new_array, "cmp");
$string = '';
foreach($new_array as $array) {
foreach($array as $i => $str) {
$string .= $str;
if($i != (count($array)-1)) {
$string .= '|';
}
}
$string = $string."\n";
}
return $string;
}
?>
Юзай
Последний раз редактировалось NOmeR1; 10.02.2008 в 15:23..
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|