Estoy tratando de actualizar los nombres de la base de datos desde un menú desplegable de selección.
Esto es lo que tengo hasta ahora:
ver (exammenu_view.php)
<form name='selectexam' action="<?php echo base_url() . "index.php/exam/select/";?>" method='post'> <div class="form-group"> <select class="form-control" name="exam_id"> <?php foreach($exams as $row) { echo '<option value="'.$row->exam_id.'">'.$row->examname.'</option>'; } ?> </select> </div> <label>Examen wijzigen</label> <div class="form-group"><input type="text" name="update" class="form-control" placeholder="Examennaam"></div> <div class="form-group"> <input type="submit" name="sbm" value="Wijzigen" class="btn btn-info" /> <input type="submit" name="sbm" value="Verwijderen" class="btn btn-info" /> </div> </form>controlador (examen.php)
function select() { if($_SERVER['REQUEST_METHOD'] == 'POST'){ if($this->input->post('sbm') == 'Verwijderen') { $exam_id = $_POST['exam_id']; $this->exam_model->removeExam($exam_id); if(!empty($exam_id)){ $this->session->set_flashdata('del','<div class="alert alert-success text-center">Examen verwijderd.</div>'); } elseif(empty($exam_id)){ $this->session->set_flashdata('del','<div class="alert alert-warning text-center">Er zijn geen examens gevonden om te verwijderen.</div>'); } redirect('/exam/'); } elseif($this->input->post('sbm') == "Wijzigen") { $data = $this->input->post('dname'); $this->exam_model->editExam($data); $this->getExamName(); } } }modelo (modelo_examen.php)
function getExamName(){ $query = $this->db->query('SELECT exam_id, examname FROM exam'); return $query->result(); } function removeExam($id){ $this->db->where('exam_id', $id); $this->db->delete('exam'); } function editExam($id){ $this->db->where('exam_id', $id); $this->db->update('exam', $id); }Estoy recibiendo este error:
A Database Error Occurred You must use the "set" method to update an entry. Filename: models/Exam_model.phpHe intentado muchas cosas, pero no puedo entender cómo puedo hacer que funcione correctamente. Cualquier ayuda sería apreciada.
El error que ve se debe a que se pasó una variable con formato incorrecto para actualizar la tabla. En la función del modelo editExam, la variable $id se pasa para actualizar la columna, pero no contiene un formato de matriz.
Puedes usar:
$data2 = array('table_column_name' => 'dname');luego pasarlo a la funcion
function editExam($id, $data2){ $this->db->where('exam_id', $id); $this->db->update('exam', $data2); }cambio
$data = $this->input->post('dname'); $this->exam_model->editExam($data);para
$data = $this->input->post('update'); $this->exam_model->editExam($data,$exam_id);luego cambie la función editarExamen
function editExam($exam_id, $data) { $this->db->where('exam_id', $exam_id); $this->db->update('exam', $data); }Vista
<form name='selectexam' action="<?php echo base_url() . "index.php/exam/select/";?>" method='post'> <div class="form-group"> <select class="form-control" name="exam_id"> <?php foreach($exams as $row) { echo '<option value="'.$row->exam_id.'">'.$row->examname.'</option>'; } ?> </select> </div> <label>Examen wijzigen</label> <div class="form-group"><input type="text" name="update" class="form-control" placeholder="Examennaam"></div> <div class="form-group"> <input type="submit" name="sbm" value="Wijzigen" class="btn btn-info" /> <input type="submit" name="sbm" value="Verwijderen" class="btn btn-info" /> </div> </form>Controlador
function select() { if($_SERVER['REQUEST_METHOD'] == 'POST'){ if($this->input->post('sbm') == 'Verwijderen') { $exam_id = $_POST['exam_id']; $this->exam_model->removeExam($exam_id); if(!empty($exam_id)){ $this->session->set_flashdata('del','<div class="alert alert-success text-center">Examen verwijderd.</div>'); } elseif(empty($exam_id)){ $this->session->set_flashdata('del','<div class="alert alert-warning text-center">Er zijn geen examens gevonden om te verwijderen.</div>'); } redirect('/exam/'); } elseif($this->input->post('sbm') == "Wijzigen") { $data2 = array( 'examname' => $this->input->post ('update'), ); $id = $_POST['exam_id']; $this->exam_model->editExam($id, $data2); $this->exam_model->getExamName(); } redirect('/exam/'); } }Modelo
function getExamName(){ $query = $this->db->query('SELECT exam_id, examname FROM exam'); return $query->result(); } function removeExam($id){ $this->db->where('exam_id', $id); $this->db->delete('exam'); } function editExam($id, $data2){ $this->db->where('exam_id', $id); $this->db->update('exam', $data2); }