Сортировка A-Z

Тема в разделе "PHP", создана пользователем vave, 23 окт 2011.

Модераторы: latteo
  1. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    Пытаюсь довести клиентскую базу до ума.
    Помогите пожалуйста сделать сортировку A-Z и Z-A и тоже самое для цифр.

    вот код:
    PHP:
    <?  

    class 
    PHPruAuth  
    {  
        var 
    $LOGIN;  
        var 
    $PASSWORD;  
        var 
    $USER;  
        var 
    $PASS;  

        function 
    Error()  
        {  
            echo 
    '<CENTER><BR><BR><FONT COLOR=RED><B>ACCESS DENIED!...</B></FONT>';  
            exit(
    "<BR>\n</BODY>\n</HTML>");  
        }  
          
        function 
    CheckUser()  
        {  
            
    $this->LOGIN 'admin'// логин администратора  
            
    $this->PASSWORD 'pass'// пароль администратора  

            
    if($this->LOGIN === $_SERVER["PHP_AUTH_USER"] && $this->PASSWORD === $_SERVER["PHP_AUTH_PW"])  
            {  
                
    $_SESSION["admin_online"] = 'true';  
                
    $AUTH = array(trim($this->LOGIN),trim($this->PASSWORD));  
                return (
    $AUTH);   
            }  
            
    $user file('users.php');  
            foreach(
    $user as $value)  
            {  
                list(
    $this->USER,$this->PASS,$email,$host,$web,$code,$time) = explode("^^",$value);  
                if((
    $this->USER === $_SERVER["PHP_AUTH_USER"]) && ($code == 'yes'))  
                {  
                    
    $AUTH = array(trim($this->USER),trim($this->PASS));  
                    return (
    $AUTH);   
                }  
            }  
        }  

        function 
    PHPruAuth()  
        {  
            if(isset(
    $_SERVER["PHP_AUTH_USER"]))  
                
    $AUTH $this->CheckUser();  
            if ( (!isset(
    $_SERVER["PHP_AUTH_USER"])) || ! (($_SERVER["PHP_AUTH_USER"] === $AUTH[0]) && ( $_SERVER["PHP_AUTH_PW"] === $AUTH[1] )) )  
            {  
                
    header("HTTP/1.0 401 Unauthorized");  
                
    header("WWW-Authenticate: Basic entrer=\"Form2txt admin\"");  
                
    header("WWW-Authenticate: Basic Realm=\"PROTECTED AREA\"");  
                
    $this->Error();   
            }  
        }  
    }  

    session_name('PROTECT');  
    session_start();  
    $MEMBER = new PHPruAuth;  

    ?>  

    <?  

    function ListUser()  
    {  
        $list = file('users.php');  
        $all = count($list);  
    ?>  
    <TABLE WIDTH=800 CELLPADDING=7 CELLSPACING=1 BGCOLOR=#FFFFFF>  
    <TR ALIGN=CENTER BGCOLOR=#444444>  
        <TD bgcolor="#0DA4EC"><font color="#FFFFFF" face="Arial"><B>Имя \ Фамилия</B></font></TD>  
        <TD bgcolor="#0DA4EC"><font color="#FFFFFF" face="Arial"><B>Телефон</B></font></TD>  
        <TD bgcolor="#0DA4EC"><font color="#FFFFFF" face="Arial"><B>E-mail</B></font></TD>  
        <TD bgcolor="#0DA4EC"><font color="#FFFFFF" face="Arial"><B>Hosting</B></font></TD>  
        <TD bgcolor="#0DA4EC"><font color="#FFFFFF" face="Arial"><B>Web</B></font></TD>  
        <TD bgcolor="#0DA4EC"><font color="#FFFFFF" face="Arial"><B>Дата регистрации</B></font></TD>  
        <TD bgcolor="#0DA4EC"><font color="#FFFFFF" face="Arial"><B>Удалить</B></font></TD> 
         <TD bgcolor="#0DA4EC"><font color="#FFFFFF" face="Arial"><B>Редактировать</B></font></TD> 
    </TR>  
    <?  
        $act = 0;  
        foreach($list as $string)  
        {  
            list($user,$pass,$email,$host,$web,$code,$time) = explode("^^",$string);  
            if ($code != 'yes')  
            {  
                if($time > time())  
                    $txt = '<FONT COLOR=#66CC00>ожидаем до</FONT> ';  
                else  
                    $txt = '<FONT COLOR=#FF0000>на удаление</FONT> ';  
            }  
            else  
            {  
                $txt = '';    $act++;  
            }  
            echo '<TR ALIGN=CENTER BGCOLOR=#D9EFFF><TD >'.$user.'</TD><TD>'.$pass."</TD><TD>".trim($email)."</TD><TD>".trim($host)."</TD><TD>".trim($web)."</TD><TD>".$txt.date("d.m.Yг.",$time)."</TD><TD><A HREF='?user=del&login=".$user."' TITLE='Удалить'><FONT COLOR='#FF0000'><B>X</B></FONT></A></TD><TD><A HREF='?user=edit&login=".$user."' TITLE='Редактировать'><FONT COLOR='#FF0000'><B>%</B></FONT></A></TD></TR>\n";  
        }  
    ?>  
    </TABLE>  

    <BR>Всего клиентов -   
    <?  
        echo '<B>'.$all.'</B>';  
    }  

    function AddUser()  
    {  
    ?>  
    <FORM METHOD=POST ACTION="">  
    <TABLE width="357">  
    <TR>  
        <TD width="141"><b><font face="Arial">Имя / Фамилия </font></b> </TD>  
        <TD width="206"><INPUT class=auth TYPE="text" NAME="login" size="28"></TD>  
    </TR>  
    <TR>  
        <TD width="141"><b><font face="Arial">Телефон: </font></b> </TD>  
        <TD width="206"><INPUT class=auth TYPE="text" NAME="pass" size="28"></TD>  
    </TR>  
    <TR>  
        <TD width="141"><b><font face="Arial">E-mail: </font></b> </TD>  
        <TD width="206"><INPUT class=auth TYPE="text" NAME="email" size="28"></TD>  
    </TR>  


    <TR>  
        <TD width="141"><b><font face="Arial">Hosting: </font></b> </TD>  
        <TD width="206"><INPUT class=auth TYPE="text" NAME="host" size="28"></TD>  
    </TR>  


    <TR>  
        <TD width="141"><b><font face="Arial">Web: </font></b> </TD>  
        <TD width="206"><INPUT class=auth TYPE="text" NAME="web" size="28"></TD>  
    </TR>  

    <TR>  
        <TD COLSPAN=2><INPUT class=auth TYPE="submit" NAME="protect" VALUE='Добавить'></TD>  
    </TR>  
    </TABLE>  
    </FORM>  
    <?  
    }  

    function DelUser()  
    {  
        $list = file('users.php');  
        for($a = 0; $a < count($list); $a++)  
        {  
            list($user,$pass,$email,$host,$web,$code,$time) = explode("^^",$list[$a]);  
            if($user == trim($_GET["login"]))  
            {  
                $fix = 1;  
                unset($list[$a]);  
                echo 'Пользователь '.$user.' удален!';  
                break;  
            }  
        }  
        if(!isset($fix))  
            echo 'Ошибка. Пользователь '.$_GET["login"].' в базе не найден.';  
        else  
        {  
            $user_info = str_replace("\r","",join("",$list));  
            PHPruSave($user_info,'users.php','w+');  
        }  
    }  

    function PHPruSave($input,$file,$chmod='w+')  
    {  
        $fp = fopen($file,$chmod);  
        flock($fp,2);  
        fputs ($fp,    $input);  
        flock($fp,3);  
        fclose($fp);  
    }  


    if (isset($_SESSION["admin_online"]))  
    {  
        ShowAdmin();  
        exit("\n</BODY>\n</HTML>");  
    }  

    function ShowAdmin()  
    {  
    ?>  
    <CENTER><BR><BR>  
    <P><B>Меню администратора:</B><BR><BR>  
    <A HREF="?user=add">Создать нового пользователя</A><BR><BR>  
    <A HREF="?user=list">Просмотреть список пользователей</A><BR><BR>  
    <?  

    if(isset($_POST["protect"]))  
    {  
        $check = file('users.php');  
        foreach($check as $string)  
        {  
            list($user,$pass,$email,$host,$web,$code,$time) = explode("^^",$string);  
            if(trim($_POST["login"]) == trim($user))  
            {  
                $fix = 1;  
                break;  
            }  
        }  
        if(!isset($fix))  
        {  
            $user_info = trim($_POST["login"]).'^^'.trim($_POST["pass"]).'^^'.trim($_POST["email"]).'^^'.trim($_POST["host"]).'^^'.trim($_POST["web"]).'^^yes^^'.time()."\n";  
            PHPruSave($user_info,'users.php','a+');  
            echo 'Новый пользователь добавлен.';  
            unset($_GET["user"]);  
        }  
        else  
        {  
            echo 'Ошибка. Пользователь с таким логином уже есть.<BR><BR>';  
        }  
    }  
    //********************** редактируем юзера ********************* 
    if(isset($_POST["edit"]))  
    {  
        $check = file('users.php');  
        for($a = 0; $a < count($check); $a++)  
        {  
            list($user,$pass,$email,$host,$web,$code,$time) = explode("^^",$check[$a]);  
            if(trim($_POST["login"]) == trim($user))  
            {  
                $fix = 1;  
                unset($check[$a]);  
                $user_info = str_replace("\r","",join("",$check));  
                PHPruSave($user_info,'users.php','w+');  
                break;   
            }  
        }  
        if(isset($fix))  
        {  
            $user_info = trim($_POST["login"]).'^^'.trim($_POST["pass"]).'^^'.trim($_POST["email"]).'^^'.trim($_POST["host"]).'^^'.trim($_POST["web"]).'^^yes^^'.time()."\n";  
            PHPruSave($user_info,'users.php','a+');  
            echo 'Пользователь отредактирован.';  
            unset($_GET["user"]);  
        }  
        else  
        {  
            echo 'Ошибка. Пользователь с таким логином не существует.<BR><BR>';  
        }  
    }  
    function EditUser()  
    {  
        $list = file('users.php');  
        for($a = 0; $a < count($list); $a++)  
        {  
            list($user,$pass,$email,$host,$web,$code,$time) = explode("^^",$list[$a]);  
            if($user == trim($_GET["login"]))  
            {  
    echo '<FORM METHOD=POST ACTION="">  
    <TABLE width="357">  
    <TR>  
        <TD width="141"><b><font face="Arial">Имя / Фамилия </font></b> </TD>  
        <TD width="206"><INPUT class=auth TYPE="text" NAME="login" size="28" value = "'.$user.'"></TD>  
    </TR>  
    <TR>  
        <TD width="141"><b><font face="Arial">Телефон: </font></b> </TD>  
        <TD width="206"><INPUT class=auth TYPE="text" NAME="pass" size="28" value = "'.$pass.'"></TD>  
    </TR>  
    <TR>  
        <TD width="141"><b><font face="Arial">E-mail: </font></b> </TD>  
        <TD width="206"><INPUT class=auth TYPE="text" NAME="email" size="28" value ="'.$email.'"></TD>  
    </TR>  


    <TR>  
        <TD width="141"><b><font face="Arial">Hosting: </font></b> </TD>  
        <TD width="206"><INPUT class=auth TYPE="text" NAME="host" size="28" value = "'.$host.'"></TD>  
    </TR>  


    <TR>  
        <TD width="141"><b><font face="Arial">Web: </font></b> </TD>  
        <TD width="206"><INPUT class=auth TYPE="text" NAME="web" size="28" value = "'.$web.'"></TD>  
    </TR>  

    <TR>  
        <TD COLSPAN=2><INPUT class=auth TYPE="submit" NAME="edit" VALUE="Редактировать"></TD>  
    </TR>  
    </TABLE>  
    </FORM> '; 
      
                $fix = 1;  
                break;  
            }  
        }  
        if(!isset($fix))  
            echo 'Ошибка. Пользователь '.$_GET["login"].' в базе не найден.';  
         
    }  
    //********************************************************** 
    if(isset($_GET["user"]))   
    {  
        if($_GET["user"] == 'add')  
            AddUser();  
        elseif($_GET["user"] == 'list')  
            ListUser();  
        elseif($_GET["user"] == 'del')  
            DelUser();  
        elseif($_GET["user"] == 'edit')  
            EditUser(); 
    }  

    ?>  
    <BR><BR><BR>        

    <?  
    }  
    ?>
     
  2. Soul :)

    Soul :) Постоялец

    Регистр.:
    22 мар 2007
    Сообщения:
    86
    Симпатии:
    9
    http://ua2.php.net/manual/en/function.sort.phpсортировка - тут. А прикручивать ее к Вашему коду - уж сильно большой геморрой, уж простите.
     
  3. black.cat

    black.cat

    Регистр.:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    32
    если вам нужно один раз отсортировать вашу простыню то имхо проще ваш users.php открыть в экселе предварительно заменив ваш разделитель ^^ на \t (tab) потом вернуть отсортированный массив назад в файл...
    а если вам это нужно сделать на php (в образовательных целях) то видимо нужно каждый элемент массива $list разделить на массив массивов с разделителем ^^
    как-то так:
    PHP:
    foreach($list as $string)  
     
    $all_data[]=explode("^^",$string);
    а потом отсортировать полученный массив $all_data функцией array_multisort
    а уж потом отображать в нужном вам виде...
     
  4. Kloster

    Kloster

    Регистр.:
    22 июн 2009
    Сообщения:
    216
    Симпатии:
    12
    А такую структуру хранения Вам кто-то подсказал или сами придумали?
     
  5. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    скорее подсказали, а есть вариант по лучше и надёжнее?:)

    Добавлено через 13 минут
    кстати еще можно сделать так что бы дефолтом загружался main.php?
     
  6. black.cat

    black.cat

    Регистр.:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    32
    выше вам намекнули что это самый нубский, медленный, немасштабируемый способ хранения информации :) да и надежность самого кода на грани фола... подобные данные люди хранят в sql базах: (mysql, sqlite на худой конец)
    поправьте или создайте файл .htaccess в корне сайта:
    Код:
    directoryIndex main.php 
     
  7. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    да я так и понял что код нубский)

    я имел введу сделать дефолтом подгружаемый файл ?file=main

    Добавлено через 4 минуты
    боюсь не справлюсь сам :nezn:
    было бы удобнее показать на примере,
    хотя бы одну строчку, там я уже сам всё пойму:ay:
     
  8. black.cat

    black.cat

    Регистр.:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    32
    ну попробуйте втулить перед своим
    PHP:
    $act 0;  
        foreach(
    $list as $string)
    вот такое:
    PHP:
    $all_data=array();
    foreach(
    $list as $string) { 
     
    $all_data[]=explode("^^",trim($string)); 

    array_myltisort($all_data[0]); // Сортировку прийдется ПОНЯТЬ самому!
    echo '<pre>';
    print_r($all_data); // вывалит уже отсортированные данные НО без форматирования
    echo '</pre>';
    тестируйте внимательно. код логически верный но не проверял на мелкий синтаксис...