1. Комментарий к говнокоду #22846

    • вотыменно
      дикари миллионы лет назад предохранялись свиными кишками, а твоим родителям в 19?? году влом оказалось резину на хуй натянуть
      Ответить
    Показать код ▼

    Куча / Говнокод #22846

    1. 1
    2. 2
    http://ydoma.info/electricity-kak-najti-fazu-i-nol.html
    "Поиск фазы и ноля контролькой"

    Хоть и не код, а смешно, хоть и немного грустно...

    Запостил: ivanryabinin, 23 Апреля 2017

    Все комментарии (63)
  2. Комментарий к говнокоду #22863

    • подержал свои яйца у тебя во рту, проверь
      Ответить
    Показать код ▼

    C++ / Говнокод #22863

    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
    /* a temporary boolean true value which changes the value of the referenced boolean variable to 
    	true and to false on destruction, meant to be used for short-lived boolean changes*/
    class tempTrue {
    bool & bVal;
    public:
    	tempTrue(bool & ref):bVal(ref){bVal = true;}
    	virtual ~tempTrue() { bVal = false; }
    	void toggle() { bVal = !bVal; }
    };
     
    class tempFalse {
    bool & bVal;
    public:
    	tempFalse(bool & ref):bVal(ref){bVal = false;}
    	virtual ~tempFalse() { bVal = true; }
    	void toggle() { bVal = !bVal; }
    };
     
    class tempToggle {
    bool & bVal;
    public:
    	tempToggle(bool & ref): bVal(ref){ bVal = !bVal;}
    	virtual ~tempToggle() { bVal = !bVal; }
    };
     
     
    class booleanInit {
    public:
    	booleanInit(bool b):bVal(b) {}
    	operator bool & () { return bVal; }
    	operator const bool & () const { return bVal; }
    private:
    	bool bVal;
    };
     
     
    class booleanTrue:public booleanInit {
    public:
    	booleanTrue():booleanInit(true) {}
    };
     
    class booleanFalse:public booleanInit {
    public:
    	booleanFalse():booleanInit(false) {}
    };

    когда узнал про RAII

    Запостил: nullptr, 27 Апреля 2017

    Все комментарии (22)
  3. Комментарий к говнокоду #22862

    Показать код ▼

    Куча / Говнокод #22862

    1. 1
    2. 2
    3. 3
    макну свои яйца в ваш рот
    500р
    мск

    Запостил: TeaBag, 27 Апреля 2017

    Все комментарии (1)
  4. Комментарий к говнокоду #22855

    Показать код ▼

    Си / Говнокод #22855

    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
    #include <stdlib.h>
    #include <stdio.h>
    #include <cerr.h>
    #include <bash.h>
     
    #define INFINITE ~0u
     
    int main(int argc, char *argv[]) {
        printf("Hello world!\n");
        while(INFINITE) {
            printf("login: ");
            char login[8];        
            scanf("%s", login);//buffer overflow, i have no beer for fix it        
            printf("passsword: ");
            char pwd[8];
            scanf("%s", pwd);//wtf?! beer! beer! beer!
            if(0.25 > rand() / (float)RAND_MAX) {
                 startBash(login);
            } else {
                 printf("Login is incorrect!\n");
            }
            if(0.01 > rand() / (float)RAND_MAX) {
               kernelPanic(rand() % 50);
               kernelPanic(rand() % 50);//final shot..DIE! or beer..
            }
        }
        return 0;
    }

    Запостил: dm_fomenok, 26 Апреля 2017

    Все комментарии (8)
  5. Комментарий к говнокоду #22856

    Показать код ▼

    Java / Говнокод #22856

    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
    private boolean tpNameExist(PlayerInstance player, String bmName)
    	{
    		Connection con = null;
    		PreparedStatement statement = null;
    		ResultSet rset = null;
    		boolean isExist = false;
     
    		try
    		{
    			con = DatabaseFactory.getInstance().getConnection();
    			statement = con.prepareStatement("SELECT name FROM bbs_teleport_bm WHERE char_id=?");
    			statement.setInt(1, player.getObjectId());
    			rset = statement.executeQuery();
    			while (rset.next())
    			{
    				String name = rset.getString("name");
    				if (name.equals(bmName))
    				{
    					isExist = true;
    				}
    			}
    		}
    		catch (Exception e)
    		{
    			e.printStackTrace();
    		}
    		finally
    		{
    			DbUtils.closeQuietly(con, statement, rset);
    		}
    		return isExist;
    	}

    L2Scripts профессионально проверяют использовано ли имя в базе данных ? :D

    Запостил: xxxnikxxx, 26 Апреля 2017

    Все комментарии (4)
  6. Комментарий к говнокоду #22860

    Показать код ▼

    JavaScript / Говнокод #22860

    1. 1
    https://habrahabr.ru/post/322052/

    Лямбда-исчисление на JavaScript

    Запостил: j123123, 27 Апреля 2017

    Все комментарии (13)
  7. Комментарий к говнокоду #22854

    Показать код ▼

    Си / Говнокод #22854

    1. 1
    https://foxford.ru/wiki/informatika/tipy-tselyh-chisel-yazyka-s

    Вот такая хуйня получается, когда учебные материалы по Си пишут те, которые сами нихуя не знают Си и не читали Священный Драфт Стандарта. Сколько хуйни по ссылке вы можете найти?
    spoiler: https://habrahabr.ru/post/156593/

    Запостил: j123123, 26 Апреля 2017

    Все комментарии (29)
  8. Комментарий к говнокоду #22861

    • у нас это был матан. факт что матан с сатаной плохо рифмуется только добавляло таинственности.
      Ответить
    Показать код ▼

    Python / Говнокод #22861

    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
    word = ['PURPLE', 'BLUE', 'GREEN', 'YELLOW', 'ORANGE']
    import random
    choice = list(word[random.randint(0, 4)])
    print(choice)
    q = []
    for a in range(len(choice)):
        print('* ', end= '')
        q.append('*')
    print()
    for i in range(8):
        z = input('Введи букву: ')
        f = []
        for y in choice:
            if z in f:
                if y == z:
                q.pop(choice.index(y))
                q.insert(choice.index(y), y)
        print(''.join(q))
        print('Количество попыток: ' + str(8-(i+1)))

    Короче, ребята, я в программировании ноль. Препод дал задание сделать игру типа "Висилица".
    Вроде мой говнокод вроде работает, но двойные буквы он не распознает. Например в слове "GREEN" при вводе буквы E он открывает лишь первую букву: **E**. Как его научить открывать обе буквы - хоть убей не пойму. Да да, я тупой, но может объяснит кто? )))

    Запостил: saltcress, 27 Апреля 2017

    Все комментарии (10)
  9. Комментарий к говнокоду #22857

    • выебу чайным пакетиком, оплата 500р, мск
      Ответить
    Показать код ▼

    PHP / Говнокод #22857

    1. 1
    Сукаблядь, где твой ёбаный в рот ГК.НЕТ? Тут уже все заебались ждать

    Запостил: dm_fomenok, 26 Апреля 2017

    Все комментарии (7)
  10. Комментарий к говнокоду #22851

    • выебу чайным пакетиком, оплата 500р, мск
      Ответить
    Показать код ▼

    PHP / Говнокод #22851

    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
    <?php
     
        public function getGlobals()
        {
            return $this->globals;
        }
     
        /**
         * Initializes the built-in escapers.
         *
         * Each function specifies a way for applying a transformation to a string
         * passed to it. The purpose is for the string to be "escaped" so it is
         * suitable for the format it is being displayed in.
         *
         * For example, the string: "It's required that you enter a username & password.\n"
         * If this were to be displayed as HTML it would be sensible to turn the
         * ampersand into '&amp;' and the apostrophe into '&aps;'. However if it were
         * going to be used as a string in JavaScript to be displayed in an alert box
         * it would be right to leave the string as-is, but c-escape the apostrophe and
         * the new line.
         *
         * For each function there is a define to avoid problems with strings being
         * incorrectly specified.
         */
        protected function initializeEscapers()
        {
            $that = $this;
            $this->escapers = array(
                'html' =>
                /**
                 * Runs the PHP function htmlspecialchars on the value passed.
                 *
                 * @param string $value the value to escape
                 *
                 * @return string the escaped value
                 */
                function ($value) use ($that) {
                    // Numbers and Boolean values get turned into strings which can cause problems
                    // with type comparisons (e.g. === or is_int() etc).
                    return is_string($value) ? htmlspecialchars($value, ENT_QUOTES, $that->getCharset(), false) : $value;
                },
                'js' =>
                /**
                 * A function that escape all non-alphanumeric characters
                 * into their \xHH or \uHHHH representations
                 *
                 * @param string $value the value to escape
                 * @return string the escaped value
                 */
                function ($value) use ($that) {
                    if ('UTF-8' != $that->getCharset()) {
                        $value = $that->convertEncoding($value, 'UTF-8', $that->getCharset());
                    }
     
                    $callback = function ($matches) use ($that) {
                        $char = $matches[0];                        // \xHH
                        if (!isset($char[1])) {
                            return '\\x' . substr('00' . bin2hex($char), -2);
                        }                        // \uHHHH
                        $char = $that->convertEncoding($char, 'UTF-16BE', 'UTF-8');
                        return '\\u' . substr('0000' . bin2hex($char), -4);
                    };
                }
            );
        }

    Typing Lessons PHP/Symfony https://typing.io/lesson/php/symfony/PhpEngine.php/9

    Запостил: konmado, 25 Апреля 2017

    Все комментарии (2)
  11. Комментарий к говнокоду #22849

    • выебу чайным пакетиком, оплата 500р, мск
      Ответить
    Показать код ▼

    C++ / Говнокод #22849

    1. 1
    2. 2
    3. 3
    operator void() {
        std::cout << "Cast to void!" << std::endl;
    }

    Выглядит заманчиво, даже компилится. Но никогда не вызывается, к сожалению.

    Запостил: bormand, 24 Апреля 2017

    Все комментарии (23)
  12. Комментарий к говнокоду #22859

    • выебу чайным пакетиком, оплата 500р, мск
      Ответить
    Показать код ▼

    C++ / Говнокод #22859

    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
    std::string reverseWords(const std::string &input) {   
        std::list<char> result{};
     
        auto insertIt = result.end();
        for (auto i = input.size() ; i > 0; --i) {
            const char c = input[i - 1];
            if (c != ' ') {
                insertIt = result.insert(insertIt, c);
            } else {
                result.push_back(c);
                insertIt = result.end();
            }
        }
     
        return std::string(result.begin(), result.end());
    }

    Реверснуть слова в строке за один проход цикла
    https://www.linux.org.ru/forum/development/13379833

    Специальную олимпиаду оглашаю открытой!

    Запостил: Elvenfighter, 26 Апреля 2017

    Все комментарии (28)
  13. Комментарий к говнокоду #4757

    Показать код ▼

    PHP / Говнокод #4757

    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
    <?
    	$optSelect['10'] = ($_REQUEST['sort_count']=='10') ? 'selected' : '';
    	$optSelect['20'] = ($_REQUEST['sort_count']=='20') ? 'selected' : '';
    	$optSelect['50'] = ($_REQUEST['sort_count']=='50') ? 'selected' : '';
    	$optSelect['all'] = ($_REQUEST['sort_count']=='all') ? 'selected' : '';
     
    	$remParams = array('sort_count');
            //функция GetCurPageParam в битрикс возвращает путь к текущей странице с добавлением/удалением параметров (автор поста) 
    	$optValueURI['10'] = $APPLICATION->GetCurPageParam('sort_count=10', $remParams);
    	$optValueURI['20'] = $APPLICATION->GetCurPageParam('sort_count=20', $remParams);
    	$optValueURI['50'] = $APPLICATION->GetCurPageParam('sort_count=50', $remParams);
    	$optValueURI['all'] = $APPLICATION->GetCurPageParam('sort_count=all', $remParams);
     
    	$optValue['10'] = $siteURL . $optValueURI['10'];
    	$optValue['20'] = $siteURL . $optValueURI['20'];
    	$optValue['50'] = $siteURL . $optValueURI['50'];
    	$optValue['all'] = $siteURL . $optValueURI['all'];
    ?>
    <select onChange="location=this.value">
    	<option <?=$optSelect['10']?> value="<?=$optValue['10']?>">10</option>
    	<option <?=$optSelect['20']?> value="<?=$optValue['20']?>">20</option>
    	<option <?=$optSelect['50']?> value="<?=$optValue['50']?>">50</option>
    	<option <?=$optSelect['all']?> value="<?=$optValue['all']?>">Все</option>
    </select>

    Реализация Селекта количества выводимых элементов на странице. Сайт делал топовый партнёр 1c-Bitrix.
    Я думаю, что разумнее было бы сделать так:
    $arPages = array(10, 20, 50, 'all');
    foreach ($arPages as $page) {?>
    <option <?if($page == $_REQUEST['sort_count']){?>selected<?}?>>$page</option>
    <?}?>
    Ну и для сабмита можно какую нибудь нормальную функцию в JS написать.

    Запостил: Cool-Di, 26 Ноября 2010

    Все комментарии (243)
  14. Комментарий к говнокоду #18976

    Показать код ▼

    Куча / Говнокод #18976

    1. 1
    http://habrahabr.ru/post/265441/

    Не могу сказать на хабре, скажу здесь
    У автора, что не получилось то и не нужно. Ну как можно быть таким говноедом то.

    Запостил: Vasiliy, 06 Ноября 2015

    Все комментарии (245)
  15. Комментарий к говнокоду #19684

    Показать код ▼

    PHP / Говнокод #19684

    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
    <?php
      header('Content-Type: text/plain;'); //Мы будем выводить простой текст
      set_time_limit(0); //Скрипт должен работать постоянно
      ob_implicit_flush(); //Все echo должны сразу же отправляться клиенту
      $address = 'localhost'; //Адрес работы сервера
      $port = 1985; //Порт работы сервера (лучше какой-нибудь редкоиспользуемый)
      if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
        //AF_INET - семейство протоколов
        //SOCK_STREAM - тип сокета
        //SOL_TCP - протокол
        echo "Ошибка создания сокета";
      }
      else {
        echo "Сокет создан\n";
      }
      //Связываем дескриптор сокета с указанным адресом и портом
      if (($ret = socket_bind($sock, $address, $port)) < 0) {
        echo "Ошибка связи сокета с адресом и портом";
      }
      else {
        echo "Сокет успешно связан с адресом и портом\n";
      }
      //Начинаем прослушивание сокета (максимум 5 одновременных соединений)
      if (($ret = socket_listen($sock, 5)) < 0) {
        echo "Ошибка при попытке прослушивания сокета";
      }
      else {
        echo "Ждём подключение клиента\n";
      }
      do {
        //Принимаем соединение с сокетом
        if (($msgsock = socket_accept($sock)) < 0) {
          echo "Ошибка при старте соединений с сокетом";
        } else {
          echo "Сокет готов к приёму сообщений\n";
        }
        $msg = "Hello!"; //Сообщение клиенту
        echo "Сообщение от сервера: $msg";
        socket_write($msgsock, $msg, strlen($msg)); //Запись в сокет
        //Бесконечный цикл ожидания клиентов
        do {
          echo 'Сообщение от клиента: ';
          if (false === ($buf = socket_read($msgsock, 1024))) {
            echo "Ошибка при чтении сообщения от клиента";       }
          else {
            echo $buf."\n"; //Сообщение от клиента
          }
          //Если клиент передал exit, то отключаем соединение
          if ($buf == 'exit') {
            socket_close($msgsock);
            break 2;
          }
          if (!is_numeric($buf)) echo "Сообщение от сервера: передано НЕ число\n";
          else {
            $buf = $buf * $buf;
            echo "Сообщение от сервера: ($buf)\n";
          }
          socket_write($msgsock, $buf, strlen($buf));
        } while (true);
      } while (true);
      //Останавливаем работу с сокетом
      if (isset($sock)) {
        socket_close($sock);
        echo "Сокет успешно закрыт";
      }
    ?>

    Запостил: HiNeX, 23 Марта 2016

    Все комментарии (25)
  16. Комментарий к говнокоду #13605

    Показать код ▼

    Perl / Говнокод #13605

    1. 1
    2. 2
    >> # HTML/4.01 says that line breaks are represented as "CR LF" pairs (i.e., `%0D%0A')
    >> $content =~ s/(?<!%0D)%0A/%0D%0A/g if defined($content);

    HTTP::Request::Common 6.04, строка 86
    http://cpansearch.perl.org/src/GAAS/HTTP-Message-6.04/lib/HTTP/Request/Common.pm

    Оно просто берёт и изменяет передаваемый контент. Любой. В том числе просто бинарные данные.

    Запостил: kainwinterheart, 13 Августа 2013

    Все комментарии (38)
  17. Комментарий к говнокоду #19105

    Показать код ▼

    Си / Говнокод #19105

    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
    #include <stdio.h>
    #include <inttypes.h>
     
    int main() {
        int arr[] = {34, 12, 24, 65, 63, 22};
        size_t arraySize = (sizeof(arr) / sizeof(*arr));
     
        size_t i;
        startloop1:;
            void * loop1val = &&endloop1;
            i = 0;
            startloop2:
                goto *( (void *[]){&&noexchange, &&exchange}[arr[i] >= arr[i+1]]);
                exchange:;
                    int tmp;
                    tmp=arr[i];
                    arr[i]=arr[i+1];
                    arr[i+1]=tmp;
                    loop1val = &&startloop1;
                noexchange:
                i++;
                goto *( (void *[]){&&startloop2, &&endloop2}[i >= arraySize-1]);
            endloop2:
            goto *loop1val; 
        endloop1:
        i = 0;
     
        startloop3:
            printf("%i ", arr[i]);
            i++;
            goto *( (void *[]){&&startloop3, &&endloop3}[i >= arraySize]);
        endloop3:
     
        return 0;
    }

    На говнохабре http://habrahabr.ru/post/269875/ очередная хуита написана, вот типа напишите сортировку не используя if. Но в том коде есть циклы, любой настоящий программист знает, что циклы это по сути то же самое, что и if(условие) goto куда-тотам. Как написано в одном фундаментальном труде http://www.lib.ru/ANEKDOTY/non_pas.txt
    - поскольку в Фортране отсутствуют структурные операторы IF,
    REPEAT ... UNTIL или CASE, настоящим программистам не
    нужно беспокоиться, что они их не используют; кроме того
    эти операторы можно при необходимости симулировать с
    помощью присваиваемых GOTO.

    Пользуясь этой вселенской мудростью, а так же зная про наличие присваиваемых goto в gcc, решил я сей код написать.

    Запостил: j123123, 28 Ноября 2015

    Все комментарии (289)
  18. Комментарий к говнокоду #6761

    Показать код ▼

    PHP / Говнокод #6761

    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
    public function getRelatedDataProvider($relationName,$config=array(),$params=array()){
     
    		$md = $this->getMetaData();
    		if(!isset($md->relations[$relationName])){
    			throw new CDbException(Yii::t('yii','{class} does not have relation "{name}".',
    				array('{class}'=>get_class($this), '{name}'=>$relationName)));
    		}
     
    		$relation = $md->relations[$relationName];
    		if(!($relation instanceof CHasManyRelation || $relation instanceof CManyManyRelation)){
    			throw new CDbException(Yii::t('yii','Связь {class}.{name} имеет тип, отличный от Has_Many и Many_Many.',
    				array('{class}'=>get_class($this), '{name}'=>$relationName)));
    		}
     
    		// return new CArrayDataProvider($this->getRelated($relationName,true,$params), $config);
     
    		var_dump($relation);
     
    		// копируем критерии из связи
    		$criteria = new CDbCriteria;
    		foreach(array('select', 'condition', 'params', 'limit', 'offset', 'order', 'group', 'join', 'having', 'with', 'alias', 'index', 'together') as $param){
    			$criteria->$param = $relation->$param;
    		}
     
    		// склеиваем параметры с критерией
    		$criteria->mergeWith(
    			is_string($params)
    				? array('condition' => $params)
    				: $params
    		);
     
    		// добавляем связь через fk
    		// ВОТ ТУТ Я НИЧЕГО НЕ ПОНИМАЮ :)
    		$thisTable = $this->getTableAlias();
    		$childModel = CActiveRecord::model($relation->className);
    		$childMd = $childModel->getMetaData();
    		$childTable = empty($relation->alias) ? $childModel->getTableAlias() : $relation->alias;
    		//$criteria->join .= " {$relation->joinType} {$thisTable} ON {$thisTable}.{$relation->foreignKey}={$childTable}.{$childMd->tableSchema->primaryKey}";
    		$criteria->params[':fkrel'] = $this->{$relation->foreignKey};
    		$criteria->addCondition("{$childTable}.{$relation->foreignKey}=:fkrel");
     
     
    		// собираем кофиг для CActiveDataProvider
    		$dpConfig = array(
    			'criteria' => $criteria,
    		) + $config;
     
    		echo "CActiveDataProvider( {$relation->className} , criteria: ".var_export($dpConfig['criteria']->toArray(),true)." )";
     
    		// 
    		$dataProvider = new CActiveDataProvider(
    			$relation->className,
    			$dpConfig
    		);
     
    		return $dataProvider;
    	}
     
    }

    Запостил: res-nullis, 26 Мая 2011

    Все комментарии (34)
  19. Комментарий к говнокоду #4663

    Показать код ▼

    PHP / Говнокод #4663

    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
    <?php
    define("LOGIN", "login");
    define("PASSWORD", "password");
    define("BASE", "base");
    define("HOST", "IP");
     
    $table = "table";
     
    $err_name = "Вы не написали свое имя! <br />";
    $err_text = "Вы не написали текст! <br />";
    $err_email = "Вы не указали свой email! <br />";
     
    $conn = mysql_connect(HOST, LOGIN, PASSWORD) or die ('соединение с БД установить не удалось!');
    $db = mysql_select_db(BASE, $conn) or die ('проверьте наличие БД!');
     
    $stop = 0;
    if (isset($_POST['save'])) {
     if ((strlen($_POST['name']) !=0) && (strlen($_POST['text']) !=0) && (strlen($_POST['email']) !=0)) {
     
      $name = $_POST['name'];
      $text = $_POST['text'];
      $email = $_POST['email'];
      if (strlen($_POST['url']) !=0) {
        $url = $_POST['url'];
        $create = mysql_query("INSERT INTO $table VALUES (NULL, '$name', '$text', '$email', '$url')", $conn) or die ('запрос в БД не выполнен!');
      $stop = 1 ;
      }
      if ($stop != 1) {
       $create = mysql_query("INSERT INTO $table VALUES (NULL, '$name', '$text', '$email', NULL)", $conn) or die ('запрос в БД не выполнен!');
      } 
     }
     
    }
     
    if (error('name')) {
    echo $err_name;
    }
     
    if (error('text')) {
    echo $err_text;
    }
     
    if (error('email')) {
    echo $err_email;
    }
     
     
    function error($err) {
    return (isset($_POST['save']) && strlen($_POST[$err]) == 0);
    }
     
    $result = mysql_query("SELECT * FROM $table", $conn) or die ('Выбранная таблица не существует!');
     
     
    $stroki = mysql_num_rows($result);
    $stolb = mysql_num_fields($result);
     
     
    for ($i=0; $i<$stroki; $i++) {
    $s = mysql_fetch_row($result);
     for ($j=0; $j<$stolb; $j++) {
     $massiv[$i][$j] = $s[$j];
     }
    }
     
    for ($i=0; $i<$stroki; $i++) {
     for ($j=0; $j<$stolb; $j++) {
     echo $massiv[$stroki-$i-1][$j] . " ";
     }
    echo "<br />";
    }
     
    if (isset($_POST['clear'])) {
    $delete = mysql_query("TRUNCATE TABLE $table", $conn) or die ('запрос на удаление выполнить не удалось!');
    echo "<br />" . "<hr />" . "Все данные стерты!" . "<hr />" . "<br />";
    }
     
    mysql_close($conn);
     
    	echo "<form method=\"POST\">\n";
    	echo "<table border=\"1\" cellpadding=\"5\" cellspacing=\"5\">\n";
    	echo "<tr><td>Ваше имя</td><td><input type=\"text\" name=\"name\" /></td></tr>\n";
    	echo "<tr><td>Ваш email</td><td><input type=\"text\" name=\"email\" /></td></tr>\n";
    	echo "<tr><td>Ваша домашняя страница (URL)</td><td><input type=\"text\" name=\"url\" /></td></tr>\n";
    	echo "<tr><td>Текст сообщения</td><td><textarea name=\"text\"></textarea></td></tr>\n";
    	echo "<tr><td colspna=\"2\"><input type=\"submit\" name=\"save\" value=\"Отослать\"/></td></tr>\n";
    	echo "<tr><td colspna=\"2\"><input type=\"submit\" name=\"clear\" value=\"Очистить\"/></td></tr>\n";
     
    ?>

    гостевая книга (php +mysql)

    Запостил: mihailhouse, 17 Ноября 2010

    Все комментарии (131)
  20. Комментарий к говнокоду #993

    Показать код ▼

    PHP / Говнокод #993

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    mysql_connect($hostname, $user, $password);
    mysql_select_db("weblogs");
    $query = "select '2' +'2' union select '5' + '5'";
    $res = mysql_query($query);
    $row = mysql_fetch_array($res);
     
    print_r($row);

    Запостил: guest, 02 Мая 2009

    Все комментарии (202)