Подскажите как можно сделать лучше

Тема в разделе "PHP", создана пользователем 1d37r, 24 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. 1d37r

    1d37r Читатель

    Заблокирован
    Регистр.:
    16 сен 2007
    Сообщения:
    287
    Симпатии:
    48
    Потратил два часа на этот код:
    PHP:
    <?
    echo 
    '<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    '
    ;
    @
    mysql_connect('localhost','root','');
    @
    mysql_select_db('kidala');
    @
    mysql_query("SET NAMES cp1251");
    $_GET['page'] == 1;
    if(!empty(
    $_POST['id']) && !empty($_POST['name']) && !empty($_POST['icq']) && !empty($_POST['sub'])) { 
        
    $id $_POST['id'];
        
    $name $_POST['name'];
        
    $icq $_POST['icq'];
        
    mysql_query("UPDATE black SET name='$name', icq='$icq' WHERE id=$id") ; 
            echo 
    "Данные отредактированы<br>";
            echo 
    "<a href=\"$_SERVER[SCRIPT_NAME]?id=$id\">Назад</a> | <a href=\"$_SERVER[SCRIPT_NAME]\">На главную</a>"
            die();
        }
    $result mysql_query("SELECT * FROM black WHERE name!='' ORDER BY id");
    for(
    $res=array();$row=mysql_fetch_assoc($result);$res[]=$row);
    $lim count($res) / 1;
    echo(
    "<a href=\"$_SERVER[SCRIPT_NAME]?page=1\">Посмотреть Блэк-список</a><br>");
    if(!empty(
    $_GET['page'])) {
        for(
    $p=1;$p<$lim;$p++) {
            echo 
    "<a href=\"".$_SERVER[SCRIPT_NAME]."?page=".$p."\"> [$p] </a>
            "
    ;
            } }
    echo 
    "<br>";
    for(
    $p=1;$p<$lim;$p++) {
        if(empty(
    $u)) { $u 4; }
        if(empty(
    $a)) { $a 0; }
        for(
    $i=$a;$i<count($res);$i++) {
            
    $id $res[$i][id];
            if(
    $_GET['id'] == $id) { 
                echo 
    "<form method=\"POST\" action=\"$_SERVER[SCRIPT_NAME]\">
                    Имя: <input type=\"text\" name=\"name\" value=\""
    .$res[$i][name]."\"><br>
                    ICQ: <input type=\"text\" name=\"icq\" value=\""
    .$res[$i][icq]."\"><br>
                    <input type=\"hidden\" name=\"id\" value=\""
    .$res[$i][id]."\">
                    <input type=\"submit\" name=\"sub\" value=\"Редактировать\">
                    "
    ; die();}
            if(
    $_GET['page'] == $p) {
                echo 
    "
                "
    .$res[$i][id].". <a href=\"$_SERVER[SCRIPT_NAME]?id=".$res[$i][id]."\">".$res[$i][name]."</a><br>"
                }
            if(
    $i == $u) { break; }
            }
        
    $u $u 5;
        
    $a $a 5;
        }
    ?>
    <p>
    <form method="POST" action="<? echo $_SERVER[SCRIPT_NAME];?>">
    <input type="text" name="search">
    <input type="submit" value="Найти">
    </form>
    </p>
    <?
    $search = $_POST['search'];
    if(!empty($search)) {
        $search = mysql_query("SELECT * FROM black WHERE name='$search'");
        $search = mysql_fetch_assoc($search);
        if($search[id] == 0) { echo "Нет такого"; die(); }
        echo "<b> Имя: ".$search[name]." <br> ICQ: ".$search[icq]; }
    ?>
    И вдруг понял, что я занимаюсь херней и данный код будет работать очень медленно.... Объясните как можно его оптимизировать, и вообще как дальше быть :/
    p.s. на счет безопасности кода, точнее его не безопасности говорить не надо, так как для меня в этом коде это не принципиально.
     
  2. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    Не совсем понял зачем редактирование, отображение, поиск и т.д. делать в одном файле?
    Не проще ли разбить по файлам всё. А коннект к базе вообще вынести в отдельный файл.
    Тебе самому тогда будет и понятнее и легче работать.
     
  3. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    SELECT * FROM
    выбирайте конкретные поля
    обработайте все входные переменные....типа...
    $id = isset($_POST['id']) ? intval($_POST['id']) : NULL;

    if($search[id] == 0) { echo "Нет такого"; die(); }
    if(!$search) die('Нет такого....');

    value=\"'. htmlspecialchars($res[$i][icq]).'\"><br/>

    определите переменные....
    if(empty($u)) { $u = 4; }
    $u = empty($u) ? 4 : NULL ;

    Ну и т.д и т.п....
     
  4. 1d37r

    1d37r Читатель

    Заблокирован
    Регистр.:
    16 сен 2007
    Сообщения:
    287
    Симпатии:
    48
    а что косается $_GET можно ли как нибудь посиматичнее это сделать в классе например?
     
  5. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Это как?
    И главное, зачем?
     
  6. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Лучшее - враг хорошего :D
    Приведи конкретный пример, где тебе хочется красивее, в той каше наверху копаться нет никакого вдохновления.
     
  7. 1d37r

    1d37r Читатель

    Заблокирован
    Регистр.:
    16 сен 2007
    Сообщения:
    287
    Симпатии:
    48
    вот вот, в точку!!11
    как мне сделать из этой каши, удобочитаемый срипт, на условии что мне не охото его разбивать по разным файлам
     
  8. Maxsystems

    Maxsystems Создатель

    Регистр.:
    18 мар 2009
    Сообщения:
    22
    Симпатии:
    2
    Запросы из базы попробуй по другому перебирать:
    PHP:
    $res=mysql_query('SELECT * FROM table');
    while(
    $t=mysql_fetch_assoc($res)){
     echo 
    $t['id'].' - '.$t['title'];
    }
    где $t['id'] - id это название колонки в таблице. Это очень удобно использовать.

    Что касается читабельности это большая культура, которая приходит со временем. Я кстати заметил когда пишешь очень большие куски кода но структурированые, давольно все элегантно и просто получается.
     
  9. pavel012007

    pavel012007

    Регистр.:
    12 мар 2008
    Сообщения:
    210
    Симпатии:
    117
    Могу посоветовать использовать шаблонизатор. В Вашем случае, как я разобрался, достаточно будет пассивных шаблонов {:)} Да-да, бывают и активные. Это где свой несложный язык, возможность, например, вставлять в шаблоне циклы. Типа свой язык описания шаблонов.
    А пассивный шаблон несложно реализовать самому. Сначала в вашем скрипте завести переменные пхп, присвоить им что нужно. Данные взять из субд, формы и т.п. Создать файлик pat.php, который фактически будет содержать html, разработать в нем диз. А в тем местах где нужно подставлять значения, вставить <?=$var;?>, где $var - переменная скрипта. Затем в конце Вашего скрипта добавить include "pat.php"
    Идея понятна?
     
  10. Casper_R

    Casper_R Создатель

    Регистр.:
    3 май 2007
    Сообщения:
    88
    Симпатии:
    25
    удобнее и практичнее этого:
    PHP:
    $res=mysql_query('SELECT * FROM table');
    while(
    $t=mysql_fetch_assoc($res)){
     echo 
    "<pre>",print_r($t),"</pre>";
    }
    нет ничего!
     
Статус темы:
Закрыта.