使用一个提交按钮处理多个选择选项

时间:2017-03-30 23:19:07

标签: php html mysql

我使用mysql将数据插入下拉菜单。我有多个下拉菜单 - 每个下拉菜单都有名称id - 我从数据库($stmt)获取此信息。我通过另一个mysql查询$stmt2得到的每个下拉菜单的内容。 我需要确定在每个下拉菜单中设置了哪个id。我需要稍后使用这些值。这是我的解决方案,但不起作用。它不打印任何东西。

echo "<table class ='centered_div' border='1px solid black'>";
echo "<tr><td>ID</td><td>food</td><td>g</td></tr>";
while($rows = $stmt->fetch()){

    echo "<tr><td>" . $rows['id'] . "</td><td>".$rows['food'];
    echo "<form action='upravit_plan.php' method='post'><select name =".$rows['id']." > ";
    $stmt2 = $db->query($q2);
    echo "<option value ='nothing'> choose one </option>";
    while($rows2 = $stmt2->fetch())
    {
        echo '<option value = '.$rows2['id'].'>'.$rows2['food'].'</option>';
    }
    echo "</select></form>";
    echo "</td> <td>" . $rows['g'] . "g</td></tr><br> ";

};
echo "<tr><td colspan='3'><form action='upravit_plan.php' method='post'><input name = 'go' type='submit' value='OK'/></form></td></tr>";
echo "</table>";

if(isset($_POST['go']))
{ 
    $stmt = $db->query($q);
    while ($rows = $stmt->fetch())
    {

     echo $_POST[$rows['id']];  // trying to print values 

    }
}

1 个答案:

答案 0 :(得分:0)

您需要将所有元素都放在一个表单中。您还应该尝试将PHP与HTML分开,这可能是一个良好的开端,但仍需要HTML escaping之类的东西。请特别注意alternative syntaxshort echo tags的使用。

<form action='upravit_plan.php' method='post'>
<table class ='centered_div' border='1px solid black'>
  <tr>
    <th>ID</th>
    <th>food</th>
    <th>g</th>
  </tr>

<?php while($rows = $stmt->fetch()):?>
  <tr>
    <td><?=$rows['id']?></td>
    <td>
      <?=$rows['food']?>
      <select name="<?=$rows['id']?>">
        <option value ='nothing'> choose one </option>

<?php while($rows2 = $stmt2->fetch()):?>
        <option value="<?=$rows2['id']?>"><?=$rows2['food']?></option>

<?php endwhile;?>
      </select>
    </td>
    <td><?=$rows['g']?>g</td>
  </tr>

<?php endwhile;?>
  <tr>
    <td colspan='3'><input name='go' type='submit' value='OK'/></td>
  </tr>
</table>
</form>

<?php
if(isset($_POST['go']))
{ 
    $stmt = $db->query($q);
    while ($rows = $stmt->fetch())
    {

     echo $_POST[$rows['id']];  // trying to print values 

    }
}
?>