2013-03-01 53 views
0

codeigniter的新手段,希望有一個允許用戶更新MySQL數據條目的表單。Codeigniter - 更新/編輯數據庫表的形式

我有一個foreach循環顯示數組的值,等於我的數據庫表。

我想要做的是將數據庫輸出到可編輯表格,以便用戶可以更改表格並更新MySQL表格。

我現有的代碼在下面,這會創建正確的html,但這是最好的和最優化的方式來做到這一點? codeigniter有一個我可以使用的功能嗎?另外有沒有更好的方法來用codeigniter form helper創建輸入?記住我需要爲每個輸入框生成唯一的名稱和ID值,以便我可以獲取發佈信息來更新數據庫。

<table> 
    <tr> 
     <td>&nbsp;</td><td>&nbsp;</td><td>Customer Name</td><td>postalcode</td> 
    <tr> 

<?php if(isset($records)) : foreach ($records as $row) : ?> 
    <tr> 
     <td> 
<?php echo anchor('masterdata/delete_customer/$row->id',img(array('src'=>'images/delete_icon.png','border'=>'0','alt'=>'Delete'))); ?> 
     </td> 
     <td> 
      <input type=checkbox name="editcustomer[]" id="editcustomer[]" value="<?php echo $row->id ?>"> 
     </td> 
     <td> 
      <input type="text" name="customername_<?php echo $row->id ?>" id="customername_<?php echo $row->id ?>" value="<?php echo $row->customer_name ; ?>" > 
     </td> 
     <td> 
      <input type="text" name="customername_<?php echo $row->id ?>" id="customername_<?php echo $row->id ?>" value="<?php echo $row->postalcode ; ?>" > 
     </td> 
    </tr> 
<?php endforeach ; ?> 
    </table> 
<input type="submit" value="Update Selected"> 
<?php else : ?> 
<h2> No Records Found</h2> 
<?php endif; ?> 

任何建議表示讚賞,

感謝和問候一如既往。編程

+0

這個問題涉及到[代碼評論](http://codereview.stackexchange。 com /) – 2013-03-02 06:12:44

回答

1

第一條規則:如果它工作,不要去碰它:)

但如果嚴重的是,代碼是確定只有幾個非關鍵的錯誤。

  1. 報價缺少一些回波語句後輸入類型=「複選框」和分號。
  2. 如果未設置$記錄的值,表格的結束標記將會丟失。
  3. 自閉元素,如< br>,應該在末尾有一個斜線(XHTML)。
  4. (可選)。另外,爲了更好的代碼的可讀性

<?php echo $variable; ?> 

可改爲

<?=$variable?> 

下面是重新格式化代碼:

<table> 
    <tr> 
     <td>&nbsp;</td><td>&nbsp;</td><td>Customer Name</td><td>postalcode</td> 
    <tr> 

    <?php if(isset($records)) : ?> 
     <?php foreach ($records as $row) : ?> 
      <tr> 
       <td> 
        <?php echo anchor('masterdata/delete_customer/$row->id', img(array('src'=>'images/delete_icon.png','border'=>'0', 'alt'=>'Delete'))); ?> 
       </td> 
       <td> 
        <input type=checkbox name="editcustomer[]" id="editcustomer[]" value="<?php echo $row->id; ?>" /> 
       </td> 
       <td> 
        <input type="text" name="customername_<?php echo $row->id; ?>" id="customername_<?php echo $row->id; ?>" value="<?php echo $row->customer_name; ?>" /> 
       </td> 
       <td> 
        <input type="text" name="customername_<?php echo $row->id; ?>" id="customername_<?php echo $row->id; ?>" value="<?php echo $row->postalcode; ?>" /> 
       </td> 
      </tr> 
     <?php endforeach; ?> 

     <input type="submit" value="Update Selected" /> 
    <?php else : ?> 
     <h2>No Records Found</h2> 
    <?php endif; ?> 
</table> 
1

看看codeigniters形式的幫手類....

在視圖中,即。在PHP的登錄表單中form_validation使用規則添加以下代碼

   <?php echo form_open('site/form_validation'); ?> 

這種重定向形式完成控制器....你的情況,例如form_validation ... 在form_validation笨類... 使用回調模型和更新數據庫....

+0

感謝您花時間增加一些價值。我可以請你詳細說明一下嗎?適合form_open語法,但是有沒有一種幫助器來生成輸入字段,預填充數據庫中的名稱和ID?謝謝, – Smudger 2013-03-02 11:05:09

0

Codeigniter基於MVC ...所以我會建議以下模式...我覺得它有點冗長,但無論如何...其模塊化和容易跟蹤和更新

模型

  class model_edit extends CI_model(){ 
      public function edit(){ $this->db->get('edit_users'); 
      //enter the sql query for getting the old values 
      $data= array('name'=>$query_result->['name],...); 
      return $data;} 

它通到控制器

 class controller_name extends CI_Controller{ 
      //it captures the data and passes it on to the view 
$this->load->view('edit_form',$data); 
} 
} 

然後是作爲用戶的視圖

<html> 
    <!--all the stuff--> 
    <input name/> 
    <?php // display previous data...allow user to edit echo $name?> 
    </html> 

進入數據通它在控制器上執行表單驗證並更新模型中的數據庫......我建議你去codeigniter活動記錄類.... 代碼結構不是很好,但我希望它可以幫助...

相關問題