"PHP" / Говнокод #2410 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 azzz, (Updated )

Комментарии (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. Ниразу ни о чем не пожалел:)
          Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8