Сортировка TXT со значениями через пробел

infernorays

Новичок
Всем доброго времени суток.
Прошу о помощи, потому что больше не у кого...
Я до последнего не хотел это делать, но отсутствие знаний заставило.

Есть счетчик кликов по ссылкам он на PHP, пишет в текстовый файл
Формат такой:
Код:
http://site.ru/ 3 17-01    20:21:04 icon/4pda.gif
http://site.ru/ 4 17-01    20:20:59 icon/anime.gif
http://sitesite.ru/ 5 17-01    20:52:07 icon/filmpro.gif
http://siteshmait.ru/ 1 17-01    20:32:49 icon/forumsevastopol.gif
Вообщем через пробелы, у счетчкика есть вывод но вывод не упорядоченый,
Как бы мне так сделать чтобы оно все было по убыванию.

Сам счетчик
PHP:
<?php    $title=str_replace(" ","\t", htmlspecialchars(trim($_POST['title'])));
        $image=str_replace(" ","\t", htmlspecialchars(trim($_POST['image'])));
        $newstr="";

    if(!empty($_POST['title'])){
        if(!file_exists("meter.log")){
            $newstr=$title." 1 ".date("d-m\tH:i:s")." ".$image."\n";
            file_put_contents("meter.log",$newstr);
        }else{
            if($files=file("meter.log")){
                unlink("meter.log");
                foreach ($files as $file){
                   
                    $str=explode(" ",$file);
                    $alltitle[]=$str[0];
                    $allimage[]=$str[3];
                    if(trim($str[0])==$title){
                        $count=trim($str[1]);
                        $count++;
                        $newstr.=$str[0]." ".$count." ".date("d-m\tH:i:s")." ".$image."\n";
                    }else{
                        $newstr.=$str[0]." ".$str[1]." ".$str[2]." ".$str[3]."";
                    }
                }

                if(!in_array($title,$alltitle)){
                    $newstr.=$title." 1 ".date("d-m\tH:i:s")." ".$image."\n";
                }
               
               
               
                file_put_contents("meter.log",$newstr);
               
            }else{
                echo "Ошибка чтения файла meter.log";
            }
        }
    }else{
        if(file_exists("meter.log")){
            $files=file("meter.log");
       
           
            ?>
           
               
                    <title>Счетчик кликов</title>
                    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
                    <style type="text/css">
                    body {background:#98C9FF;}
                        table{
                            border:solid 1px #ccc;
                            background-color:#f8f8f8;
                            box-shadow: 1px 2px 3px rgba(0,0,0,0.2);
                            width:800px;
                            margin:50px auto;
                            }

                        caption{
                            margin:5px 0;
                            color: #FFF;
                            font-family: arial;
                            font-size: 20px;
                            }   

                        th{
                            color: #777;
                            font-family: arial;
                            font-size: 13px;
                            letter-spacing: 0.1em;
                            padding: 5px;
                            border-bottom:solid 1px #ddd;
                            border-left:dashed 1px #ddd;
                            }

                        th:first-child{
                            border-left:none;
                            }       

                        td{
                            color: #333333;
                            font-family: arial;
                            font-size: 13px;
                            letter-spacing: 0.1em;
                            padding: 5px;
                            border-left:dashed 1px #ddd;
                            border-bottom:dashed 1px #ddd;
                            }

                        td:first-child{
                            border-left:none;
                           
                            }
                           
                    </style>   
               
                   
                <table>
                    <caption>Счетчик кликов</caption>
                    <thead>
                        <tr>
                        <th>Иконка</th>
                            <th>Анкор ссылки</th>
                            <th>Кол. клик.</th>
                            <th>Дата клика</th>
                        </tr>
                    </thead>
                    <tbody>           
            <?
            foreach ($files as $file){
                $str=explode(" ",$file);
                ?>
                    <tr>
                        <tr>
                        <td align="center"><img height='24' width='24' src='<?=$str[3]; ?>'></td>
                        <td><?=$str[0]; ?></td>
                        <td align="center"><?=$str[1]; ?></td>
                        <td align="center"><?=$str[2]; ?></td>
                       
                    </tr>
                    </tr>   
                <?
            }
            ?>
                    </tbody>
                </table>
                   
            <?
        }else{
            echo "Еще не по одной ссылке не кликали.";
        }
    }
   

?>
 

infernorays

Новичок
Может не обязательно записавать значения в TXT , а просто сортировать перед выводом? это наверное правильней, тем более он точно не будет больше 100 строк.

А еще может просто поменять столбцы местами, чтобы числовое значение было первым столбиком?
 
Последнее редактирование:

billyrubin

Новичок
В чем, собственно, вопрос? Как лучше? Да как вам больше нравится: при таких объемах данных вряд ли вы испытаете проблемы с производительностью.

Если несколько «пользователей» попытаются одновременно записать в ваш лог — будут неприятности, если этим не озаботиться. Поэтому, да, база данных может быть разумной альтернативой.
 

infernorays

Новичок
Вообщем логом я особо не дорожил, поменял запись столбцов местами, так чтобы счетчик был первым столбцом и добавил rsort($files) в конце (перед HTML)
результат меня устравает, может что-то можно сделать лучше, но в PHP я не шарю...
 
Сверху