2017-08-05 16 views
0

データベースからテーブルを作成していて、各行に編集/削除ボタンを追加したり、データベースから特定の行を削除したりします。私は正常に作業 "削除"ボタンを追加しましたが、私はどのようにテーブル<td>のデータを更新してコントローラに送ることができないのか分かりません。ここでテーブルの行を更新し、データベースにデータベースを保存します。

は私のコードです:

ビューファイル

<table class="table table-striped"> 
    <tr> 
    <td>name</td> 
    <td>age</td> 
    <td>gender</td> 
    <td>class</td> 
    <td>roll no.</td> 
    </tr> 
    <?php foreach($record as $r): ?> 
    <tr> 
    <td><?php echo $r->name; ?></td> 
    <td><?php echo $r->age; ?></td> 
    <td><?php echo $r->gender; ?></td> 
    <td><?php echo $r->class; ?></td> 
    <td><?php echo $r->roll no; ?></td> 
    <td><a href="" >Edit</a> 
    <a href="<?php echo base_url()."student/deleteRow" ?id="$r->name">"          
      onclick="return confirm 
      ('Are you sure to Delete?')"><i class="icon-trash"></a></td> 

    </tr> 
    <?php endforeach; ?> 
</table> 

コントローラ機能

public function deleteRow(){ 

    if(isset($_GET['id'])){ 
     $id=$this->input->get('id'); 

     $this->student_model->rowDelete($id); 

     redirect($_SERVER['HTTP_REFERER']); 
    } 
} 

私は今、テーブルの行を更新するために、入力フィールドを挿入することができますかわかりません以前のビューには影響しません。どんな提案も役に立ちます。

+0

この[menual](HTTPSを参照してくださいです/www.formget.com/insert-data-into-database-using-codeigniter/)。 – Virb

答えて

0

あなたが削除のために行ったのと非常に似ています。このようなもの:

<td> 
    <a href="" >Edit/Delete</a> 
    <a href="<?php echo base_url('student/updateRow?id='.$r->name); ?><i class="icon-edit"></a><!-- This should be another method in Student controller --> 
    <a href="<?php echo base_url('student/deleteRow?id='.$r->name); ?>" onclick="return confirm('Are you sure to Delete?')"><i class="icon-trash"></a><!-- I changed order of edit and delete --> 
</td> 

私はCSRFについて警告する必要があります。ここでより良いセキュリティを実装しないと、そのリンクを指している誰でもデータを編集または削除できます。 ドキュメントでSecurity classをチェックし、隠し値を設定して、すでにそのページをリクエストした人だけが行を編集/削除できるようにする方法を確認してください。

0
<td><a href="<?php echo base_url();?>controller_name/function_name/<?php echo $edit_id;?>" >Edit</a></td> 


another way 




<td><a href="<?php echo base_url();?>controller_name/function_name?id=<?php echo $edit_id;?>" >Edit</a></td> 

あなたはあなたの条件に応じていずれかを使用することができます。

0

Studenデータを編集するには、その生徒データを取得するためにidまたはuniueカラム名をデータベースに渡す必要があります。

最初に学生IDを<a href="">タグに設定します。

<td><a href="<?= base_url('student/edit_student') ?>/$r->id" >Edit</a> 

次に、編集をクリックすると、コントローラに移動します。あなたは第三urlパラメータがのcon​​trolerコード内のショーとして直接得ることができます: また、あなたのコントローラがあるべき

SHONとしてgetを使用することができます:ここで

public function edit_student($id){ 

$student_data = $this->student_model->get_student_data($id); 

$this->load->view('your_view',['student_data'=>$student_data)]); 

} 

は、IDフォームcontrollrを得るあなたのモデルでありますそして、生徒データを検索し、コントローラにバックアップするpassit: あなたのモデルは次のようになります。

public function get_student_data($id){ 

$this->db->select('*'); 
$this->db->from('your_table_name'); 
$this->db->where('id',$id); 
$query = $this->db->get(); 

$student_data = $query->$row_array(); 

if(isset($student_data) && !empty($student_data)){ 

    return student_data; 

} else { 

    return FALSE; 

} 

} 

フォームコントローラは、ビューにデータを渡します。見る側の :/:ここ

<?php 
// Just to ensure the data. Comment it after testing 
echo "<pre>"; 
print_r($student_data); 
echo "</pre>"; 

?> 


<form action="<?= base_url('student/update_student') ?>/<?= $student_data['id'] ?>"> 

<input name="your_column_name" value="<?= $student_data['your_column_name'] ?>"> 
// Try to do the same for all you column. 

<input type="submit" value="updata"> 

</form> 

を更新するための制御装置のデータ

public function update_student($id){ 

$student_data = $this->input->post(); 
$status = $this->student_model->update_student($id,$student_data); 

if($status == TRUE){  
    $this->load->view('your_view'); 
    // Your Success view   
} else { 
    // Your view if fail to update 
    $this->load->view('your_view');  
} 
} 

ここでは、更新のためのモデルがデータ

public function get_student_data($id,$student_data){ 

$this->db->where('id',$id); 
$this->db->update('your_table_name',$student_data); 

    if($this->db->affected_rows() == 1){  
     return TRUE;  
    } else { 
     return FALSE; 
    } 

} 
関連する問題