2014-09-25 1 views
0

У меня есть приложение CodeIgniter, где на странице просмотра я выпадаю из таблицы с именем department.Вставить выбранное выпадающее значение одной таблицы в другую таблицу

Вот структура department таблицы:

dept_id  int(11) PK 
dept_name  varchar(10) 

У меня есть следующие значения в department таблице:

dept_id    dept_name 
     1      EEE 
     2      CSE 
     3      ME  
     4      CE 
     5      ARCH 

Значения dept_name населены в моем раскрывающемся списке.

мой взгляд файл student_view.php

<!DOCTYPE html> 
<html> 

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>My first site in CI</title> 
</head> 

<body> 
<h2>Student Information</h2> 

<form method="post" action="<?php echo base_url();?>index.php/student/insert_student_db"> 
<table width="800" border="0"> 
<th width="213" align="right" scope="row">Name:</th> 
<td width="161"><input type="text" name="name" size="60" /></td> 
</tr> 
<tr> 
<th align="right" scope="row">Roll:</th> 
<td><input type="text" name="roll" size="60" /></td> 
</tr> 
<tr> 
<th align="right" scope="row">Department:</th> 
<td> 
<select name="department"> 
<?php 
    $sql = mysql_query("SELECT dept_name FROM department"); 
    while ($row = mysql_fetch_array($sql)){ 
     echo "<option value=\"department1\">" . $row['dept_name'] . "</option>"; 
    } 
?> 
</select> 
</td> 
</tr> 
<tr> 
<th align="right" scope="row">Email:</th> 
<td><input type="text" name="email" size="60" /></td> 
</tr> 
<tr> 
<th align="right" scope="row">Mobile:</th> 
<td><input type="text" name="mobile" size="60" /></td> 
</tr> 
<tr> 
<th align="right" scope="row">&nbsp;</th> 
<td><input type="submit" name="submit" value="Send" /></td> 
</tr> 
</table> 
</form> 

<table width="600" border="1" cellpadding="5"> 
<tr> 
<th scope="col">Name</th> 
<th scope="col">Roll</th> 
<th scope="col">Department</th> 
<th scope="col">Email</th> 
<th scope="col">Mobile</th> 
</tr> 

<?php foreach ($student_list as $std_key){ ?> 
<tr> 
<td><?php echo $std_key->name; ?></td> 
<td><?php echo $std_key->roll; ?></td> 
<td><?php echo $std_key->department; ?></td> 
<td><?php echo $std_key->email; ?></td> 
<td><?php echo $std_key->mobile; ?></td> 
</tr> 
<?php }?> 
</table> 
</body> 
</html> 

Мой контроллер student.php

<?php 
    if (! defined('BASEPATH')) exit('No direct script access allowed'); 
    class Student extends CI_Controller 
    { 
     function __construct() 
     { 
      parent::__construct(); 
      #$this->load->helper('url'); 
      $this->load->model('student_model'); 
     } 

     //Show all Students 
     public function index() 
     { 
      $data['student_list'] = $this->student_model->get_all_students(); 
      $this->load->view('student_view', $data); 
     } 

     //Insert a student 
     public function insert_student_db() 
     { 
      $udata['name'] = $this->input->post('name'); 
      $udata['roll'] = $this->input->post('roll'); 
      $udata['department'] = $this->input->post('department'); 
      $udata['email'] = $this->input->post('email'); 
      $udata['mobile'] = $this->input->post('mobile'); 

      $res = $this->student_model->insert_student($udata); 

      if($res) 
      { 
       header('location:'.base_url()."index.php/student/".$this->index()); 
      } 
     } 
    } 
?> 

Моя модель student_model.php

<?php 
class Student_model extends CI_Model 
{ 
    function __construct() 
    { 
     parent::__construct(); 
     $this->load->database(); 
    } 

    //To retrieve all students 
    public function get_all_students() 
    { 
     $query = $this->db->get('student'); 
     return $query->result(); 
    } 

    //To add a new student to the database 
    public function insert_student($data) 
    { 
     return $this->db->insert('student', $data); 
    } 

} 
?> 

То, что я хочу сделать, это: Я хочу, чтобы вставить выбрано значение dept_name в раскрывающемся списке моих страницу просмотра, в столбец department другой таблицы с именем student, который связан с моей моделью student_model.php. Но значение, которое вставлено, представляет собой строку - «department», а не выпадающее значение. Что не так с моим кодом?

Вот структура моего student стола:

name    varchar(30) 
    roll    varchar(10) 
    department  varchar(10) 
    email   varchar(50) 
    mobile   varchar(15) 

ответ

2

Если вы хотите, чтобы это задание:

$udata['department'] = $this->input->post('department'); 

поставить название отдела dept_name в области $udata['department'], то вам необходимо установить <option>: dept_name как это:

<?php 
$sql = mysql_query("SELECT dept_name FROM department"); 
while ($row = mysql_fetch_array($sql)){ 
    echo "<option value=\"{$row['dept_name']}\">" . $row['dept_name'] . "</option>"; 
} 
?> 
+0

Отлично! Я получаю ожидаемый результат и могу успешно вставить значение 'dept_name' внутри' department'. Muchos Gracias Senor Arbiza за столь быстрое и точное решение. :) –

+1

Ha sido un россыпи, estamos для servirle! :) –