从输入表单PHP获取特定的数组值

时间:2014-10-18 16:38:38

标签: php mysql arrays mysqli

好的,所以我从一个mysql表中提取了一个PHP数组。该数组是根据表中经常添加和删除项的项生成的。我在项目名称“提交”旁边有一个按钮。我希望按钮能够识别同一索引中的项目。然后它会将项目提交的项目传递给新表。

<form class="omb_loginForm" action="inc/contribute_item.php" autocomplete="off" method="POST">
<?php
     $item_array;
     $index = 0;
     $index_2 = 1;
     $r = "r";
     $b="b";
     foreach ($item_array as $id_array){ ?>
        <tr id="<?php echo $r.$index_2; ?>">
        <td><?php echo $item_array[$index] ?></td>
        <td> <?php echo $quantity_array[$index]; ?></td>                   
        <td> <?php echo $price_array[$index]; 
             $selectedItem = $item_array[$index]; ?>
        <input type='hidden' name='hidden' value='<?php $selectedItem ?>'>
        <input type='submit' name='submit' value"submit">
     </form> </td>
  <?php $index++;
        $index_2++; ?>
       </tr>

这是PHP:

if ($_POST['submit']) {
    $connect = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
    $user_contrib = $_SESSION['first_name'];
    $selected = $selectedItem;
    $connect->query("UPDATE `items` SET `purchased_by` = '$user_contrib' WHERE `name` = '$selected'");

}

1 个答案:

答案 0 :(得分:2)

您已走上正轨,只需确保您的开启和关闭html代码已正确对齐。

每行使用一个表格

如果您想通过隐藏输入传输所选值,请确保每个输入都在其自己的表单中以及相应的提交按钮:

<!-- row 1: -->
<form action="inc/contribute_item.php" method="post">
  <input type="hidden" name="myValue" value="1"/>
  <input type="submit" value="submit"/>
</form>

<!-- row 2: -->
<form action="inc/contribute_item.php">
  <input type="hidden" name="myValue" value="2"/>
  <input type="submit" value="submit"/>
</form>

然后在PHP中使用$_POST['myValue']访问所选值。

不要嵌套表格标签。并且不要在表格,tr,td标签之间放置表格标签。按照打开它们的顺序关闭它们。

更具体地说,这就是你的循环的样子:

<!-- don't start your form here -->
<table>
  <?php foreach(...) { ?>
  <tr>
    <td>...</td>
    <td>
      <form action="inc/contribute_item.php" method="post">
        <input type="hidden" name="myValue" value="<?= $index ?>"/>
        <input type="submit" value="submit"/>
      </form>
    </td>
  </tr>
  <?php } ?>
</table>

使用单选按钮或复选框

另一种选择是在每一行中使用<input type="radio" ... />个元素。这样您就可以只使用一个全局表单:

<form action="inc/contribute_item.php" method="post">

<table>
  <?php foreach(...) { ?>
  <tr>
    <td>...</td>
    <td>
      <input type="radio" name="myValue" value="<?= $index ?>"/>
    </td>
  </tr>
  <?php } ?>
</table>

<input type="submit" value="submit"/>
</form>