1. PHP / Говнокод #14345

    +153

    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
    $db = new Db();
                    $db->prepare('SELECT `ID`, `Title`, `Date`, `Active` FROM `videos` WHERE `UserID` = :userId AND `is_temporary` = 0 ORDER BY `Date` DESC')
                            ->bindInt(':userId', $userId)
                            ->execute();
                    $dbResult = $db->fetchAll();
                    if (empty($dbResult)) return array();
                    $orderDir = strtoupper($orderDir);
                    if (!in_array($orderDir, array('DESC', 'ASC'))) $orderDir = 'DESC';
                    if (empty($filter) && $orderDir == 'DESC') return ArrayHelper::extract($dbResult, 'ID', ArrayHelper::INT);
                    $db->prepare('CREATE TEMPORARY TABLE `videos_tmp` (
                                            `id` INT(11),
                                            `title` VARCHAR(256),
                                            `date` DATETIME,
                                            `active` VARCHAR(1)
                                    ) ENGINE = MEMORY
                                CHARACTER SET utf8
                                COLLATE utf8_general_ci')
                            ->execute();
                    foreach ($dbResult as $row) {
                            $db->prepare('INSERT INTO `videos_tmp` (`id`, `title`, `date`, `active`) VALUES (:id, :title, :date, :active)')
                                    ->bindInt(':id', $row['ID'])
                                    ->bindStr(':title', $row['Title'])
                                    ->bindStr(':date', $row['Date'])
                                    ->bindStr(':active', $row['Active'])
                                    ->execute();
                    }
                    $sql = 'SELECT `id` FROM `videos_tmp` WHERE 1';
                    if (isset($filter['active'])) $sql .= ' AND `Active` = :active';
                    if (isset($filter['search'])) $sql .= ' AND `title` LIKE :search';
                    if (isset($filter['fromDate'])) $sql .= ' AND `Date` >= :fromDate';
                    if (isset($filter['toDate'])) $sql .= ' AND `Date` <= :toDate';
                    $sql .= ' ORDER BY `Date` ' . $orderDir;
                    $stmt = $db->prepare($sql);
                    if (isset($filter['active'])) $stmt->bindStr(':active', $filter['active']);
                    if (isset($filter['search'])) $stmt->bindStr(':search', '%' . $filter['search'] . '%');
                    if (isset($filter['fromDate'])) $stmt->bindStr(':fromDate', $filter['fromDate']);
                    if (isset($filter['toDate'])) $stmt->bindStr(':toDate', $filter['toDate']);
                    $stmt->execute();
                    $dbResult = $db->fetchAll();
                    $db->prepare('DROP TABLE `videos_tmp`')->execute();

    Извиняюсь, что так много, но какого слоника надо было делать выборку, создавать временную таблицу и делать выборку снова - загадка.

    Запостил: begmst, 10 Января 2014

    Комментарии (29) RSS

    • Урвать кусок - и скорее смыться. А потом уже тихо хомячить в уголке.
      Ответить
    • Почему каждый пыхер считает своим долгом навелосипедить свою собственную абстракцию для работы с БД?
      Ответить
      • потому что все предыдущие до него написали неопытные школьники
        а он-то знает!
        Ответить
        • А некоторые из них даже само PHP переделывают в транслятор в c++.
          Ответить
        • Что именно он, светило пхпешной мысли, может написать такую ORM, при виде которой все прослезятся и признают, наконец, что он, Login Password, тот самый Король-под-Горой, который возродит Эрибор, и отдадут ему Аркенстон...
          Ну вы поняли
          Ответить
      • показать все, что скрыто
        
        ===========================
        ~Гей знакомства для парней~
        ===========================
        
        
        Делаю минеты, анал, ануслизинк.
        Обращаться: [email protected]
        Ответить
      • потому что пыхомакак много, и трудно найти такое говно, в котором было бы уютно так же, как в своем. что хначит - надо накласть собственное!

        правда, в исключительных случаях, чтобы разобраться хорошенько, лучше написать свой велосипед ...но не забыть его сразу после этого утилизировать!
        Ответить
        • Биотуалетвелосипед
          Ответить
          • Биоразлагаемый код же. Не наносит вреда окружающей среде.
            Ответить
    • показать все, что скрыто
      
      ===========================
      ~
      Гей знакомства для парней~
      ===========================
      Делаю минеты, анал, ануслизинк. Обращаться: [email protected]
      Ответить
      • Кто-то спрашивал, какой толк от моего минусатора - себя плюсовать глупо, минусовать других - стыдно. Вот я вам и отвечу: с помощью минусатора вы бы сейчас за считанные мгновения забили весь этот вайп, чем поодиночке ставить по минусу.
        Ответить
        • Мы не гордые.
          Ответить
          • Слава Богу; по этой причине я и задержался тут у вас.
            Упоротых гамадрилов как на форумах, тут нет.
            Ответить
    • Тут можно было сократить до этого кусочка: `active` VARCHAR(1) - и в раздел SQL запостить. :)
      Ответить
      • Слона-то и не заметил. На случай, если вдруг длина строки будет нулевая.
        Ответить

    Добавить комментарий