在提交后通过while循环获取的最后一个值

时间:2016-07-27 15:11:26

标签: php html forms email

每当我点击提交时,始终会发布已提取的电子邮件的最后一个值。 我该怎么做才能发布当前的电子邮件,以及如何使用每个表格行中选定的状态发布当前的电子邮件值

<form action="" method="post">
<table>
<tbody>
<?php
while($row=mysqli_fetch_assoc($query))
{
echo '
<tr>
<td style="text-align:center;">
<select name="statuss">
<option selected="selected" disabled="disabled">Select Status</option>
<option value="1">Submitted</option>
<option value="2">Accepted</option>
<option value="3">Questionnaire</option>
<option value="4">Interview</option>
</select>
<input type="text" name="email" value="'.$row['email'].'">
<input type="submit" value="Update" name="submit" class="btn btn-primary">
</td>
</tr>';
}
?>
</tbody>
</table>

</form>
<?php
if(isset($_POST['submit']))
{
$email=(isset($_POST['email']) ? $_POST['email'] : '');
$statuss=(isset($_POST['statuss']) ? $_POST['statuss'] : '');
$sql="update status SET personal_stylist = '$statuss' where email='$email'";
$query=mysqli_query($connection, $sql);
}
?>

1 个答案:

答案 0 :(得分:3)

在代码的许多其他问题中(每次编辑都会大幅改变,因此很难跟上),从逻辑上讲,form无法知道您直观的意图是哪些值发布。

简化,你有这个结构:

<form>
  <table>
    <row>a bunch of fields</row>
    <row>a bunch of fields</row>
    <row>a bunch of fields</row>
  </table>
</form>

但是,每个row都有相同的字段。因此,当表单发布时,它无法知道您在提交表单时正在查看哪些字段。它所能做的就是将它们全部打包成一个表格POST。当它这样做时,每次遇到同名的字段时,新字段都会覆盖前一个字段。

<form>移至行内。再次简化,结构将更像这样:

<table>
  <row>
    <form>a bunch of fields</form>
  </row>
  <row>
    <form>a bunch of fields</form>
  </row>
  <row>
    <form>a bunch of fields</form>
  </row>
</table>

更具体地说,让<form>成为<td>的后代:

while($row=mysqli_fetch_assoc($query))
{
  echo '
  <tr>
    <td style="text-align:center;">
      <form>
        your form
      </form>
    </td>
  </tr>';
}