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

vave

Полезный
Регистрация
22 Июн 2007
Сообщения
466
Реакции
16
Пытаюсь довести клиентскую базу до ума.
Помогите пожалуйста сделать сортировку 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>        

<?  
}  
?>
 
сортировка - тут. А прикручивать ее к Вашему коду - уж сильно большой геморрой, уж простите.
 
если вам нужно один раз отсортировать вашу простыню то имхо проще ваш users.php открыть в экселе предварительно заменив ваш разделитель ^^ на \t (tab) потом вернуть отсортированный массив назад в файл...
а если вам это нужно сделать на php (в образовательных целях) то видимо нужно каждый элемент массива $list разделить на массив массивов с разделителем ^^
как-то так:
PHP:
foreach($list as $string)  
 $all_data[]=explode("^^",$string);

а уж потом отображать в нужном вам виде...
 
А такую структуру хранения Вам кто-то подсказал или сами придумали?
 
скорее подсказали, а есть вариант по лучше и надёжнее?:)

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

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

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

боюсь не справлюсь сам :nezn:
было бы удобнее показать на примере,
хотя бы одну строчку, там я уже сам всё пойму:ay:
 
хотя бы одну строчку, там я уже сам всё пойму:ay:
ну попробуйте втулить перед своим
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>';
тестируйте внимательно. код логически верный но не проверял на мелкий синтаксис...
 
Назад
Сверху