无法使用PHP正确生成html表

时间:2011-11-22 16:30:25

标签: php mysql html forms foreach

我有以下2个表格:

         --  members --

      |member_ID|nick_name|
      ---------------------
      |    1    |   Jack  |
      ---------------------
      |    2    |   Jill  |
      ---------------------

           -- shares --

|member_ID|nick_name|percent_owner|
-----------------------------------
|   1     |  Jack   |     75      |
-----------------------------------
|   2     |  Jill   |     25      |
-----------------------------------

我的第一个php页面将查询成员表并创建一个html表就好了。在html表中,我添加了一个空白文本框来手动输入百分比所有者值。这就是该表的样子:

<table>
  <?php foreach ($members as $members) : ?>
  <tr>
    <td><?php echo $members['member_ID']; ?></td>
    <td><?php echo $members['nick_name']; ?></td>
    <td><input type="text" name="percent_owner[]" value="" size="3"></td>
  </tr>
  <?php endforeach; ?>
</table>

现在,我要做的是将新信息发送到另一个页面,以创建另一个包含member_ID,nick_name和百分比所有者的html表。这就是我的问题所在。这是第二个html表:

<table>
  <?php foreach ($members as $member) : ?>
  <?php foreach ($_POST['percent_owner'] as $value) : ?>                
   <tr>
     <td><?php echo $member['member_ID']; ?></td>
     <td><?php echo $member['nick_name']; ?></td>
     <td><?php echo $value; ?></td>                 
   </tr>
  <?php endforeach; ?>
  <?php endforeach; ?>
</table>

我不相信我正在正确地组织我的foreach陈述。要么我只得到每一行中的第一个percent_owner值,要么我在每一行中得到两个值,但是无法正确。一旦我知道了这一点,我就会将它全部输入到共享表中,但稍后会出现。我需要先解决这个问题。

谢谢你!

1 个答案:

答案 0 :(得分:3)

你需要在第一个代码块中为迭代变量使用一个不同的变量,一个不是数组。

foreach ($members as $member) 

制作:

<table>
  <?php foreach ($members as $member) : ?>
    <tr>
      <td><?php echo $member['member_ID']; ?></td>
      <td><?php echo $member['nick_name']; ?></td>
      <td><input type="text" name="percent_owner[]" value="" size="3"></td>
    </tr>
  <?php endforeach; ?>
</table>

<强>更新

您正在尝试遍历每行的%,您想要的是该行中的%。

<table>
  <?php
   $i = 0;
   $percents = expload(',', $_POST['percent_owner']);
   foreach ($members as $member) : ?>                
   <tr>
     <td><?php echo $member['member_ID']; ?></td>
     <td><?php echo $member['nick_name']; ?></td>
     <td><?php echo $percents[$i++]; ?></td>                 
   </tr>
  <?php endforeach; ?>
</table>

您可能希望将第一个块中的输入名称更改为“percent_owner”。另外,请使用这段代码,因为它未经测试。