"PHP" / Говнокод #14345 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 begmst, (Updated )

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

  • Урвать кусок - и скорее смыться. А потом уже тихо хомячить в уголке.
    Ответить
    • 
      ===========================
      ~Гей знакомства для парней~
      ===========================
      
      
      Делаю минеты, анал, ануслизинк.
      Обращаться: tarasber@mail.ru
      Ответить
    • ===========================
      ~Гей знакомства для парней~
      ===========================
      Делаю минеты, анал, ануслизинк. Обращаться: tarasber@mail.ru
      Ответить
      • [code
        ]
        ===========================
        ~Гей знакомства для парней~
        ===========================



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

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

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8