скриншот кодаскриншот БД2 скриншот БД В настоящее время я работаю над функцией, которая отображает статус события. Я сделал столбец в своей базе данных для статуса события.
0 - отменено, 1 - готовится, 2 - выполняется, 3 - выполнено.
Я хочу знать, как изменить значения статуса в базе данных, сравнив дату моего события с текущей датой в codeigniter. Является ли это возможным? если да, то как? Если нет, то есть ли способы сделать эту функцию?
Пожалуйста, предоставьте код, который вы использовали до сих пор, чтобы помочь лучше понять случай.
это моя модельная функция. Я уже должен был выполнить эту функцию, но она продолжает добавлять в мою базу данных значение 3 в столбце eventStatus. публичная функция dateStatus(){ $dates = $this->input->post('eventDate'); if (now() == $dates){ $this->db->update('activity', array('eventStatus' => } else if (now() < $dates){ $this->db-> update('activity', array('eventStatus' => } else{ $this->db->update('activity', array('eventStatus' } } @TamirKlein
@RohitMittal это моя модельная функция при сравнении дат из моей базы данных с функцией now(), но в моей базе данных ничего не меняется. $resulting = $query->result_array(); foreach($resulting as $resultings){ $date = $resultings['eventDate']; if (now() == $date){ $this->db->update('activity', array('eventStatus' => 2)); } else if (now() < $date ){ $this->db->update('activity', array('eventStatus' => 1)); } else if (now() > $date ){ $this->db->update('activity', array('eventStatus' => 3)); } }
@EanJhonDeCastro, можете ли вы поделиться полным снимком экрана со своей базой данных? и есть ли в вашей базе данных какие-либо поля от и до, так как вам также нужно получить текущий статус?
@RohitMittal скриншоты прикреплены выше. Столбец eventStatus на 1-м снимке экрана является внешним ключом, затем я соединил две таблицы, так что, когда eventStatus равен 1, он будет отображать соответствующее строковое значение. но моя проблема в том, что всякий раз, когда я добавляю событие, оно всегда вставляет значение 3 в поле eventStatus.
@EanJhonDeCastro проверьте мой ответ, и вы можете связаться со мной по Skype: rohit.mittal54, если вы все еще сталкиваетесь с какой-либо проблемой. Я буду рад помочь вам :)
@RohitMittal я связался с тобой в скайпе. Спасибо.






Вы должны получить текущую дату, используя синтаксис PHP, а не now(), а также вам нужно обновить только одну запись. Проверьте код ниже:
$resulting = $query->result_array();
$currentDateTime = date('Y-m-d H:i:s');
foreach($resulting as $resultings){
$date = $resultings['eventDate'];
$this->db->where('activityId', $resultings['activityId']);
if (strtotime($currentDateTime) == strtotime($date)) {
$this->db->update('activity', array('eventStatus' => 1));
} else if (strtotime($currentDateTime) < strtotime($date)) {
$this->db->update('activity', array('eventStatus' => 3));
} else if (strtotime($currentDateTime) > strtotime($date)) {
$this->db->update('activity', array('eventStatus' => 1));
}
}
Надеюсь, это поможет вам.
Вам необходимо применить такие условия, как если (событие происходит) {тогда обновить статус до текущего} иначе если (дата начала события больше текущей даты) {тогда обновить статус до предстоящего} и так далее. Или, если вы хотите автоматически обновлять статус для существующих записей, вам нужно создать задание cron для этого, которое изменит статус события на основе текущей даты.