2010-06-23 18 views
0

嗨,我正在尋找關於如何最好地處理提交數據庫表的建議。建議用PHP提交數據表的設計

到目前爲止,我已經生成的重複行的數據,像這樣:

<table border=1> 
    <tr> 
    <th>Phone Number</th> 
    <th>Prefix CallerID with</th> 
    <th>Seconds to ring before<br/>reaching voicemail</th> 
    <th>Voice mailbox<br/>extension number</th> 
    <th>Notes</th> 

    </tr> 
    <?php 
     $id = 1; 
     foreach ($line_detail as $line){ 
      echo '<tr>'; 
      echo '<td>'.form::input($id.'_did', $line->did).'</td>'; 
      echo '<td>'.form::input($id.'_cid_prefix', $line->cid_prefix).'</td>'; 
      echo '<td>'.form::input(array($id.'_dial_timeput', 'size'=>15, 'maxlength'=>3), $line->dial_timeout).'</td>'; 
      echo '<td>'.form::dropdown($id.'_extension', $phones, $line->voicemail).'</td>'; 
      echo '<td>'.form::input($id.'_notes', $line->notes).'</td>'; 
      echo "</tr>"; 
      $id++; 
     } 
    ?> 
</table> 

當我提出這個我有這樣的重複數據:

(array) Array 
(
    [1_did] => 64123456789 
    [1_cid_prefix] => DDI- 
    [1_extension] => 800 
    [1_notes] => 
    [2_did] => 645678903 
    [2_cid_prefix] => TEST- 
    [2_extension] => 820 
    [2_notes] => 
    [submit] => Save 
) 

好了,現在我可以按id將它們分組並向數據庫提交更新。 但是,我想知道是否有更好的方法來做到這一點。

回答

3

輸入名稱的PHP數組符號是要走的路。

<input name="data[<?php echo $id;?>]['did'] /> 
<input name="data[<?php echo $id;?>]['cid_prefix'] /> 
<input name="data[<?php echo $id;?>]['extension']"/> 
... 

一旦數據發佈,您將最終得到一個漂亮的二維關聯數組。

+0

感謝,這正是我需要。使它更簡單的工作。 – Matt 2010-06-23 23:53:53

0

,您可以建立形式是這樣的:

foreach ($line_detail as $line){ 
     echo '<tr>'; 
     echo '<td>'.form::input('did['.$id.']', $line->did).'</td>'; 
     echo '<td>'.form::input('cid_prefix['.$id.']', $line->cid_prefix).'</td>'; 
     echo '<td>'.form::input(array('dial_timeput['.$id.']', 'size'=>15, 'maxlength'=>3), $line->dial_timeout).'</td>'; 
     echo '<td>'.form::dropdown('extension['.$id.']', $phones, $line->voicemail).'</td>'; 
     echo '<td>'.form::input('notes['.$id.']', $line->notes).'</td>'; 
     echo "</tr>"; 
     $id++; 
    } 

它會給你下面的數組:

(array) Array 
(
    [did] => array(
     [1] => 64123456789, 
     [2] => 645678903, 
    ) 
    [cid_prefix] => array(
     [1] => 'DDI-', 
     [2] => 'TEST-', 
    ) 
    [extension] => array(
     [1] => 800, 
     [2] => 820, 
    ) 
    [notes] => array(
     [1] => '', 
     [2] => '', 
    ) 
    [submit] => Save 
) 

這可能是多一點方便易

+0

謝謝,它非常接近我想要的。但是,timdev的答案的結果是更容易處理。 – Matt 2010-06-23 23:54:31