2014-11-09 2 views
0

Чтобы быть более конкретным, у меня есть веб-приложение, которое создает и редактирует события. После нового усечения в моей таблице db, когда я создаю событие, он начинается с id = 1 (хотя, если я помню, он должен начинаться с 0), когда я редактирую конкретное событие (в данном случае, где id = 1) в моем PHPMyAdmin, когда я проверить таблицу, событие, которое было ID = 1 изменен на ид = 0, и когда я пытаюсь добавить новое событие перепрыгнул к ид = 2.Zend update() изменяет идентификатор, хотя идентификатор установлен в NULL & auto_increment

DB класс:

class Application_Model_DbTable_Eventsdb extends Zend_Db_Table_Abstract { 

protected $_name = 'events'; 

public function CreateEvent($category, $title, $subtitle, $video, $date, $ages, $resume, $description, $image1, $image2, $image3, $image4, $image5) { 
    $data = array(
     "id" => NULL, 
     "category" => $category, 
     "title" => $title, 
     "subtitle" => $subtitle, 
     "video" => $video, 
     "date" => $date, 
     "ages" => $ages, 
     "resume" => $resume, 
     "description" => $description, 
     "image1" => $image1, 
     "image2" => $image2, 
     "image3" => $image3, 
     "image4" => $image4, 
     "image5" => $image5 
    ); 
    $this->insert($data); 
    return TRUE; 
} 

public function UpdateEvent($eventID, $category, $title, $subtitle, $video, $date, $ages, $resume, $description, $image1, $image2, $image3, $image4, $image5) { 
    $bind = array(
     "id" => NULL, 
     "category" => $category, 
     "title" => $title, 
     "subtitle" => $subtitle, 
     "video" => $video, 
     "date" => $date, 
     "ages" => $ages, 
     "resume" => $resume, 
     "description" => $description, 
     "image1" => $image1, 
     "image2" => $image2, 
     "image3" => $image3, 
     "image4" => $image4, 
     "image5" => $image5 
    ); 
    $where = "`id` = $eventID"; 
    $this->_db->update($this->_name, $bind, $where); 

} 

Админ контроллер:

class AdminController extends Zend_Controller_Action { 

public function createEventAction() { 
    $eventdb = new Application_Model_DbTable_Eventsdb(); 
    $form = new Application_Form_CreateEvent(); 

    $this->view->event_form = $form; 

    if ($this->getRequest()->isPost()) { 
     if ($form->isValid($_POST)) { 
      $formdata = $form->getValues(); 
      $confirmation = $eventdb->CreateEvent($formdata['category'], $formdata['title'], $formdata['subtitle'], $formdata['video'], $formdata['date'], $formdata['ages'], $formdata['resume'], $formdata['description'], $formdata['image1'], $formdata['image2'], $formdata['image3'], $formdata['image4'], $formdata['image5']); 
      if ($confirmation) { 
       $this->view->confirmation = "Evenimentul a fost introdus cu success."; 
      } 
     } 
    } 
} 

    public function editEventAction() { 
    $eventdb = new Application_Model_DbTable_Eventsdb(); 
    $form = new Application_Form_EditEvent(); 

    $this->view->tabere = $eventdb->getEventsbyCategory('Tabara'); 
    $this->view->ateliere = $eventdb->getEventsbyCategory('Atelier'); 
    $this->view->workshopuri = $eventdb->getEventsbyCategory('Workshop'); 
    $this->view->petreceri = $eventdb->getEventsbyCategory('Petrecere'); 
    $this->view->alte = $eventdb->getEventsbyCategory('Alt'); 

    if (isset($_GET['eventID'])) { 
     $eventID = $_GET['eventID']; 
     $event_data = $eventdb->getEventsbyId($eventID); 
     $this->view->event_data = $event_data; 
     $this->view->form = $form; 
    } 

    if ($this->getRequest()->isPost()) { 
     if ($form->isValid($_POST)) { 
      $renew_data = $form->getValues(); 
      $eventdb->UpdateEvent($eventID, $renew_data['category'], $renew_data['title'], $renew_data['subtitle'], $renew_data['video'], $renew_data['date'], $renew_data['ages'], $renew_data['resume'], $renew_data['description'], $renew_data['image1'], $renew_data['image2'], $renew_data['image3'], $renew_data['image4'], $renew_data['image5']); 
      $this->_redirect('EditeazaEveniment'); 

     } 
    } 
} 
} 

ответ

1

В вашей функции обновления вы сказали MySQL установить id равным NULL. Он не может этого сделать, поэтому он пытается сделать следующее лучшее, в этом случае преобразование этого значения в 0. Поскольку вы не хотите изменять значение id, либо удалите этот ключ & значение из вашего массива $bind, либо положите правильное значение eventID.