Nano Hash - криптовалюты, майнинг, программирование

PHP проверяет, вставлено ли определенное количество строк за неделю до даты запуска в базе данных

во-первых: мне очень жаль, если заголовок для вас расплывчатый (потому что так и есть), но я понятия не имею, как правильно сформулировать свой вопрос в одном предложении...

Вот мой вопрос: для моего школьного проекта мне нужно создать веб-сайт, где вы можете зарезервировать специальные туры в музее. Если на одну из этих экскурсий за неделю до ее начала было забронировано не более 8 бронирований, она аннулируется. Я серьезно понятия не имею, как это сделать! Я в основном застрял на проверке, есть ли 8 или менее бронирований за неделю до мероприятия. В моей базе данных для этого есть две таблицы: tours и tour_reservations. Вот структура таблицы, чтобы прояснить настройку базы данных, с которой я работаю.

туры

http://imgur.com/NxkyVaL,LushMBa

туры_бронирования

http://imgur.com/NxkyVaL,LushMBa#1

Итак, tour_id в tours_reservations связан с t_id из tours. Что я хочу сделать, так это подсчитать строки из одного тура (tour_id) в таблице tours_reservations и посмотреть, сколько строк было вставлено за неделю до поля дня в таблице tours.

Я использую фреймворк MVC CodeIgniter. Вот кусок кода, с которым я играл:

Контроллер

public function check_sold_ticket() {
    $date = $this->tour_model->get_tour_date();

    $last_week = strtotime('-1 week');

    $result = $this->tour_model->get_reservations();

    if ($date > $last_week && count($result) < 8) {
        echo "do something";
    }
    else {
        echo "whoops";
    }


    $this->load->view('tour/check_sold_tickets');
}

Модель

public function get_tour_date() {
    $query = $this->db->query("SELECT day FROM tours");

    return $query->result();
}

public function get_reservations() {
    $query = $this->db->query("SELECT reservation_id FROM tours_reservations");

    return $query->result();
}

Код, очевидно, неверен, но это то, что я смог придумать до сих пор.

Извините, что задаю такой большой вопрос, но любая помощь в этом будет БОЛЬШОЙ признательна.

Заранее спасибо.


  • Вы передаете tour_id, чтобы проверить, следует ли отменить тур, или он предназначен только для того, чтобы получить все туры, которые начинаются сегодня? 19.11.2014
  • Привет, спасибо за ответ. Я хочу проверить все туры, которые начинаются через неделю, а затем отменить туры, если это необходимо. 19.11.2014
  • Является ли приведенный ниже ответ тем, что вы искали? 19.11.2014
  • Эй, большое спасибо за ответ. Я не могу проверить это сейчас, потому что я не дома, когда я вернусь домой сегодня вечером (примерно через 1,5 часа), я попробую. Но код, безусловно, выглядит многообещающе! Так что в любом случае спасибо, я дам вам знать, если это сработает позже :) 19.11.2014

Ответы:


1

Что-то вроде этого должно помочь:

public function get_tour_date($starting = 7)
{
    //You need to have PHP 5.3 for this
    $date = new DateTime("+ $starting days");
    $day = $date->format('Y-m-d');

    $query = $this->db->query("
                    SELECT t.t_id, count(r.reservation_id) as c 
                    FROM tours t 
                    JOIN tour_reservations r ON t.t_id=r.tour_id 
                    WHERE day = '$day' 
                    GROUP BY t.t_id");

    return $query->result();
}

Я не тестировал его, но, по сути, он должен возвращать массив идентификаторов туров, которые начинаются сегодня, а также подсчитывать, сколько у него бронирований.

Если вы хотите объяснить что-либо из этого, я могу это сделать.

Надеюсь это поможет!

19.11.2014
  • Эй, я пробовал код, но он не работает. В моей функции я сделал $result = $this-›tour_model-›get_tour_date(); а затем var сбрасывает $result, но я получаю пустой массив. Любые идеи? 19.11.2014
  • Ничего, я сам сделал ошибку. Теперь запрос работает нормально, спасибо :). Надеюсь, я смогу сделать все остальное самостоятельно отсюда... 19.11.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..