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

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

    +162

    1. 1
    2. 2
    $id = $this->db->fetchCol('SELECT id FROM data;');
    $names = $this->db->fetchCol('SELECT name FROM points INNER JOIN data ON points.id = data.point_id_from;');

    Zend Db usage

    jf4ever, 18 Ноября 2011

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

    +162

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    $tmp_arr=array();
    $id1_str='';
    $root_str='';
    foreach($id1 as $id){
    	$id1_str.=$id['id'].' , ';
    	if(!isset($tmp_arr[$id['root']])){
    		$root_str.=$id['root'].' , ';
    		$tmp_arr[$id['root']]=true;
    	}
    }

    это типа такой способ собрать distinct root ids в строку!
    не забыть потом откусить хвост ' , '
    нормальные герои не ищут легких путей

    shitcoder, 17 Ноября 2011

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

    +162

    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
    //create image array
             $images = array();
             //fill it
             for ($i = 1; $i <= 180; $i++) 
                if (($i != $passimage1)&&($i != $passimage2)&&($i != $passimage3)&&($i != $passimage4)) 
                $images[] = $i;
             //randomize it
             for ($i = 0; $i < 176; $i++) {
                $r = rand(0,175);
                $swap = $images[$r];
                $images[$r] = $images[$i];
                $images[$i] = $swap;
             }

    denis90, 16 Ноября 2011

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

    +162

    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
    $er = array();
    
    $file1=$config['tpl_dir'].$config['general']['site_template'].'/style/catalog.css';
    $file2=$config['tpl_dir'].$config['general']['site_template'].'/module/catalog.html';
    $file3=$config['tpl_dir'].$config['general']['site_template'].'/module/catalog_read.html';
    $file4='modules/catalog/setup_catalog/table_catalog.MYD';
    $file5='modules/catalog/setup_catalog/table_catalog_cats.MYD';
    $file6='modules/catalog/setup_catalog/table_catalog_comments.MYD';
    $file7='modules/catalog/setup_catalog/table_catalog_rating.MYD';
    
    
    if(file_exists($file1)==True) {}else{$er[]="нет файла стилей <b>\"catalog.css\"</b> <br> он должен находиться в<b> $file1</b>"; }
    if(file_exists($file2)==True) {}else{$er[]="нет файла дизайна <b>\"catalog.html\"</b> <br> он должен находиться в<b> $file2</b>"; }
    if(file_exists($file3)==True) {}else{$er[]="нет файла дизайна <b>\"catalog_read.html\"</b> <br> он должен находиться в<b> $file3</b>"; }
    if(file_exists($file4)==True) {}else{$er[]="нет файла таблицы <b>\"table_catalog.MYD\"</b> <br> он должен находиться в<b> $file4</b>"; }
    if(file_exists($file5)==True) {}else{$er[]="нет файла таблицы <b>\"table_catalog_cats.MYD\"</b> <br> он должен находиться в<b> $file5</b>"; }
    if(file_exists($file6)==True) {}else{$er[]="нет файла таблицы <b>\"table_catalog_comments.MYD\"</b> <br> он должен находиться в<b> $file6</b>"; }
    if(file_exists($file7)==True) {}else{$er[]="нет файла таблицы <b>\"table_catalog_rating.MYD\"</b> <br> он должен находиться в<b> $file7</b>"; }

    Установщик модуля. Условия проверки доставляют: бул сравнимаем с булом (и получаем бул), вместо отрицания держим еще одну ветку условия.

    Мартин, 12 Ноября 2011

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

    +162

    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
    function section($sct,$grp = 'all') {
    		global $g,$a,$d,$lists,$master_list,$currency;
    		$access = ac_section($sct,$this->adminmode);
    		if ($access['r'] == 'no' )  {header("Location: /errors/all/403");}
    		$master = q1("SELECT * FROM `_s` WHERE `_id`='".$sct."' AND `_l`='".GetLanguage()."'");
    		if (isset($_POST['pcounts'])) {
    			$_SESSION['_pcount']=(int)$_POST['pcounts'];
    		} elseif (isset($_GET['pcounts'])) {
    			$_SESSION['_pcount']=(int)$_GET['pcounts'];
    		}
    		if (isset($_SESSION['_pcount'])) $master['_pcount']=$_SESSION['_pcount'];
            $master_struct = $this->Struct_fields(qa("SHOW COLUMNS FROM `_s`"));
    		$grps = qa("SELECT * FROM `_g` WHERE `_s`='".$sct."' AND `_g`='".$grp."' AND `_l`='".GetLanguage()."'".((!empty($a[0]['con']))?(" AND `header` LIKE '%".$a[0]['con']."%'"):('')).((!empty($a[0]['gby']))?(" ORDER BY `".$a[0]['gby']."`".((!empty($a[0]['gdir']))?(' DESC'):(' ASC'))):(" ORDER BY ".$master['_sorting'])).((!empty($a[0]['gfrom']))?(' LIMIT '.$a[0]['gfrom'].','.((!empty($a[0]['gper']))?($a[0]['gper']):((!empty($master['_gcount']))?($master['_gcount']):('10')))):(' LIMIT 0,'.((!empty($a[0]['gper']))?($a[0]['gper']):((!empty($master['_gcount']))?($master['_gcount']):('10'))))));
    		$this->cq++;
    		$grps_nav_count = qa("SELECT count(*) `c` FROM `_g` WHERE `_s`='".$sct."' AND `_g`='".$grp."' AND `_l`='".GetLanguage()."'".((!empty($a[0]['con']))?(" AND `header` LIKE '%".$a[0]['con']."%'"):('')));
    		$grps_len = sizeof($grps);
    		$grps_struct = $this->Struct_fields(qa("SHOW COLUMNS FROM `_g`"));
    		$pgs = qa("SELECT * FROM `_p` WHERE `_s`='".$sct."' AND `_g`='".$grp."' AND `_l`='".GetLanguage()."'".((!empty($a[0]['con']))?(" AND `header` LIKE '%".$a[0]['con']."%'"):('')).((!empty($a[0]['by']))?(" ORDER BY `".$a[0]['by']."`".((!empty($a[0]['dir']))?(' DESC'):(' ASC'))):(" ORDER BY ".$master['_sorting'])).((!empty($a[0]['from']))?(' LIMIT '.$a[0]['from'].','.((!empty($a[0]['per']))?($a[0]['per']):((!empty($master['_pcount']))?($master['_pcount']):('10')))):(' LIMIT 0,'.((!empty($a[0]['per']))?($a[0]['per']):((!empty($master['_pcount']))?($master['_pcount']):('10'))))));
    		$this->cq++;
    		$pgs_nav_count = qa("SELECT count(*) `c` FROM `_p` WHERE `_s`='".$sct."' AND `_g`='".$grp."' AND `_l`='".GetLanguage()."'".((!empty($a[0]['con']))?(" AND `header` LIKE '%".$a[0]['con']."%'"):('')));
    		$this->cq++;
    		$pgs_len = sizeof($pgs);
    		$pgs_struct = $this->Struct_fields(qa("SHOW COLUMNS FROM `_p`"));
    		$list_g = '';
    		$list_p = '';
    // Дальше еще строк 200 подобного кода

    Нашел бэкап сайта, который надо было дорабатывать
    И это только одна функция одного из классов. Всего около 15 классов, в каждом по 30-40 функций.
    При этом есть еще куча файлов вызываемых напрямую(отправка сообщений, добавление/редактирование/удаление данных в админке), хотя и используется mod_rewrite

    долго думал, потом переписал нужные куски заново

    Bagration, 11 Ноября 2011

    Комментарии (28)
  7. C++ / Говнокод #8420

    +162

    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
    /**/
    	TCHAR* szFileType = _T("");
    	int ftype = JGetByte( hContact, "AvatarType", PA_FORMAT_UNKNOWN );
    	if( ftype == PA_FORMAT_UNKNOWN ) {
    		WIN32_FIND_DATA ffd;
    		HANDLE hFind = FindFirstFile( ptszDest, &ffd );
    		if ( hFind != INVALID_HANDLE_VALUE ) {
    			wchar_t* szExt = m_strrchrs( ffd.cFileName, ".\\" );
    			if( szExt ) {
    				if( !_tcsicmp( szExt, _T(".jpg") ) )
    					ftype = PA_FORMAT_JPEG;
    				else if( !_tcsicmp( szExt, _T(".png") ) )
    					ftype = PA_FORMAT_PNG;
    				else if( !_tcsicmp( szExt, _T(".gif") ) )
    					ftype = PA_FORMAT_GIF;
    				else if( !_tcsicmp( szExt, _T(".bmp") ) )
    					ftype = PA_FORMAT_BMP;
    				if( ftype != PA_FORMAT_UNKNOWN )
    					JSetByte( hContact, "AvatarType", ftype );
    			}
    			FindClose( hFind );
    		}
    	}
    	switch( ftype ) {
    		case PA_FORMAT_JPEG: szFileType = _T("jpg");   break;
    		case PA_FORMAT_PNG:  szFileType = _T("png");   break;
    		case PA_FORMAT_GIF:  szFileType = _T("gif");   break;
    		case PA_FORMAT_BMP:  szFileType = _T("bmp");   break;
    	}

    http://infium.googlecode.com/svn/trunk/Jabber/jabber_misc.cpp

    bot-minurast, 03 Ноября 2011

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

    +162

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    $.ajax({
           url: host + "json/" + action + "/?event-name=" + 
                   $("#event-name").val() +  
                   "&event-date-from=" + $("#event-date-from").val() + 
                   "&event-date-to=" + $("#event-date-to").val() + 
                   "&event-place-id=" + $("#event-place-id").val() +
                   "&event-id=" + $("#event-id").val() +
                   "&event-pls=" + $("#query").val(),

    Вот, что осталось в наследство от предшественника... И так во всем проекте FUUUUU~~~~~~

    unkwua, 01 Ноября 2011

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

    +162

    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
    //записали значения, от которых отталкиваться будем. Типа первые значения. Почти повторяют столбцы в таблице
    $maxv1=303268.26141;
    $maxv2=0;
    $maxv3=0;
    $maxm1=294798.84277;
    $maxm2=0;
    $maxm3=0;
    $maxq=10067.89169;
    
    //а теперь финт ушами - находим сумму полей в таблице
    $thisres = mysql_db_query($base, "select * from $Tablename[3]", $link);
    while ($thisrow = mysql_fetch_array($thisres)) {
    	$maxv1+=0+(float)$thisrow['v1'];  //самая прекрасная часть
    	$maxv2+=0+(float)$thisrow['v2'];
    	$maxv3+=0+(float)$thisrow['v3'];
    	$maxm1+=0+(float)$thisrow['m_in'];
    	$maxm2+=0+(float)$thisrow['m_out'];
    	$maxm3+=0+(float)$thisrow['m3'];
    	$maxq+=0+(float)$thisrow['q'];
    }
    //и так еще 2 таблицы складываются

    Шедевр выдран из творения моего коллеги. Комментарии мои. Задача - найти разницу по каждому полю между двумя последними записями в таблице и результат записать в другую таблицу.

    zloiia, 30 Октября 2011

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

    +162

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    public function action_delete(){   
            if (ORM::factory($_GET['type'], $_GET['id'])->delete())        
                $arr[0] = array("text" => "ok");
            else
                $arr[0] = array("text" => "no");
                                                   
            echo json_encode($arr);                               
    }

    Метод контролера (kohana), который используется для ajax запросов. Хоть в нем ничего не проверяется, за то этот метод очень функциональный. С помощью GET request можно удалить из БД практически все!

    k1011, 27 Октября 2011

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

    +162

    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
    template <
    	typename PropertyOwner // Класс владельца
    >
    class properties {
    public:
    	// Получить указатель на владельца по указателю на свойство
    	static PropertyOwner * owner( void * property ) { 
    		int aai = (int)&(((PropertyOwner*)0)->__properties);
    		return (PropertyOwner *)((char*)property - aai);
    	}
    };
     
    /**
     * Шаблон класса свойства
     */
    template <
    	typename PropertyOwner, // Класс владельца
    	typename PropertyType, // Тип свойства
    	PropertyType (PropertyOwner::*getter)(), // Геттер
    	void (PropertyOwner::*setter)(PropertyType) > // Сеттер
    class property {
    public:
     
    	/**
    	 * Чтение свойства - вызов геттера
    	 */
    	operator PropertyType() {
    		return (properties<PropertyOwner>::owner( this )->*getter)();
    	}
     
    	/**
    	 * Запись в свойство - вызов сеттера
    	 */
    	void operator = ( const PropertyType & value ) {
    		(properties<PropertyOwner>::owner( this )->*setter)( value );
    	}
    };
     
    // Макросы для удобного определения свойств /////////
     
    /**
     * Начать объявления свойств в классе cls
     */
    #define properties_start(cls) union { properties<cls> __properties;
     
    /**
     * Закончить объявление свойств в классе cls
     */
    #define properties_end() };
     
    /**
     * Объявить свойство в классе cls типа type c геттером getter и сеттером setter
     */
    #define property(cls,type,getter,setter) property<cls,type,&cls::getter,&cls::setter>

    http://www.codenet.ru/progr/cpp/cpp-properties.php

    AnimeGovno-_-, 22 Октября 2011

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