1. Лучший говнокод

    В номинации:
    За время:
  2. PHP / Говнокод #1673

    +160

    1. 1
    foreach($query->result_array() as $row) $res[] = $row;

    P.s на сайте не работает галочка "принять рецензию" в 4 хроме, а в 6 ие(который я включил, чтобы здесь накласть) не видно текстареи, но вроде работает :)

    xscript, 24 Августа 2009

    Комментарии (14)
  3. JavaScript / Говнокод #1670

    +160

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    //Из библиотеки prototype
    
    ....
      unescapeHTML: function() {
        return this.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
      }
    
    ....

    Смеяться надо из-за того, что замена &amp; на & идёт первой, таким образом &amp;lt замениться на <, а не на &lt;

    Oleg_quadro, 24 Августа 2009

    Комментарии (3)
  4. PHP / Говнокод #1645

    +160

    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
    $query="SHOW COLUMNS FROM ".$table;
    $result_field=mysql_query($query);
    $num_field=mysql_num_rows($result_field);
    
    for ($i = 0; $i<$num_field; $i++)
    {
        $row=mysql_fetch_array($result_field);
        $field_array[$i]=$row[0];
    }
    
    foreach ($field_array as $field)
        $select_field.=$field.',';
    
    $select_field=substr($select_field,0,-1);
    
    $query='select '.$select_field.' from '.$table;
    ...

    Аналог $query='select * from '.$table;

    porten, 20 Августа 2009

    Комментарии (9)
  5. PHP / Говнокод #1701

    +159.9

    1. 1
    2. 2
    3. 3
    4. 4
    //admin id is usually 1. to think about it
    if (intval($_SESSION['userId']) == 1) {
        return true;
    }

    True ACL.

    Comma, 27 Августа 2009

    Комментарии (7)
  6. PHP / Говнокод #1628

    +159.9

    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
    public function link_page()
        {
    
            $sql = "SELECT COUNT(*) FROM `".$this->table."`".$this->where;
            $value = mysql_query($sql);
            $value = mysql_fetch_row($value);
            $alllines = $value[0];
            $str = ceil($alllines / $this->lines); 
            if($this->page != 0) {
                $return .= "<a href='".$this->prefix_p."=".($this->page)."'><</a>";
            } else {
                $return .= "<span><</span>";
            }
            $return .= "&nbsp;";
            if($this->page + 1 != 1) {
                $return .= "<a href='".$this->prefix_p."=1'>1</a>";
            } else {
                $return .= "<span>1</span>";
            }
    
            $return .= "&nbsp";
            if($this->page + 1 == $str && $this->page + 1 != 1 && $str < 2) {
                $return .= "<a href='".$this->prefix_p."=".($this->page - 2)."'>".($this->page -
                    2)."</a>";
                $return .= "<a href='".$this->prefix_p."=".($this->page - 1)."'>".($this->page -
                    1)."</a>";
            }
    
            if($this->page > 1) {
                if($str > 1 && $this->page >= 4) {
                    if($str >= 5 && ($this->page == $str - 1 or $this->page == $str - 2)) {
                        if($this->page == $str - 2 && $str != 5) {
                        } else {
                            $return .= "<a href='".$this->prefix_p."=".($this->page - 2)."'>".($this->page -
                                2)."</a>";
                        }
    
                        if($this->page == 4 && $str == 6) {
                        } else {
                            $return .= "<a href='".$this->prefix_p."=".($this->page - 1)."'>".($this->page -
                                1)."</a>";
                        }
                    }
                }
                if(($str > 4 && $str < 8 && $this->page == $str - 2) or ($str == 4 && $this->
                    page == $str - 1)) {
                    $return .= "<a href='".$this->prefix_p."=".($this->page - 1)."'>".($this->page -
                        1)."</a>";
                }
                $return .= "<a href='".$this->prefix_p."=".($this->page)."'>".($this->page).
                    "</a>";
            }
    
            if($this->page + 1 != 1 && $this->page < 2 && $str != 2) {
                $return .= "<span>".($this->page + 1)."</span>";
            }
            if($this->page > 1 && $this->page + 2 <= $str) {
                $return .= "<span>".($this->page + 1)."</span>";
            }
    
            if($this->page + 2 < $str) {
                if($this->page + 1 == 1) {
                    $return .= "<a href='".$this->prefix_p."=".($this->page + 2)."'>".($this->page +
                        2)."</a>";
                    if($str > 3) {
                        $return .= "<a href='".$this->prefix_p."=".($this->page + 3)."'>".($this->page +
                            3)."</a>";
                    }
                    if($this->page + 3 >= $str) {
                    } else {
                        if($str != 4) {
                            $return .= "<a href='".$this->prefix_p."=".($this->page + 4)."'>".($this->page +
                                4)."</a>";
                        }
                    }
    
                } else {
                    if($this->page + 1 == 2) {
                        $return .= "<a href='".$this->prefix_p."=".($this->page + 2)."'>".($this->page +
                            2)."</a>";
                        if($str != 4) {
                            $return .= "<a href='".$this->prefix_p."=".($this->page + 3)."'>".($this->page +
                                3)."</a>";
                        }
                    } else {
                        $return .= "<a href='".$this->prefix_p."=".($this->page + 2)."'>".($this->page +
                            2)."</a>";
                    }
                }
    
            }

    Один метод из класса выводит навигацию типа (мы на 6 странице максимум 10 страниц) [<][1] [5][6][7] [10][>]
    Писал под травой, как оно работает не знаю, переписывать лень, работает да и ладно =)

    sTarT, 19 Августа 2009

    Комментарии (10)
  7. PHP / Говнокод #583

    +159.9

    1. 1
    eval("\$value = \"$value\";");

    AdsManager - компонент для Joomla!
    Я не сразу понял что делает эта строчка...

    guest, 20 Февраля 2009

    Комментарии (10)
  8. JavaScript / Говнокод #3016

    +159.8

    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
    function AbstractControl_getProperty (propertyName) {
    	var targetElement = this.getTargetPath(propertyName);
    	var result = null;
    	
    	if (this.isTargetAttribute(propertyName)) {
    		eval("result = targetElement." + this.getAttributeName(propertyName));
    	} else {
    		var getter = this.getGetterName(propertyName);
    		var expression = "result = targetElement." + getter + "();";
    		eval(expression);
    	}
    	return result;
    }

    Вот так наши "суровые челябинские" программисты, не имеющие представления об интроспективности javascript-а, повсюду злоупотребляют eval-ом, усложняя отладку и понимание кода.
    По хорошему, вместо первого eval-а должно бы быть:
    result = targetElement[this.getAttributeName(propertyName)];
    а вместо второго:
    result = targetElement[this.getGetterName(propertyName)]();

    Andronix, 15 Апреля 2010

    Комментарии (15)
  9. JavaScript / Говнокод #2707

    +159.8

    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
    function check_date() {
    	var	message = "Дата невалидна.";
    		days = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    
    	var str = $('#registration-form [name="birthday"]').val();
    
    	var m = str.match(/(\d*)\.(\d*)\.(\d*)(.*)/);
    
    	if (!m ||
    		!m[1] ||
    		!m[2] ||
    		!m[3] ||
    		m[4] ||
    		parseInt(m[2], 10) < 1 ||
    		parseInt(m[2], 10) > 12 ||
    		parseInt(m[1], 10) < 1 ||
    		parseInt(m[1], 10) > days[parseInt(m[2], 10)-1] ||
    		parseInt(m[3], 10) < 1920 ||
    		parseInt(m[3], 10) > 2000 ) {
    		tooltip($('#registration-form [name="birthday"]').get(0), message);
    	} else {
    		removett($('#registration-form [name="birthday"]').get(0));
    	}
    }

    Не очень говно, но вполне себе код.

    ixth, 03 Марта 2010

    Комментарии (23)
  10. JavaScript / Говнокод #2508

    +159.8

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    document.getElementById('f1').style.display = ((document.getElementById('f1').style.display=='none'&&id==1)?'block':'none');
     document.getElementById('t1').style.display = ((document.getElementById('f1').style.display=='block')?'none':'block');
     document.getElementById('f2').style.display = ((document.getElementById('f2').style.display=='none'&&id==2)?'block':'none');
     document.getElementById('t2').style.display = ((document.getElementById('f2').style.display=='block')?'none':'block');
     document.getElementById('f3').style.display = ((document.getElementById('f3').style.display=='none'&&id==3)?'block':'none');
     document.getElementById('t3').style.display = ((document.getElementById('f3').style.display=='block')?'none':'block');

    Есть три формы, нужно показывать только одну. При клике на заголовок форма разворачивается, а вместо остальных появляются подсказки.

    erfen, 31 Января 2010

    Комментарии (4)
  11. PHP / Говнокод #2756

    +159.7

    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
    $q = "SELECT product_id FROM jos_vm_product WHERE product_parent_id=$prodid";
        $res = mysql_query($q);
        if(!$res) die('Error 3: ' . mysql_error());
        
        $td_str=' ';
        $pos_atrribs=array();
        $row=0;
        $sort_by=0;
        $subrows=0;
        $show_cells=0;
        
        while($pos=mysql_fetch_array($res))
        {
          $posid=$pos['product_id'];
          $q1 = "SELECT attribute_value,attribute_name  FROM jos_vm_product_attribute WHERE product_id=$posid ORDER BY attribute_name DESC";
          $res1 = mysql_query($q1);
          if(!$res1) die('Error 4: ' . mysql_error());
          
          $col=0;
          while($posattrib=mysql_fetch_array($res1))
          {
            if($posattrib['attribute_name']=='Код фитинга' || $posattrib['attribute_name']=='Код' || $posattrib['attribute_name']=='Кодфитинга' || $posattrib['attribute_name']=='Ordering code')
            {
              $sort_by=$posattrib['attribute_name'];
            }
            $pos_atrribs[$row][$posattrib['attribute_name']]=$posattrib['attribute_value'];
            $col++;
          }
          
          $q1 = "SELECT product_in_stock FROM jos_vm_product WHERE product_id=$posid";
          $res1 = mysql_query($q1);
          if(!$res1) die('Error 4: ' . mysql_error());
          $stock=mysql_fetch_array($res1);
          
          $pos_atrribs[$row]['Склад']=$stock['product_in_stock'];
          
          $q1 = "SELECT product_price FROM jos_vm_product_price WHERE product_id=$posid";
          $res1 = mysql_query($q1);
          if(!$res1) die('Error 4: ' . mysql_error());
          $price=mysql_fetch_array($res1);
          
          $pos_atrribs[$row]['Цена EUR']=$price['product_price'];
          $pos_atrribs[$row]['posid']=$posid;
          $row++;
        }
    
    function columnSort($sorted, $column) {
            for ($i=0; $i < sizeof($sorted)-1; $i++) 
            {
              for ($j=0; $j<sizeof($sorted)-1-$i; $j++)
                if ($sorted[$j][$column] > $sorted[$j+1][$column]) 
                {
                  $tmp = $sorted[$j];
                  $sorted[$j] = $sorted[$j+1];
                  $sorted[$j+1] = $tmp;
              }
            }
            return $sorted;
        }    
        $sorted = columnSort($pos_atrribs, $sort_by);
        unset($pos_atrribs);
        
        $new_attribs=array();
        $num=0;
        $matches=0;
        for ($i=0; $i < sizeof($sorted); $i++) 
        {
          if(substr($sorted[$i][$sort_by],-2)!='.1' && substr($sorted[$i][$sort_by],-2)!='.4')
          {
            $fs=(int)substr($sorted[$i][$sort_by],0,3);
            $fe=(int)substr($sorted[$i][$sort_by],-3);
            
            for ($j=0; $j<sizeof($sorted); $j++)
            { 
              $ss=(int)substr($sorted[$j][$sort_by],0,3);
              $se=(int)substr($sorted[$j][$sort_by],-3);
              
              if ($fe==$se && $fs<$ss) 
              {
                $new_attribs[$num]=array($sorted[$i],$sorted[$j]);
                $num++;
                $matches++;
              }
            }
          }
        }

    Джомло проект, в ходе запросов(11-46 строки) получает 250+ запросов к БД, и время выполнения только этого куска 40+ секунд. Далее сортировка тоже не слабая.

    kein, 11 Марта 2010

    Комментарии (6)