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

    +65

    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
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    $quGroup = mysql_query($x = "
            SELECT
                a.latitude, a.longitude, a.catid, a.id, a.title, a.arttype, a.userid, b.firstname, b.lastname, b.usertype,
                a.latitude2, a.longitude2, a.latitude3, a.longitude3, a.latitude4, a.longitude4, a.latitude5, a.longitude5,
                a.latitude6, a.longitude6, a.latitude7, a.longitude7, a.latitude8, a.longitude8, a.latitude9, a.longitude9,
                a.latitude10, a.longitude10, a.latitude11, a.longitude11
            from materials a, users b
            where a.status='1' and a.userid=b.id and add_date > $day)
            $sql_cond");
        while ($flGroup = mysql_fetch_row($quGroup)) {
            $j++;
            $a1 = $a2 = array ();
            $l1 = $flGroup[0];
            $l2 = $flGroup[1];
            if ($l1 && $l2) {
                $a1[] = $l1;
                $a2[] = $l2;
            }
    
            $latitude2 = $flGroup[10];
            $longitude2 = $flGroup[11];
            if ($latitude2 && $longitude2) {
                $a1[] = $latitude2;
                $a2[] = $longitude2;
            }
    
            $latitude3 = $flGroup[12];
            $longitude3 = $flGroup[13];
            if ($latitude3 && $longitude3) {
                $a1[] = $latitude3;
                $a2[] = $longitude3;
            }
    
            $latitude4 = $flGroup[14];
            $longitude4 = $flGroup[15];
            if ($latitude4 && $longitude4) {
                $a1[] = $latitude4;
                $a2[] = $longitude4;
            }
    
            $latitude5 = $flGroup[16];
            $longitude5 = $flGroup[17];
            if ($latitude5 && $longitude5) {
                $a1[] = $latitude5;
                $a2[] = $longitude5;
            }
    
            $latitude6 = $flGroup[18];
            $longitude6 = $flGroup[19];
            if ($latitude6 && $longitude6) {
                $a1[] = $latitude6;
                $a2[] = $longitude6;
            }
    
            $latitude7 = $flGroup[20];
            $longitude7 = $flGroup[21];
            if ($latitude7 && $longitude7) {
                $a1[] = $latitude7;
                $a2[] = $longitude7;
            }
    
            $latitude8 = $flGroup[22];
            $longitude8 = $flGroup[23];
            if ($latitude8 && $longitude8) {
                $a1[] = $latitude8;
                $a2[] = $longitude8;
            }
    
            $latitude9 = $flGroup[24];
            $longitude9 = $flGroup[25];
            if ($latitude9 && $longitude9) {
                $a1[] = $latitude9;
                $a2[] = $longitude9;
            }
    
            $latitude10 = $flGroup[26];
            $longitude10 = $flGroup[27];
            if ($latitude10 && $longitude10) {
                $a1[] = $latitude10;
                $a2[] = $longitude10;
            }
    
            $latitude11 = $flGroup[28];
            $longitude11 = $flGroup[29];
            if ($latitude11 && $longitude11) {
                $a1[] = $latitude11;
                $a2[] = $longitude11;
            }
    
            if (!$l1 && !$l2 && !$latitude2 && !$longitude2 && !$latitude3 && !$longitude3 && !$latitude4 && !$longitude4 && !$latitude5 && !$longitude5 && !$latitude6 && !$longitude6 && !$latitude7 && !$longitude7 && !$latitude8 && !$longitude8 && !$latitude9 && !$longitude9 && !$latitude10 && !$longitude10 && !$latitude11 && !$longitude11)
                continue;
    
    ...
    }

    как изящно

    Запостил: shmaltorhbooks, 28 Июня 2012

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

    • Изящная структура базы привела к изящной структуре кода...
      Ответить
      • собственно код можно было и лучше написать...
        Ответить
        • Если бы знать про циклы, и расставить поля в запросе в другом порядке...
          Ответить
          • Ну про циклы он немного знает. while ведь осилил...
            Ответить
            • Скопипастил с примера про mysql_fetch_row(). Инфа 146%.
              Ответить
    • from materials a, users b

      Интересно, неявный джойн проистекает от лени или незнания?
      Ответить
      • Причину неявного джойна вполне можно установить по коду, который написан под запросом... И это явно не лень.
        Ответить
      • я немного некомпетентен в этом вопросе, но в mysql что, есть разница в производительности между явным и неявным джойном?
        Ответить
        • Вроде нет. По крайней мере когда пробовал - в постгресе строились одинаковые планы что с join что с where.
          Ответить
        • Тут разница все-таки не в производительности, а в наглядности - с join сразу видно какие условия отвечают за связь, а какие за отбор элементов. Плюс можно использовать left/right/outer join'ы которые через where записать проблематично.
          Ответить
        • Тарас, ты видишь, да? Он просто задал вопрос, и +3 к карме, а Борманд ему ответил, и ответил правильно, а профитов - ноль. Дело тут нечисто...
          Ответить
          • мда, мне уже не кажется такой ненужной идея с выдачей на гк v.2 списка поставивших оценку
            Ответить
            • Говорил же, профит есть...
              Ответить
              • да запарили уже эти инсинуации

                и да, почему никто не плюсует борманда?
                человек проводит на гк весь рабочий день, высказывается по делу в любом топике
                я ложусь спать - вижу его посты в 2 часа ночи, просыпаюсь и иду в туалет с планшетом - вижу его посты в 6 утра, а его никто не ценит
                поставил ему везде по плюсу
                Ответить
                • > человек проводит на гк весь рабочий день
                  govnotify.pl рулит ;) Краем глаза увидел извещение в углу монитора - захожу почитать, когда есть свободная минутка.

                  > высказывается по делу в любом топике
                  Не всегда по делу... ой не всегда...
                  Ответить
            • Ненужно. Со списком не будет интриг и заговоров.
              Ответить
          • Хех... был бы я кармодрочером...

            Собственно меня эта карма интересует только тогда, когда я считаю свой ответ верным, но кто-то ставит мне минус и не комментирует причину этого... Да и то, только потому, что интересно в чем же я ошибся.
            Ответить
            • Кармодрочерство и кармозависнечество пороки эгоцентризма ослепляющие и уводящие от
              поиска Истины, но сила воли и твёрдое стремление к выбранной цели укрощают и пресекают все попытки коварного ЧСВ превалировать.

              Плюсы, минусы...предлагаю запилить остальные мат. и лог. операции.
              Например:
              «Не понял, почему его интегрируют а меня нет?»,
              «Какая сволочь взяла с меня кубический корень и не отписалась почему?!»,
              «Кто там мне вдвигает в старшие разряды, только покажи свой стек, я тебе ESP так расшатаю, неделю ноги как || будут торчать!11!11!»...
              Ответить
          • о боже! давайте метаться калом из-за виртуальных плюсиков в несуществующую карму, ага.
            Ответить
            • А ещё введём кланхоллы и осады замков
              Ответить
        • Как правильно отмечено выше, явное лучше неявного. Если есть упрощающая возможность, ей можно пользоваться, только не надо забывать, что стоит за этим сахаром. Чаще всего так пишут люди, которые ни бум-бум в реляционной алгебре.
          Ответить
          • да тут проблемы поболее, не только с реляционной алгеброй.
            кажись, такие люди искренне верят, что комп живой и с характером, и что повторением можно его задолбать и убедить в своей правоте
            Ответить
            • Или, что он "привыкнет", и сам поймёт что делать дальше, по образу и подобию вышеизложенного говна.
              Ответить

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