Как удалить определенную строку в codeigniter?
Я новичок в codeigniter. На моей странице просмотра я показываю данные из базы данных в таблице, где у меня есть два якорных тега для обновления и удаления. Я хочу удалить определенную строку из базы данных с помощью id.
моя страница просмотра
<?php foreach($query as $row){ ?>
<tr>
<td><?php echo $row->name ?></td>
<td><?php echo $row->testi ?></td>
<td><?php echo anchor('textarea/delete_row', 'DELETE', 'id="$row->id"'); ?></td>
<td><a href="#ajax-modal2" data-id="delete[]" role="button" class="Delete" data-toggle="modal" onClick="confirm_delete()"><i class="icon-trash"></i></a></td>
</tr>
<?php } ?>
</table>
моя страница контроллера
function delete_row()
{
$this->load->model('mod1');
$this->mod1->row_delete();
redirect($_SERVER['HTTP_REFERER']);
}
и моя страница модели
function row_delete()
{
$this->db->where('id', $id);
$this->db->delete('testimonials');
}
Я хочу удалить строку, поймав соответствующий идентификатор. Пожалуйста, не будьте суровыми. спасибо
Ответы
Ответ 1
В вашей модели используется переменная $id
, но вы вытаскиваете ее из ниоткуда. Вам нужно передать переменную $id
с вашего контроллера на вашу модель.
Controller
Позволяет передать $id модели с помощью параметра метода row_delete()
.
function delete_row()
{
$this->load->model('mod1');
// Pass the $id to the row_delete() method
$this->mod1->row_delete($id);
redirect($_SERVER['HTTP_REFERER']);
}
Model
Добавьте параметр $id к параметрам методов модели.
function row_delete($id)
{
$this->db->where('id', $id);
$this->db->delete('testimonials');
}
Теперь проблема заключается в том, что вы передаете переменную $id
из своего контроллера, но она не объявлена нигде в вашем контроллере.
Ответ 2
простой способ:
(передайте значение id):
<td><?php echo anchor('textarea/delete_row?id='.$row->id, 'DELETE', 'id="$row->id"'); ?></td>
в контроллере (получить идентификатор):
$id = $this->input->get('id');
$this->load->model('mod1');
$this->mod1->row_delete($id);
в модели (получить переданные аргументы):
function row_delete($id){}
Собственно, вы должны использовать ajax для POST для значения id для контроллера и удалить строку, а не GET.
Ответ 3
**multiple delete not working**
function delete_selection()
{
$id_array = array();
$selection = $this->input->post("selection", TRUE);
$id_array = explode("|", $selection);
foreach ($id_array as $item):
if ($item != ''):
//DELETE ROW
$this->db->where('entry_id', $item);
$this->db->delete('helpline_entry');
endif;
endforeach;
}
Ответ 4
Он появится в URL-адресе, чтобы вы могли получить его двумя способами.
Кулак
<td><?php echo anchor('textarea/delete_row', 'DELETE', 'id="$row->id"'); ?></td>
$id = $this->input->get('id');
2-й.
$id = $this->uri->segment(3);
Но во втором методе вы должны считать no. сегментов в URL, на которых нет. Иди сюда. 2,3,4 и т.д., Тогда вы должны пройти. затем в();
Ответ 5
Мой контроллер
public function delete_category() //Created a controller class //
{
$this->load->model('Managecat'); //Load model Managecat here
$id=$this->input->get('id'); // get the requested in a variable
$sql_del=$this->Managecat->deleteRecord($id); //send the parameter $id in Managecat there I have created a function name deleteRecord
if($sql_del){
$data['success'] = "Category Have been deleted Successfully!!"; //success message goes here
}
}
Моя модель
public function deleteRecord($id) {
$this->db->where('cat_id', $id);
$del=$this->db->delete('category');
return $del;
}