2015-07-07 5 views
0

Моя цель состоит в том, чтобы две кнопки были выделены для одной формы. Одна из кнопок, при нажатии, редактирует билет, вторая кнопка удаляет билет. Форма передается через AJAX контроллеру, который затем направляет действие соответствующим образом. До сих пор я пытался отправить значение отправки через AJAX на контроллер, а затем прочитать, что там, и вызвать соответствующую модель для обновления базы данных, но она не работает.Две кнопки на одной форме в CodeIgniter

Вот соответствующий код:

Форма кнопок отправки (в представлении):

<div class="form-group"> 
    <div class="col-sm-5 col-sm-offset-7"> 
     <input id="type" style='font-size:18px; margin-left: 35px; margin-top: 10px;' name="submit" type="submit" value="Edit Ticket" class="btn btn-lg btn-success"> 
    </div> 
    <div class="col-sm-3 col-sm-offset-9"> 
     <input id="type" style='font-size:18px; margin-left: 35px; margin-top: -65px;' name="submit" type="submit" value="Delete Ticket" class="btn btn-lg btn-danger"> 
     </div> 
</div> 

Приемный контроллер:

public function editExistingTicket(){ 
    $this->load->model('tickets'); 
    $ticketId = $this->input->post('ticketId'); 

    if ($this->input->post('submit') == 'Edit Ticket') { 
     $ticket = array(
        'ticketId' => $ticketId, 
        'category' => $this->input->post('category'), 
        'headline' => $this->input->post('headline'), 
        'description' => $this->input->post('description'), 
        'assigned' => $this->input->post('assigned'), 
        'open'  => $this->input->post('status'), 
        'priority' => $this->input->post('priority') 
       ); 
     $edited = $this->tickets->editTicket($ticket); 
    } 
    if($this->input->post('submit') == 'Delete Ticket') { 
     $this->tickets->deleteTicketById($ticketId); 
    } 
} 

Модель:

public function editTicket($ticket) 
{ 
    $q = $this->db->where('ticketId', $ticket['ticketId']); 
    $q = $this->db->update('tickets', $ticket); 
    $results = $this->db->affected_rows(); 
    return $results; 
} 

Я скучаю что-то легко? Или стратегия для этого неверна?

Спасибо за помощь!

+0

Я думаю, что вы пропустили ')' в 'if ($ this-> input-> post ('submit') == 'Удалить билет' {' –

+0

Я сделал это при копировании и вставке, но это не проблема. Он все еще работает неправильно. – jldavis76

+0

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

ответ

1

идентификаторами обоих кнопка отправки должны быть разными, как

$("#type1").click(function(){ 
 
    // Your code 
 
    return false; 
 
}); 
 

 
$("#type2").click(function(){ 
 
    // Your code 
 
    return false; 
 
});
<div class="form-group"> 
 
    <div class="col-sm-5 col-sm-offset-7"> 
 
     <input id="type1" style='font-size:18px; margin-left: 35px; margin-top: 10px;' name="submit" type="submit" value="Edit Ticket" class="btn btn-lg btn-success"> 
 
    </div> 
 
    <div class="col-sm-3 col-sm-offset-9"> 
 
     <input id="type2" style='font-size:18px; margin-left: 35px; margin-top: -65px;' name="submit" type="submit" value="Delete Ticket" class="btn btn-lg btn-danger"> 
 
     </div> 
 
</div>

+0

Благодарим вас за помощь. Это сработало отлично, хотя я все еще смущен, почему мой оригинальный метод не работает. – jldavis76

0

Просто меняют свои имена, а не их значения:

<div class="form-group"> 
    <div class="col-sm-5 col-sm-offset-7"> 
     <input name="edit" type="submit" value="1" id="type" style='font-size:18px; margin-left: 35px; margin-top: 10px;' class="btn btn-lg btn-success"> 
    </div> 
    <div class="col-sm-3 col-sm-offset-9"> 
     <input name="delete" type="submit" value="1" id="type" style='font-size:18px; margin-left: 35px; margin-top: -65px;' class="btn btn-lg btn-danger"> 
    </div> 
</div> 

Контроллер:

public function editExistingTicket() 
{ 
    $this->load->model('tickets'); 
    $ticketId = $this->input->post('ticketId'); 

    if ($this->input->post('edit')) { 
     $ticket = array(
      'ticketId' => $ticketId, 
      'category' => $this->input->post('category'), 
      'headline' => $this->input->post('headline'), 
      'description' => $this->input->post('description'), 
      'assigned' => $this->input->post('assigned'), 
      'open'  => $this->input->post('status'), 
      'priority' => $this->input->post('priority') 
     ); 
     $edited = $this->tickets->editTicket($ticket); 
    } elseif ($this->input->post('delete')) { 
     $this->tickets->deleteTicketById($ticketId); 
    } 
} 
Смежные вопросы