2013-09-07 3 views
0

У меня проблема, когда я зарезервировал книгу с этой даты (например, 09/07/2013 как дата зарезервирована и 09/11/2013 как дата истечения срока действия). Чтобы проверить, не утрачен ли он, я выхожу из системы, а затем меняю дату календаря на 09/11/2013, а затем, когда я обновляю login.form, он говорит, что веб-страница имеет цикл переадресации.Веб-страница имеет цикл перенаправления

<?php 

class Login extends CI_Controller{ 

function index() 
{ 
    $this->load->model('admin/confirmation_model'); 
    $data['confirmation'] = $this->confirmation_model->getConfirm(); 
    $data['main_content'] = 'login_form'; 
    $this->load->view('includes/template', $data); 

} 
//added function update 
function update($isbn){ 
    $statuses = 'Forfeited'; 
    $data = array(
     'status' => $statuses 
    ); 

    $this->db->where('isbn',$isbn); 
    $this->db->update('reserved_dummy',$data); 

    $sql = 'update books set stock=stock+1 where isbn=?'; 
    $this->db->query($sql, $isbn); 
    redirect('login'); 
} 

это мое мнение:

<?php $date = date('m/d/Y'); 
     $tomorrow = date('m/d/Y',strtotime($date)); 
     if ($confirmation) { 
     foreach($confirmation as $r) { 
      if (date('m/d/Y',strtotime($r->date_expire . "+1 days")) == $tomorrow && $r->status != 'forfeited') { 
       redirect('login/update/'.$r->isbn,'location'); 
      } 
     } 
     } 
?> 
+0

это мой взгляд date_expire. "+1 дней")) == $ завтра && $ r-> status! = 'forfeited') { redirect ('login/update /'.$ r-> isbn,' location '); \t \t \t} \t \t} \t} \t?> –

+0

это уже отредактированный выше –

+0

Великого.^Здесь также принято удалять старые комментарии, просто чтобы вы знали. – halfer

ответ

1

Я считаю, что проблема может быть связана с использованием "американских" даты стиля (м/d/Y). Это очень неоднозначный формат для компьютеров. Попробуйте следующее и посмотрите, что произойдет.

Изменить все date('m/d/Y') по date('Y-m-d').

Причина: потому что, когда вы проходите '09/08/2013' до strtotime(), «предположение» сделано PHP. Причина догадки? Почти все американцы читают свои даты в формате m/d/Y. Например, я прочитал эту дату как 9 августа 2013 года, но американцы сказали бы, что это было 8 сентября 2013 года.

Если вы пройдете '2013-09-08' до strtotime(), здесь нет путаницы, так как это всегда интерпретируется как формат «Y-m-d».

+0

Я думаю, это зависит от того, как работает CI ORM - некоторые из них работают с датами в стиле базы данных, некоторые работают с локализованными. – halfer

+0

@ Tigger благодарит меня за это: D –

Смежные вопросы