#php #sql #ajax #codeigniter
#php #sql #ajax #codeigniter
Вопрос:
Я смог успешно извлечь данные из следующей таблицы. Однако в столбце «Классный руководитель» я хочу, чтобы имя учителя было вместо идентификатора учителя (внешний ключ)
Это таблица базы данных
Вот как я извлекаю данные в представлении класса
if( !empty($class_data) ) {
foreach ($class_data AS $row) {
?>
<tr>
<td><?php echo $row->class_id; ?></td>
<td><?php echo $row->grade; ?> </td>
<td><?php echo $row->name; ?></td>
<td><?php echo $row->capacity; ?></td>
<td> <?php echo $row->teacher_id; ?></td>
мой контроллер
function index()
{
$teacher_data= $this->Tableview_model->fetch_teacher_data();
$class_data = $this->Tableview_model->fetch_class_data();
$data["teacher_data"] = $teacher_data;
$data["class_data"] = $class_data;
$this->load->view('classes',$data);
}
function add_class()
{
$class_data = array(
'class_id' => '',
'grade' => $this->input->post('grade'),
'name' => $this->input->post('class_name'),
'capacity' => $this->input->post('capacity'),
'teacher_id' => $this->input->post('class_teacher'),
);
$insert = $this->Model_Action->insertTable('class',$class_data);
echo json_encode(array("status" => TRUE));
}
таблица базы данных учителя
СОЗДАЙТЕ ТАБЛИЦУ,
teacher
(teacher_id
АВТОИНКРЕМЕНТ int(11) НЕ равен НУЛЮ,t_f_name
varchar(250) НЕ РАВЕН НУЛЮ,t_last_name
varchar(250) НЕ РАВЕН НУЛЮ,DOB
дата НЕ РАВНА НУЛЮ,t_email
varchar(250) НЕ РАВНА НУЛЮ,t_address
varchar(500) НЕ РАВНА НУЛЮ,t_tel
varchar(150) НЕ РАВНА НУЛЮ,t_username
varchar(250) НЕ РАВНА НУЛЮ,t_password
varchar(500) НЕ РАВНА НУЛЮ,qualifications
varchar(5000) НЕ РАВНА НУЛЮ ,t_date_of_join
дата НЕ РАВНА НУЛЮ,t_date_of_leaving
дата НЕ РАВНА НУЛЮ,t_current_status
int(1) НЕ РАВНО НУЛЮ, ПЕРВИЧНЫЙ КЛЮЧ (teacher_id
) ) ENGINE=InnoDB AUTO_INCREMENT=8 КОДИРОВКА ПО УМОЛЧАНИЮ = latin1
Функция Model fetch_class_data модели
function fetch_class_data()
{
$this->db->select("*");
$this->db->from('class');
$query=$this->db->get();
if($query->num_rows() > 0)
{
return $query->result();
}else{
return false;
}
}
Комментарии:
1. Можете ли вы поделиться
teachers
структурой таблицы и кодом функции модели?2. Я обновил вопрос таблицей учителей и кодом функции модели
3. Ответ приведен ниже. Вам нужно использовать объединение, чтобы получить имя преподавателя.
Ответ №1:
Вам нужно использовать JOIN
between class
и teacher
table. Пожалуйста, измените код вашей модели на:
$this->db->select('c.*, t.t_f_name, t.t_last_name')
->from('class c')
->join('teacher t', 'c.teacher_id = t.teacher_id');
$query = $this->db->get();
Используйте t_f_name
и t_last_name
в вашем представлении в качестве полного имени путем их объединения
Итак, замените
<td><?php echo $row->teacher_id; ?></td>
с
<td><?php echo $row->t_f_name . " " . $row->t_last_name; ?></td>