1. Куча / Говнокод #9545

    +133

    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
    (require 'clsql)
    
    (clsql:file-enable-sql-reader-syntax)
    
    (clsql:connect
     '("localhost" "database" "user" "password")
     :database-type :mysql)
    
    (defun how-many-goods-do-you-have (year month)
      (declare
       (type (integer 2000 2011) year)
       (type (integer 1 12) month))
      (clsql:select [item_id] [sale_date]
    		:from "table"
    		:where [or
    		[is [null [sale_date]]]
    		[< [sale_date]
    		(clsql:sql 'str_to_date\(
    			   (format
    			    nil
    			    "~a-~2,'0d-00"
    			    year month)
    			   '|, '%Y-%m-%d')|
    			   )]]))

    Эксперименты :)

    wvxvw, 26 Февраля 2012

    Комментарии (14)
  2. PHP / Говнокод #9544

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    function GetMonthByNum($m)
    {
    	$month_int = array('01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12');
    	$month_str = array('Январь', 'Февраль', 'Март','Апрель', 'Мая', 'Июнь','Июль', 'Август', 'Сентябрь','Октябрь', 'Ноябрь', 'Декабрь');
    	return str_replace($month_int, $month_str, $m);
    }

    Начало своего пути программирования несколько лет назад. Тогда еще долго думал, как оптимизировать данный код.

    Freemy, 25 Февраля 2012

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

    +142

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    Zend_Validate::is('20120225 21:57:44', 'Date', array('Ymd H:i:s') // return false
    
    Zend_Validate::is('20120225', 'Date', array('Ymd') // return true
    
    Zend_Validate::is('21:57:44', 'Date', array('H:i:s') // return true

    Как сделать, что бы первая строка возвращала true?

    Slackline, 25 Февраля 2012

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

    +157

    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
    if(intval($data[0])>0){
      $massart=explode(" ",$data[1]);
      if($massart[0]){
        $infoarticle=mysql_query("SELECT `Message_ID`, `ExternalData` FROM `Message114` where `Article`='".mysql_escape_string($massart[0])."';");
        if(mysql_num_rows($infoarticle)){
          while($infoarticlerow=mysql_fetch_array($infoarticle)){ 
            $arrowitem["".$massart[0]]['name']=$data[1];
            $arrowitem["".$massart[0]]['id']=$infoarticlerow['Message_ID'];
            $arrowitem["".$massart[0]]['info']=$infoarticlerow['ExternalData'];
            for ($c=5; $c < $num; $c++) {
              if(intval($data[$c])>0){
                $arrowitem["".$massart[0]]['size'][$mssize[$c]]=$data[$c];    
              }
            }   
            if(floatval($arrowitem["".$massart[0]]['price'])==0){
              $arrowitem["".$massart[0]]['price']=floatval($data[3]);
            }else{
              if(floatval($arrowitem["".$massart[0]]['price'])>floatval($data[3])){
                $arrowitem["".$massart[0]]['price']=floatval($data[3]); 
              }
            }           
          } 
        }else{
          $notnetcat[]=$data[1];  
        }
      }
    }

    От нехватки рабочих рук отдали одну правку на фриланс. Рвусь между желанием всё переписать по-человечески и со спокойной совестью отчитаться перед заказчиком либо же забить (парню заплатили, блеать!), но потом краснеть за глюки этого чудо-кода, которые, жопой чую, обязательно возникнут.

    telnet, 25 Февраля 2012

    Комментарии (38)
  5. C# / Говнокод #9541

    +964

    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication7
    {
    
        class Program
        {
            static void Main(string[] args)
            {
            op: int b, c, d, e;
                c = 0;
                e = 1;
                Console.WriteLine("a - посчитать сумму");
                Console.WriteLine("b - посчитать произведение");
                Console.Write("вариант=");
                string p = Console.ReadLine();
                if (p == "a")
                {
                ok: Console.Write("С какого числа считаем:"); d = Convert.ToInt32(Console.ReadLine());
                    if (d == 0) goto op;
                    else
                    {
                        Console.Write("Число до которого считаем:"); b = Convert.ToInt32(Console.ReadLine());
                        for (int a = d; a <= b; a++)
                        {
                            c = c + a;
                            Console.WriteLine(c);
                        }
                        Console.WriteLine("Сумма цифр от " + d + " до " + b + " = " + c);
                        Console.ReadLine();
                        goto ok;
                    }
                }
                if (p == "b")
                {
                ol: Console.Write("С какого числа считаем:"); d = Convert.ToInt32(Console.ReadLine());
                    if (d == 0) goto op;
                    else
                    {
                        Console.Write("Число до которого считаем:"); b = Convert.ToInt32(Console.ReadLine());
                        for (int a = d; a <= b; a++)
                        {
                            e = e * a;
                            Console.WriteLine(e);
                        }
                        Console.WriteLine("Произведение чисел от " + d + " до " + b + " = " + e);
                        Console.ReadLine();
                        goto ol;
                    }
                }
                else goto op;
            }
        }
    }

    Нашёл на одном форуме

    high-five, 25 Февраля 2012

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

    +157

    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
    <?php
    function getRusMonth($month)
    {
      if($month > 12 || $month < 1) return FALSE;
      $aMonth = array('январь',
    		  'февраль',
    		  'март',
    		  'апрель',
    		  'май',
    		  'июнь',
    		  'июль',
    		  'август',
    		  'сентябрь',
    		  'октябрь',
    		  'ноябрь',
    		  'декабрь');
      return $aMonth[$month - 1];
    }
    
    function gen_months_list()
    {
    	global $monthnum;
    	$year = date("Y");
    	
    	for($month = 1; $month <= 12; $month++)
    	{
    		if($month <= 9)
    		{
    			if("0".$month == $monthnum) $mn_active = " class=\"active\"";
    			$month_list .= "<li><a href=\"/".$year."/0".$month."/\"".$mn_active.">".getRusMonth($month)."</a></li>\n";
    		}
    		else
    		{
    			if($month == $monthnum) $mn_active = " class=\"active\"";
    			$month_list .= "<li><a href=\"/".$year."/".$month."/\"".$mn_active.">".getRusMonth($month)."</a></li>\n";
    		}
    		$mn_active = "";
    	}
    	
    	return $month_list;
    }
    ?>

    V 2.0

    varg242, 25 Февраля 2012

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

    +158

    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
    <?php
    $year = date("Y");
    
    <li><a href="/<?=$year.'/0'.(++$month);?>/">Январь</a></li>
    <li><a href="/<?=$year.'/0'.(++$month);?>/">Февраль</a></li>
    <li><a href="/<?=$year.'/0'.(++$month);?>/">Март</a></li>
    <li><a href="/<?=$year.'/0'.(++$month);?>/">Апрель</a></li>
    <li><a href="/<?=$year.'/0'.(++$month);?>/">Май</a></li>
    <li><a href="/<?=$year.'/0'.(++$month);?>/">Июнь</a></li>
    <li><a href="/<?=$year.'/0'.(++$month);?>/">Июль</a></li>
    <li><a href="/<?=$year.'/0'.(++$month);?>/">Август</a></li>
    <li><a href="/<?=$year.'/0'.(++$month);?>/">Сентябрь</a></li>
    <li><a href="/<?=$year.'/'.(++$month);?>/">Октябрь</a></li>
    <li><a href="/<?=$year.'/'.(++$month);?>/">Ноябрь</a></li>
    <li><a href="/<?=$year.'/'.(++$month);?>/">Декабрь</a></li>
    
    ?>

    Искренне ваш,

    varg242, 25 Февраля 2012

    Комментарии (6)
  8. 1C / Говнокод #9538

    −137

    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
    Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    	
    	Если ЭтоНовый() Тогда
    		Запрос = Новый Запрос;
    		Запрос.УстановитьПараметр("Период", НачалоГода(ТекущаяДата()));
    		Запрос.Текст = "ВЫБРАТЬ
    		|	Максимум(ПлатежноеПоручение.Номер) КАК Номер
    		|ИЗ
    		|	Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
    		|ГДЕ
    		|	ПлатежноеПоручение.Дата >= &Период";
    		Выборка = Запрос.Выполнить().Выбрать();
    		НомерМакс = 0;
    		Пока Выборка.Следующий() Цикл
    			Если НомерМакс < Число(Выборка.Номер) Тогда
    				НомерМакс = Число(Выборка.Номер);
    				Если СтрДлина(НомерМакс) = 1 И НомерМакс<9 Тогда
    					НомерДок ="0000000000" + Строка(Число(Число(Выборка.Номер) + 1));
    				ИначеЕсли (СтрДлина(НомерМакс) = 2 И НомерМакс<>99) Или НомерМакс=9 Тогда
    					НомерДок ="000000000" + Строка(Число(Число(Выборка.Номер) + 1));
    				ИначеЕсли (СтрДлина(НомерМакс) = 3 И НомерМакс<>999) Или НомерМакс<>99 Тогда
    					НомерДок ="00000000" + Строка(Число(Число(Выборка.Номер) + 1));
    				ИначеЕсли (СтрДлина(НомерМакс) = 4 И НомерМакс<>9999) Или НомерМакс<>999 Тогда
    					НомерДок ="0000000" + Строка(Число(Число(Выборка.Номер) + 1));
    				ИначеЕсли (СтрДлина(НомерМакс) = 5 И НомерМакс<>99999) Или НомерМакс<>9999 Тогда
    					НомерДок ="000000" + Строка(Число(Число(Выборка.Номер) + 1));
    				ИначеЕсли (СтрДлина(НомерМакс) = 6 И НомерМакс<>999999) Или НомерМакс<>99999 Тогда
    					НомерДок ="00000" + Строка(Число(Число(Выборка.Номер) + 1));
    				КонецЕсли;
    			КонецЕсли;
    		КонецЦикла;
    		ЭтотОбъект.Номер = НомерДок;
    	КонецЕсли;
    	
    КонецПроцедуры

    Мое творение, писАл на полном серьезе. В одном из документов БП пользователь отредактировал вручную номер документа, после этого сбилась нумерации. Документы с "неправильными" номерами удалили и добавили вновь - было поздно. Типового решения проблемы не нашлось и был написан этот код.
    Можно увидеть очень интересное: нахождение максимального значения в запросе и одновременный бесполезный прогон всего цикла, чтобы снова найти максимальное значение и много чего другого.

    ErrorEd88, 24 Февраля 2012

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

    +159

    1. 1
    2. 2
    define('ASC', 'ASC');
    define('DESC', 'DESC');

    *facepalm*

    codename, 24 Февраля 2012

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

    −123

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    SELECT keywords_ru AS keywords, title_ru AS title, description_ru AS description
    FROM alo_seo
    WHERE
    	( 1 AND city_id="348" AND cat_id=(SELECT id FROM alo_categories WHERE 1 AND path="peryferija" LIMIT 1) ) OR
    	( 1 AND city_id="348" AND cat_id=(SELECT id FROM alo_categories WHERE 1 AND path="komp-yuterna-tehnika" LIMIT 1) ) OR
    	( 1 AND cat_id=(SELECT id FROM alo_categories WHERE 1 AND path="peryferija" LIMIT 1) ) OR
    	( 1 AND cat_id=(SELECT id FROM alo_categories WHERE 1 AND path="komp-yuterna-tehnika" LIMIT 1) )
    LIMIT 1;

    andnix, 24 Февраля 2012

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