1. PHP / Говнокод #2410

    +164

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    <?
    if( !defined("ADMIN") ) die("Access denied.");
    
    // Получение новых сообщений
    mysql_query('SET NAMES cp1251'); // Чертовы костыли!
    if($messages_count_new>0) {
        $sql = "SELECT * FROM " .PREFIX. "_messages WHERE to_uid = $manager_id AND is_read = 0";
        $result = mysql_query($sql);
        $messages_new = array();
        while ($row = mysql_fetch_assoc($result)) {
            $messages_new[] = $row;
        }    
    }
    // Получение прочитанных сообщений
    $sql = "SELECT * FROM " .PREFIX. "_messages WHERE to_uid = $manager_id AND is_read = 1";
    $result = mysql_query($sql);
    $messages_read = array();
    while ($row = mysql_fetch_assoc($result)) {
        $messages_read[] = $row;
    }
    
    $OUT .= '
    <table>
    <tr><td><h1>Внутренняя почта</h1></td></tr>';
    if(count($messages_new) > 0 OR count($messages_read) > 0):       
        if(count($messages_new) > 0):
            $OUT .= '<tr><td><h2>У вас '.count($messages_new).' новых сообщений</h2></td></tr>        
            <tr><tr>
            <table class="messages_list" width="100%">                  
                <tr><th>Дата</th><th>Тема</th></tr>';
                foreach($messages_new as $key=>$item):
                    $OUT .= '<tr>
                        <td class="date" width=20%">'.date('Y-m-d H:i', $item['created_date']).'</td>
                        <td class="subject"><a href="index.php?page=readmessage&id='.$item['id'].'">'.htmlspecialchars($item['subject']).'</a></td>
                    </tr>';
                endforeach;
            $OUT .= '</td></tr></table>';          
            
        endif;
        if(count($messages_read) > 0):
            $OUT .= '<tr><td><h2>У вас '.count($messages_new).' прочитанных сообщений</h2></td></tr>
            <tr><tr>
            <table class="messages_list" width="100%">                  
                <tr><th>Дата</th><th>Тема</th></tr>';
                foreach($messages_read as $key=>$item):
                $OUT .= '<tr>
                        <td class="date" width=20%">'.date('Y-m-d H:i', $item['created_date']).'</td>
                        <td class="subject"><a href="index.php?page=readmessage&id='.$item['id'].'">'.htmlspecialchars($item['subject']).'</a></td>
                    </tr>';
                endforeach;
            $OUT .= '</td></tr></table>';        
                  
        endif;
    else:
        $OUT .= '<tr><td>У вас нет сообщений</tr></td></table>';
    endif;

    :((((

    Запостил: azzz, 14 Января 2010

    Комментарии (23) RSS

    • переменные в запросах фильтруются?
      ...WHERE to_uid = $manager_id AND is_read = 0...
      не айс
      Ответить
      • $manager_id - она где-то там обьявляется... И вообще из БД достается - так что всё нормально, ага.
        Но ты только в этом заметил необычность и говнокод?
        Ответить
        • Ну трешка пыха, она такая была да. А что там еще страшного ?
          Ответить
          • Не трешка. четверка или пятерка.
            Ответить
            • Код писан под трешку. Если он работает под 4 или 5 - так это честь и хвала авторам пыха.
              Ответить
          • Ну...
            -вместо двух запросов можно сделать один, и распихать потом по двум массивам в одном цикле
            -if(count($messages_new) > 0 OR count($messages_read) > 0): бесполезная строка
            -count($messages_new) по-хорошему один раз вынести в переменную, чем каждый раз высчитывать
            - ну и конечно, если следом за этим кодом идет что-то вроде echo $out; то это гониво, ну а если там еще какие-то операции над получившимся хмтлем, то конечно ничо

            хз может еще чето я не заметил
            Ответить
            • угу, много чего
              Ответить
            • >> -вместо двух запросов можно сделать один, и распихать потом по двум массивам в одном цикле

              Это вот и будет говнокод.

              >> if(count($messages_new) > 0 OR count($messages_read) > 0): бесполезная строка

              Нет, к этому if-у приписан вполне используемый else.

              >> count($messages_new) по-хорошему один раз вынести в переменную, чем каждый раз высчитывать

              Есть такое дело. Но от этого код "говном" не является.

              >> ну и конечно, если следом за этим кодом идет что-то вроде echo $out;

              Темплейто-бой ? Вот как раз операции над html-ем и будут говнокодом.
              Тут все нормально - получили данные, врисовали в шаблон, отдали клиенту.
              Ответить
              • Ага конечно даешь побольше запросов к базе данных. Каждому массиву по запросу.

                С if-ом согласен не заметил

                Если там echo $out то это не темплейт. Все хтмл теги тогда можно просто писать хтмлем а не нагружать пхп.
                Ответить
                • Ну если массивы разные по смыслу - то очень даже даешь.
                  Вот когда вылезет тормозящая на очередной тысяче клиентов база - тогда и начнем в угоду скорости жертвовать понятностью.
                  Ответить
                • ну как бы конструкции
                  ?>бла-бла<?php if ($a > 1) ?> 1 <?php endif; ?>
                  они не сильно лучше.
                  Задайся простым вопросом - если, к примеру, нужно будет сообщения в нормальный вид привести (а то счас будет "1 новых сообщений"), сколько времени будешь искать, где это сделать и сколько времени править. Если задачка на одну сигарету - то вроде все нормально и с кодом и с подходом к построению приложения, не ?
                  Ответить
    • шо вы постите блядь хуйню
      говнокодеры постят говнокод аааабасака
      Ответить
    • чувак это ещё очень и очень по божески, уж поверь мне. Я когда то пару раз ремонтировал движки на реальных посещаемых сайтах и там было намногоооо хуже.
      Ответить
    • говнище)
      плз в след. раз поменьше кода пость) Рефакторь чутка
      Ответить
    • mysql_query('SET NAMES cp1251'); // Чертовы костыли!

      Вот за такое убивать надо... а остальное с меньшим или большим успехом покатит...
      Ответить
      • Нахер убивать!?
        Ответить
      • и что же в этом страшного?
        Ответить
        • А теперь в базе появляется текст... на украинском, или любом другом из более 200 существующих в мире. И вы читаете псевдографику...
          Ответить
        • Да, или еще вариант, эту страницу отображает клиент, у которого дополнительный язык - не русский.
          Если дб рассчинана на работу с вебом - только юникоды, за любые другие кодировки - увольнять нафик таких умельцев.
          Ответить
          • Иные базы по 10М записей с середины 90-х ведутся, там стоимость переезда на юникод такая, что проще от майкрософта добиться специального патча к ослику для корректного отображения :)
            Ответить
          • А у меня на работе все базы данных в latin1. Ниразу ни о чем не пожалел:)
            Ответить

    Добавить комментарий