如何在codeigniter中编辑时检索下拉列表的值

时间:2015-10-27 14:23:08

标签: php codeigniter

好的,所以我到处寻找我的问题的解决方案,但到目前为止没有找到。我的代码看起来像这样。我创建了一个动态视图页面,其中动态加载编辑和添加视图。但问题出现时我试图在编辑期间保留选择下拉列表的价值。如果有人能帮助我,我将不胜感激。

查看

<div class="panel-body">
<div class="row">
    <div class="col-lg-6">
    <?php if(@$patient_info){
             echo '<h1 class="page-header">Edit Patient</h1>';
            }else{
             echo '<h1 class="page-header">Add Patient</h1>';
            }
    ?>
     <?php if($this->session->flashdata('error')){ ?>
        <div class="alert alert-danger"><?php echo $this->session->flashdata('error'); ?></div>
    <?php } ?>
    <?php if($this->session->flashdata('erroredit')){ ?>
        <div class="alert alert-danger"><?php echo $this->session->flashdata('erroredit'); ?></div>
    <?php } ?>
    <?php //echo validation_errors('<div class="alert alert-danger">','</div>'); ?>

        <form role="form" method="post" action="<?php echo isset($patient_info) ? site_url('home/patient/edit') .'/' .$patient_info->patientID : site_url('home/patient/new');  ?>">
            <div class="form-group">
                <?php echo form_error('pname', '<div class="alert alert-danger">', '</div>'); ?>
                <label for="pname">Patient Name</label>
                <input class="form-control" placeholder="Enter Patient Name" name="pname" value="<?php echo isset($patient_info) ? $patient_info->patientName : ''; ?>">
            </div>

            <!-- Dropdown menu for selecting clinic -->
            <div class="form-group">
                <label for="select">Select Clinic Name</label>
                    <select class="form-control" name="selectClinic">

                         <option value="none">Select Clinic Below</option>
                            <?php foreach($allclinic as $key=>$clinic){ ?>
                                <!--<?php //foreach($clinicByPatient as $clin): ?>-->
                                    <option value="<?php $clinic->clinicID; ?>"
                                    <?php if(isset($patient_info)){
                                            echo 'selected="selected"';
                                        }
                                        ?>
                                        >
                              <?php echo $clinic->clinicName; ?>
                                    </option>
                            <?php //endforeach; ?>
                              <?php  } ?>
                    </select>
            </div>
            <!-- Select Clinic ends-->
            <div class="form-group">
                <label for="select">Select Dentist</label>
                    <select class="form-control" name="selectDentist">
                        <option value="">Select Dentist</option>
                    <?php foreach($dentistdet as $key=>$dentist){ ?>
                      <option value="<?php echo $did = $dentist->dentistID;?>"><?php echo $dentist->dentistName; ?></option>
                    <?php } ?>
                    </select>
            </div>
            <div class="form-group">
                <input type="submit" class="btn btn-primary btn-lg btn-block" name="submit" value="<?php echo isset($patient_info) ? 'Update Patient' : 'Add Patient'; ?>"  >
            </div>
            </form>
            <div class="form-group">
                <a href="<?php echo base_url() .'home/patient';?>" style="text-decoration:none;"><input type="submit" class="btn btn-danger btn-lg btn-block" value="Cancel"></a>
            </div>

编辑控制器

public function edit(){
    $id = $this->uri->segment(4);
    $this->load->library('form_validation');
    $this->load->model('clinic_model');
    $this->load->model('dentist_model');
    $data['patient_info'] = $this->patient_model->getPatientById($id);
    $data['clinicByPatient'] = $this->patient_model->getPatientByClinic();
    $data['allclinic'] = $this->clinic_model->getAllClinics();
    // $data['clinicdet'] = $this->patient_model->getPatientByClinic();

    if($_POST){
      $this->form_validation->set_rules('pname', 'Patient Name', 'trim|required|xss_clean');
      $this->form_validation->set_rules('paddress', 'Patient Address', 'trim|required|xss_clean');
      $this->form_validation->set_rules('pcontact', 'Patient Contact', 'trim|required|xss_clean');
        if($this->form_validation->run()== FALSE){
          $data['subview'] = 'patient/patient_new';
          $this->load->view('includes/layout', $data);
        }else{
          $patientname = $this->input->post('pname');
          $patientaddress = $this->input->post('paddress');
          $patientcontact = $this->input->post('pcontact');
          $select = $this->input->post('selectClinic');
          $option = $this->input->post('selectDentist');
          $edited = $this->patient_model->editpatient($id, $patientname, $patientaddress, $patientcontact, $select, $option);
          if($edited){
            $this->session->set_flashdata('successedit', 'Successfully updated the record');
            redirect('home/patient');
             }
        }

    }else{
      $data['subview'] = 'patient/patient_new';
      $this->load->view('includes/layout',$data);
  }

}

模型看起来像这样

    <?php if( ! defined('BASEPATH')) exit('No direct script access allowed');
class Patient_model extends CI_Model{

  public function countPatients(){
    $countPatient = $this->db->count_all('patient');
    return $countPatient;
  }

  public function getallpatients(){
    $query = $this->db->get('patient');
    if($query->num_rows()>0){
      return $query->result();
    }
    else{
      return FALSE;
    }
  }//getallpatients function ends

  public function getPatientByClinic(){
    $this->db->select('*');
    $this->db->from('patient');
    $this->db->join('clinic', 'patient.clinicID = clinic.clinicID', 'left');
    $this->db->join('dentist', 'patient.dentistID = dentist.dentistID', 'left');
    $query = $this->db->get();
    if($query->num_rows>0){
      return $query->result();
    }
  }

  public function addPatientByClinic($patientname, $patientadd, $patientcontact, $select, $option){
    $data = array(
        'patientName' => $patientname,
        'patientAddress' => $patientadd,
        'patientContact' => $patientcontact,
        'clinicID' => $select,
        'dentistID' => $option
      );
    return $this->db->insert('patient',$data);

    }// method ends


    public function deletePatient($id){
      $verifyID = array('patientID' => $id);
      // $affRows = $this->db->affected_rows();
      // $obj = new Patient_model;
      if($verifyID){
        $this->db->where($verifyID);
        $this->db->delete('patient');
          if($this->db->affected_rows()){
            return TRUE;
            }
        }
    }


    public function editpatient($id, $patientname, $patientaddress, $patientcontact, $select, $option){
      $data = array(
          'patientName' => $patientname,
          'patientAddress' => $patientaddress,
          'patientContact' => $patientcontact,
          'clinicID' => $select,
          'dentistID' => $option
        );
      $query = $this->db->where('patientID', $id)
                        ->update('patient', $data);
      if($query){
        return true;
      }
    }//method ends

    public function getPatientById($id){
      $query = $this->db->where('patientID', $id)
                        ->get('patient');
      return $query->row();
    }

}//class ends
?>

1 个答案:

答案 0 :(得分:-1)

在您的选择框的代码中,您实际上并没有回显$clinic->clinicID。因此,在提交表单时,该值将为空。

您还需要注意如何选择默认情况下选择哪个元素 - 您不会与在循环中发生变化的任何内容进行比较。你应该检查$clinic->clinicID吗?