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

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
$scales = db_select('_scale', 'q')
        ->condition('q.gender', $gender)
        ->fields('q', array('id'))
        ->execute();

    $i = 1;
    while ($scale = $scales->fetchObject()) {
        $raw_score = 0;

        $query = db_select('_scale_question', 'q')
            ->condition('q.scale_id', $scale->id)
            ->fields('q')
            ->execute();

        while ($item = $query->fetchObject()) {
            $user_answer = db_select('_user_answer', 'q')
                ->condition('q.question_id', $item->question_id)
                ->condition('q.result_id', $result_id)
                ->fields('q', array('answer'))
                ->execute()
                ->fetchField();

            if ($user_answer == $item->expected_answer) {
                $raw_score++;
            }
        }


        $raw_scores_item['scale_id'] = $scale->id;
        $raw_scores_item['score'] = $raw_score;

        $raw_scores[$i] = $raw_scores_item;
        $i++;
    }

Drupal 7, SQL-запросы с DB API Drupal в двойном цикле(!).
...А заменить можно 1 нормальным SQL-запросом.

Запостил: skigf skigf, (Updated )

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

    • Так-то там SQL есть. Только в циклах >140(!) раз делается SELECT ... WHERE ... И 350 мс времени отъедается. + читать такой код неудобно.
      Ответить
    • Проект изначально был написан на Друпале. А проявлять инициативу, переписывая весь код в одиночку как-то не хочется, потому поправляю там, где подгорело.
      Ответить
    • Писал недавно что-то типа автопостроителя запросов. Задаешь связи между таблицами, что известно и что нужно. Куча INNER JOIN'ов в итоге.
      Ответить
      • >задаешь связи между таблицами.
        Зачем ?

        при проектировании БД все связи уже есть. Совершенно не трудно вытащить все foreign ключи.
        Вопрос тут как определить когда нужно тянуть данные из связанной таблы а когда нет.
        Ответить
        • У меня дома скрипт есть с поиском в глубину. Забросил. Дома буду, скину код
          Ответить
  • - Ну? Ты же сам хотел этого. Давай. Он весь твой! - понуждал он Сережку взять член в рот. Что тот с готовностью и сделал.
    Ответить

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

Переведи на "PHP", guest!

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


    8