建议用PHP提交数据表的设计

时间:2010-06-23 23:22:19

标签: php kohana

您好我正在寻找有关如何最好地处理数据库表提交的建议。

到目前为止,我已经生成了重复的行数据,如下所示:

<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对它们进行分组并向数据库提交更新。 但是,我想知道是否有更好的方法。

2 个答案:

答案 0 :(得分:3)

PHP的输入名称数组符号是可行的方法。

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

一旦数据发布,你最终会得到一个漂亮的二维关联数组。

答案 1 :(得分: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
)

它可能更方便