ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Вывод по алфавиту
  #1  
Старый 09.02.2008, 22:40
Аватар для GreenTiger
GreenTiger
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--;
        
$dtexplode("|"$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>&nbsp;</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 названия тем по алфавиту норм..но я не смог вывести это по алфавиту ((

Помогите пожалйста..
 
Ответить с цитированием

  #2  
Старый 09.02.2008, 22:43
Аватар для bul.666
bul.666
Banned
Регистрация: 06.06.2006
Сообщений: 944
Провел на форуме:
3986705

Репутация: 1403


Отправить сообщение для bul.666 с помощью ICQ
По умолчанию

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..
 
Ответить с цитированием

  #3  
Старый 09.02.2008, 22:49
Аватар для GreenTiger
GreenTiger
Banned
Регистрация: 07.12.2007
Сообщений: 69
Провел на форуме:
104859

Репутация: 31
По умолчанию

Я знаю что значат все эти функции...
Сама проблема в коде..надо в правильном месте выставить....
 
Ответить с цитированием

  #4  
Старый 09.02.2008, 22:52
Аватар для bul.666
bul.666
Banned
Регистрация: 06.06.2006
Сообщений: 944
Провел на форуме:
3986705

Репутация: 1403


Отправить сообщение для bul.666 с помощью ICQ
По умолчанию

Вообще в данном случае все очень запарно...

Можно сделать все намного легче с MySQL...

Вообще хз, но нужно вывести в отдельный массив все названия тем, сортировать его по алфавиту, подом перебирая этот массив в цикле выводить основной массив, где встречаеться эта тема...
Гемор

Последний раз редактировалось bul.666; 09.02.2008 в 22:58..
 
Ответить с цитированием

  #5  
Старый 09.02.2008, 22:56
Аватар для GreenTiger
GreenTiger
Banned
Регистрация: 07.12.2007
Сообщений: 69
Провел на форуме:
104859

Репутация: 31
По умолчанию

Нет не мой...я не юзаю файлы
 
Ответить с цитированием

  #6  
Старый 09.02.2008, 23:12
Аватар для Doom123
Doom123
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме:
3941248

Репутация: 668


Отправить сообщение для Doom123 с помощью ICQ
По умолчанию

А если
PHP код:
         if($dt[9]=="vip"
        { 
            
$ivip++; 
        } 
заменить на

PHP код:
        if($dt[9]=="vip"
        { 
            
$ivip++; 
$theme[] = $dt[3];
        } 

А потом при выводе $theme сортировать по алфавиту =) сои еси чё не так
 
Ответить с цитированием

  #7  
Старый 09.02.2008, 23:22
Аватар для bul.666
bul.666
Banned
Регистрация: 06.06.2006
Сообщений: 944
Провел на форуме:
3986705

Репутация: 1403


Отправить сообщение для bul.666 с помощью ICQ
По умолчанию

Вот наркоманский пример:

Файл 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
 
Ответить с цитированием

  #8  
Старый 09.02.2008, 23:47
Аватар для bul.666
bul.666
Banned
Регистрация: 06.06.2006
Сообщений: 944
Провел на форуме:
3986705

Репутация: 1403


Отправить сообщение для bul.666 с помощью ICQ
По умолчанию

Нажми сюда:

И выбери вверху удалить сообщение
 
Ответить с цитированием

  #9  
Старый 10.02.2008, 14:54
Аватар для NOmeR1
NOmeR1
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме:
6023777

Репутация: 2642


Отправить сообщение для NOmeR1 с помощью ICQ
По умолчанию

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..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Русим китайские Noklы EmitRemus Сотовый фрикинг 40 15.03.2010 12:41
JS скрипт, вывод кода по истечению времени (не работает в Opera) fis PHP, PERL, MySQL, JavaScript 2 16.01.2008 21:01



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ