0

这是我第一次尝试为单个表列发布多条记录,需要一些帮助。

首先,如何将这些记录发布到数组中?

<?php
  <form action="set_order.php" method="POST">
  <table>
    <tr>
  $query = mysql_query("SELECT * FROM table ORDER BY order");
  while ($result = mysql_fetch_assoc($query)) {
?>
      <td><?php echo $result['order']; ?></td> //show current order
      <td><input type="text" name="order[]" value="<?php echo $result['order']; ?>" /></td>  //input new order
      <td><input type="hidden" name="id[]" value="<?php echo $result['id']; ?>" /></td> //send related id
    </tr>
    <tr>
      <td colspan ="2"><input type="submit" value="save" />
    </tr>
  </table>
  </form>

第二个问题是如何将数组插入表中。

table

id | order
1  |  3
2  |  4
3  |  2
4  |  1

我发现了这个:从表单发布数组以更新 mysql 表

<?php
foreach ($_POST['id'] as $id) {
$order = $_POST['order']; // here is the problem
echo $id . ',' . $order . '<br />';
}
?>

但我无法使用 ECHO 获得结果。

我得到:

1, Array
2, Array
3, Array
4, Array

如果我能做到这一点,我想我可以设法使用 FOREACH 相应地更新表。

4

2 回答 2

2

Both $_POST['id'] and $_POST['order'] are arrays, it's a good idea to iterate over id's but then you need to retrieve the corresponding element of $_POST['order'] at each iteration.

As both arrays are filled in simultaneously when the HTTP request comes to the server, the matching elements should share the same keys, so that should work:

<?php
foreach ($_POST['id'] as $key=>$id) {
    $order = $_POST['order'][$key];
    echo $id . ',' . $order . '<br />';
}
?>
于 2013-06-30T16:39:01.300 回答
0

In php, you can't directly print an array. So you must use a foreach loop to loop through the elements one by one and echo them:

foreach ($order as $orderElem) 
    echo $orderElem;

In your code you are already looping through the id array, but you have forgotten the order array. So you will have to use this piece of code inside your already existing foreach loop.

于 2013-06-30T16:36:30.523 回答