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

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

    +2

    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
    $d = getdate();
    $formatMon = '';
    if ($d['mon'] < 10) {
    	$formatMon = '0';
    }
    
    $formatMday = '';
    if ($d['mday'] < 10) {
    	$formatMday = '0';
    }
    
    $formatHour = '';
    if ($d['hours'] < 10) {
    	$formatHour = '0';
    }
    
    $formatMinutes = '';
    if ($d['minutes'] < 10) {
    	$formatMinutes = '0';
    }
    
    $formatSeconds = '';
    if ($d['seconds'] < 10) {
    	$formatSeconds = '0';
    }
    
    $today = $formatMday . $d['mday'] . '.' . $formatMon . $d['mon'] . '.' . $d['year'] . ' ' . $formatHour . $d['hours'] . ':' . $formatMinutes . $d['minutes'] . ':' . $formatSeconds . $d['seconds'];

    Форматирование датывремени

    foreign, 25 Ноября 2015

    Комментарии (2)
  3. C# / Говнокод #19081

    +2

    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
    bool isLiveLine = false;
    bool isQALine = false;
    
    if (lineInfo.IndexOf("QL") != -1)
    {
     isLiveLine = true;
     isQALine = true;
    }
    else if (lineInfo.IndexOf("Q") != -1)
    {
     isLiveLine = false;
     isQALine = true;
    }
    else if (lineInfo.IndexOf("L") != -1)
    {
     isLiveLine = true;
     isQALine = false;
    }
    else
    {
     isLiveLine = false;
     isQALine = false;
    }

    pro687, 24 Ноября 2015

    Комментарии (4)
  4. Куча / Говнокод #19076

    +2

    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
    <ul class="top-level-menu">
                        <li style="width:14.185714285714%;" class="with-img" id="m_2641231722"> <span class="top-level-label"><a href="/catalog/plitnye_materialy_1/" title="Плитные материалы">Плитные материалы</a></span>
                </li>
                        <li style="width:14.185714285714%;" class="with-img" id="m_1862201143"> <span class="top-level-label"><a href="/catalog/mebelnaya_furnitura_1/" title="Мебельная фурнитура">Мебельная фурнитура</a></span>
                </li>
                        <li style="width:14.185714285714%;" class="with-img" id="m_2776938111"> <span class="top-level-label"><a href="/catalog/kromka_i_plastiki_1/" title="Кромка и пластики">Кромка и пластики</a></span>
                </li>
                        <li style="width:14.185714285714%;" class="with-img" id="m_2757459272"> <span class="top-level-label"><a href="/catalog/stoleshnitsy_stenpaneli_1/" title="Столешницы, стенпанели">Столешницы, стенпанели</a></span>
                </li>
                        <li style="width:14.185714285714%;" class="with-img" id="m_3136652235"> <span class="top-level-label"><a href="/catalog/razdvizhnye_sistemy_1/" title="Раздвижные системы">Раздвижные системы</a></span>
                </li>
                        <li style="width:14.185714285714%;" class="with-img" id="m_3746925619"> <span class="top-level-label"><a href="/catalog/fasadnoe_napolnenie_1/" title="Фасадное наполнение">Фасадное наполнение</a></span>
                </li>
                        <li style="width:14.185714285714%;" class="with-img" id="m_133346203"> <span class="top-level-label"><a href="/catalog/uslugi_1/" title="Услуги">Услуги</a></span>
                </li>
        </ul>

    Stefan_Hitskov, 24 Ноября 2015

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

    +2

    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
    public static byte[] HMACSHA256(ProtectedData key, byte[] data)
    {
        using (var _key = key.Get())
        using (var hmac = new HMACSHA256(_key))
            return hmac.ComputeHash(data);
    }
    
    public static byte[] HMACSHA256(ProtectedData key, Stream stream)
    {
        using (var _key = key.Get())
        using (var hmac = new HMACSHA256(_key))
            return hmac.ComputeHash(stream);
    }
    
    public static byte[] HMACSHA256(byte[] key, byte[] data)
    {
        using (var hmac = new HMACSHA256(key))
            return hmac.ComputeHash(data);
    }
    
    public static byte[] HMACSHA256(byte[] key, Stream stream)
    {
        using (var hmac = new HMACSHA256(key))
            return hmac.ComputeHash(stream);
    }
    
    public static byte[] MD5(byte[] data)
    {
        using (var h = System.Security.Cryptography.MD5.Create())
        { return h.ComputeHash(data); }
    }
    
    public static byte[] MD5(Stream stream)
    {
        using (var h = System.Security.Cryptography.MD5.Create())
        { return h.ComputeHash(stream); }
    }
    
    public static byte[] SHA1(byte[] data)
    {
        using (var h = System.Security.Cryptography.SHA1.Create())
            return h.ComputeHash(data);
    }
    
    public static byte[] SHA1(Stream stream)
    {
        using (var h = System.Security.Cryptography.SHA1.Create())
            return h.ComputeHash(stream);
    }
    
    public static byte[] SHA256(byte[] data)
    {
        using (var h = System.Security.Cryptography.SHA256.Create())
            return h.ComputeHash(data);
    }
    
    public static byte[] SHA256(Stream stream)
    {
        using (var h = System.Security.Cryptography.SHA256.Create())
            return h.ComputeHash(stream);
    }
    
    public static byte[] SHA384(byte[] data)
    {
        using (var h = System.Security.Cryptography.SHA384.Create())
            return h.ComputeHash(data);
    }
    
    public static byte[] SHA384(Stream stream)
    {
        using (var h = System.Security.Cryptography.SHA384.Create())
            return h.ComputeHash(stream);
    }
    
    public static byte[] SHA512(byte[] data)
    {
        using (var h = System.Security.Cryptography.SHA512.Create())
            return h.ComputeHash(data);
    }
    
    public static byte[] SHA512(Stream stream)
    {
        using (var h = System.Security.Cryptography.SHA512.Create())
            return h.ComputeHash(stream);
    }

    Психанул

    yourmom, 20 Ноября 2015

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

    +2

    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
    using Microsoft.VisualBasic;
    
            public string ConvertEnoviaNameForDB1(string name, char Separ = '%')
            {
                string functionReturnValue = null;
                functionReturnValue = name;
                //input filename
                //check ENOVIA filenames (example c0234244 --.catpart or c0234244--.catpart)
                //output filename in DB format for operator LIKE(c0234244 --.catpart -> c0234244%.catpart)
                int i = 0;
                int loc1 = Strings.InStr(name, ".CATP", CompareMethod.Text);
                bool NeedToConvert = false;
                char Chr1 = '1';
                char ChrBefore1 = '1';
                //check catparts and catproducts ONLY
                if (loc1 > 0)
                {
                    int NumSymbols = loc1 - 2;
                    if (NumSymbols > 6)
                        NumSymbols = 6;
                    string tmpstr1 = Strings.Mid(name, loc1 - NumSymbols - 1, NumSymbols);
                    //analyse 4 chars max
                    for (i = 0; i <= loc1 - 2; i++)
                    {
                        Chr1 = name[loc1 - 2 - i];
                        //3-string array start from 0(position = count-1)
                        if ((Strings.Asc(ChrBefore1) >= 65 & Strings.Asc(ChrBefore1) <= 90))
                        {
                            if (Chr1 == ' ')
                            {
                                i = i + 2;
                                break; // TODO: might not be correct. Was : Exit For
                            }
                            else if (Chr1 == '-')
                            {
                                ChrBefore1 = Chr1;
                                //means can be  two chars (ex. "AA") max
                            }
                            else if ((Strings.Asc(Chr1) >= 65 & Strings.Asc(Chr1) <= 90) & i < 2)
                            {
                                ChrBefore1 = Chr1;
                            }
                            else
                            {
                                break; // TODO: might not be correct. Was : Exit For
                            }
                        }
                        else if (ChrBefore1 == '-')
                        {
                            if (Chr1 == ' ')
                            {
                                i = i + 2;
                                break; // TODO: might not be correct. Was : Exit For
                                // And i < 3 Then 'means can be "---" - not more
                            }
                            else if (Chr1 == '-')
                            {
                                //ChrBefore1 = Chr1
                            }
                            else
                            {
                                i = i + 1;
                                break; // TODO: might not be correct. Was : Exit For
                            }
                            //ChrBefore1 = Chr1
                            // means start
                        }
                        else if (ChrBefore1 == '1')
                        {
                            if (Chr1 == '-' | (Strings.Asc(Chr1) >= 65 & Strings.Asc(Chr1) <= 90))
                            {
                                ChrBefore1 = Chr1;
                            }
                            else
                            {
                                i = i + 1;
                                break; // TODO: might not be correct. Was : Exit For
                            }
    
                        }
                    }
                    functionReturnValue = Strings.Left(name, loc1 - i) + Separ + Strings.Right(name, Strings.Len(name) - loc1 + 1);
                }
                return functionReturnValue;
            }

    Наличие комментария в 7ой строчке приводит в неописуемый восторг.
    Без него понимать поведение функции пришлось бы с болью.
    И да, в RegExp могут не только лишь все. Мало кто может.

    Szer, 20 Ноября 2015

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

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    for(int c = 0; c < 2; ++c) 
    {
        if(c) 
        {
            // do something 
        }
        else 
        {
            // do something else
        }
    }

    Одна из причин необходимости разворачивания циклов.

    absolut, 19 Ноября 2015

    Комментарии (64)
  8. Куча / Говнокод #19049

    +2

    1. 1
    2. 2
    А что Рутубом кто то пользуется ? 
    http://habrahabr.ru/company/rutube/blog/271143/

    Vasiliy, 19 Ноября 2015

    Комментарии (140)
  9. C++ / Говнокод #19027

    +2

    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
    95. 95
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll ;
    const int maxn = 100010 ;
    int n , m;
    struct node {
        int x , y;
    }p[10];
    bool cmp(node a , node b)
    {
        if(a.x == b.x) return a .y < b.y ;
        return a.x < b.x ;
    }
    int main()
    {
        scanf("%d",&n) ;
        for(int i = 0 ;i<n ;i++){
            scanf("%d%d",&p[i].x , &p[i].y) ;
        }
        sort(p,p+n ,cmp) ;
        if(n==1){
            printf("-1\n") ;
        }
        else if(n == 2){
            if(p[0].x == p[1].x ||p[0].y == p[1].y){
                printf("-1\n") ;
            }
            else{
                printf("%d\n",abs( p[1].x - p[0].x) * abs(p[1].y - p[0].y))  ;
            }
        }
        else if(n == 3){
            if(p[0].x == p[1].x && p[1].x == p[2].x){
                printf("-1\n") ;
            }
            else if(p[0].y == p[1].y && p[1].y == p[2].y){
                printf("-1\n") ;
            }
            else if(p[0].x == p[1].x){
                if(p[0].y == p[2].y){
                    printf("%d\n",abs(p[1].y - p[2].y) * abs(p[0].x - p[2].x)) ;
                }
                else if(p[1].y == p[2].y){
                    printf("%d\n",abs(p[0].y - p[2].y )*abs(p[0].x -p[2].x)) ;
                }
                else{
                    printf("-1\n") ;
                }
            }
            else if(p[1].x == p[2].x){
                if(p[0].y == p[1].y){
                    printf("%d\n",abs(p[0].y - p[2].y) * abs(p[0].x - p[2].x)) ;
                }
                else if(p[0].y == p[2].y){
                    printf("%d\n",abs(p[0].y - p[1].y )*abs(p[0].x -p[2].x)) ;
                }
                else{
                    printf("-1\n");
                }
            }
           else{
                printf("-1\n");
            }
        }
        else {
            if(p[0].x != p[1].x || p[2].x !=p[3].x ||p[1].y !=p[3].y ||p[0].y != p[2].y ){
                printf("-1\n") ;
            }
            else{
                int flag = 1;
                for(int i = 0 ; i< 4;i++){
                    for(int j = i+1 ;j<4 ;j++){
                        for(int k = j+1 ;k<4;k++){
                            if(p[i].x == p[j].x && p[j].x == p[k].x){
                                printf("-1\n");
                                flag = 0;
                                break ;
                            }
                            else if(p[i].y == p[j].y && p[j].y == p[k].y){
                                printf("-1\n") ;
                                flag = 0;
                                break ;
                            }
                        }
                        if(!flag) break ;
                    }
                    if(!flag) break ;
                }
                if(flag){
                    printf("%d\n",abs(p[1].x - p[3].x) * abs(p[0].y - p[1].y)) ;
                }
            }
        }
        return 0;
    }

    олимпиадники такие олимпиадники

    XYEHOC, 15 Ноября 2015

    Комментарии (62)
  10. C# / Говнокод #19026

    +2

    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
    #include <fstream>
    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    void main()
    	ifstream in("D:\\MetATetratronicLessonsABberation\\LibraryAbsoluteBallistikAcoustic_1\\Right.txt");//Даётся файл, содержащий единицы и нули, 1 - человек есть, 0 - человека нет
    	in >> s1;
    	cout << "Содержимое файла Right.txt: " << endl << s1 << endl;
    	int CountRDoor = 0;
    			CountRDoor++;
    	}
    	cout << "Кол-во человек, прошедших через правую дверь = " << CountRDoor << endl;
    	cout << "________________________________________________________________________________"; //< Для более лёгкой навигации
      //printf("%c", 7);
    	cout << endl;
    	char s2[4096];
    	ifstream in2("D:\\MetATetratronicLessonsABberation\\LibraryAbsoluteBallistikAcoustic_1\\Left.txt");
    	in2 >> s2;
    	in2.close();
    	cout << "Содержимое файла Left.txt: " << endl << s2 << endl;
    	int CountLDoor = 0;
    	int j = 1;
    	while (j != 4095)
    	{
    		if (s2[j] < s2[j + 1])
    			CountLDoor++;
    		j++;
    	}
    	cout << "Кол-во человек, прошедших через левую дверь = " << CountLDoor << endl;
    	cout << "________________________________________________________________________________";
    	//printf("%c", 7);
    	cout << endl;
    	char s3[4096];
    	ifstream in3("D:\\MetATetratronicLessonsABberation\\LibraryAbsoluteBallistikAcoustic_1\\Found.txt");
    	in3 >> s3;
    	in3.close();
    	cout << "Содержимое файла Found.txt: " << endl << s3 << endl;
    	int CountFound = 0;
    	int k = 1;
    	while (k != 4095)
    	{
    		if (s3[k] > s3[k + 1])
    			CountFound++;
    		k++;
    	}
    	cout << "Общее кол-во человек = " << CountFound << endl << "\a";
    	cout << "________________________________________________________________________________";
    	system("pause");
    }

    Универ, 1-й курс. Необходимо было написать программу, на вход которой даётся 2 файла, содержащих 1 и 0, и 1 файл, содержащий диапазон чисел от 1 до 9, показывающих кол-во человек в кадре абстрактной камеры одновременно. Местоположение каждого файла строго определено. И да, не пытайтесь вдуматься, что обозначают названия папок в путях, так как смысла там никакого нет)

    Z1VR, 14 Ноября 2015

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

    +2

    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
    class/View.php
    
    <?php
    
    class View {
    
    ...
    
      public function compile() {
        $view_src = file_get_contents(VIEW_SRC_PATH . $this->full_name . EXT);
        // echo
        $view_src = preg_replace("/\{\{(\w+)\}\}/", "<?php echo \$$1; ?>", $view_src);
        $view_src = preg_replace("/\{\{(\w+)\|(\w+)\}\}/", "<?php echo \$$1['$2']; ?>", $view_src);
        $view_src = preg_replace("/\{\{(\w+)\.(\w+)\}\}/", "<?php echo \$$1->$2; ?>", $view_src);
        // foreach
        $view_src = preg_replace("/<!--each\s+(\w+)\s+in\s+(\w+)-->/", "<?php foreach(\$$2 as \$$1): ?>", $view_src);
        $view_src = preg_replace("/<!--each\s+(\w+)\s+in\s+(\w+)\|(\w+)-->/", "<?php foreach(\$$2['$3'] as \$$1): ?>", $view_src);
        $view_src = preg_replace("/<!--each\s+(\w+)\s+in\s+(\w+)\.(\w+)-->/", "<?php foreach(\$$2->$3 as \$$1): ?>", $view_src);
        $view_src = preg_replace("/<!--each\s+(\w+)\s+(\w+)\s+in\s+(\w+)\.(\w+)-->/", "<?php foreach(\$$3->$4 as \$$1 => \$$2): ?>", $view_src);
        $view_src = preg_replace("/<!--each\s+(\w+)\s+(\w+)\s+in\s+(\w+)-->/", "<?php foreach(\$$3 as \$$1 => \$$2): ?>", $view_src);
        $view_src = preg_replace("/<!--each-->/", "<?php endforeach; ?>", $view_src);
        // switch
        $view_src = preg_replace("/<!--select\s+(\w+)\.(\w+)-->\s*<!--when\s+(.+)-->/", "<?php switch(\$$1->$2): case $3: ?>", $view_src);
        $view_src = preg_replace("/<!--when\s+(.+)-->/", "<?php break; ?><?php case $1: ?>", $view_src);
        $view_src = preg_replace("/<!--otherwise-->/", "<?php break; ?><?php default: ?>", $view_src);
        $view_src = preg_replace("/<!--select-->/", "<?php endswitch; ?>", $view_src);
        if (!file_exists(VIEW_PATH . $this->path)) mkdir(VIEW_PATH . $this->path, 0777, true);
        $fp = fopen(VIEW_PATH . $this->full_name . EXT, 'w');
        fwrite($fp, $view_src);
        fclose($fp);
      }
    
    ...
    
    ?>
    
    view-src/ShadeType.php
    
    {{type.name}}
    <!--each k d in type.diameters-->
    <h1>{{k}}</h1>
      <!--each s in d-->
      <div>
        {{s.bottom}} × {{s.top}} × {{s.height}}
        <div>
          <!--select s.mode-->
          <!--when 'u'-->(на ушках)
          <!--when 'p'-->(только подвес)
          <!--otherwise--> 
          <!--select-->
        </div>
      </div>
      <!--each-->
    <!--each-->
    
    view/ShadeType.php
    
    <?php echo $type->name; ?>
    <?php foreach($type->diameters as $k => $d): ?>
    <h1><?php echo $k; ?></h1>
      <?php foreach($d as $s): ?>
      <div>
        <?php echo $s->bottom; ?> × <?php echo $s->top; ?> × <?php echo $s->height; ?>
        <div>
          <?php switch($s->mode): case 'u': ?>(на ушках)
          <?php break; ?><?php case 'p': ?>(только подвес)
          <?php break; ?><?php default: ?> 
          <?php endswitch; ?>
        </div>
      </div>
      <?php endforeach; ?>
    <?php endforeach; ?>

    На хостинге PHP 5.2, а старые версии фреймворков не хочется. Решил запилить свой.

    kgm-rj, 13 Ноября 2015

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