Michael Eugene Yuen Michael Eugene Yuen - 11 months ago 36
SQL Question

Create array from form and update mysql

This is my first attempt to post multiple records for a single table column and would need some help.

First, how can I post these records in an array?

<form action="set_order.php" method="POST">
$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
<td colspan ="2"><input type="submit" value="save" />

Second question is how to insert array to table.


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

I found this: Post array from form to update mysql table

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

But I can't get the result using ECHO.

I get:

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

If I can make that works, I think I can manage to update the table accordingly using FOREACH.

Answer Source

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:

foreach ($_POST['id'] as $key=>$id) {
    $order = $_POST['order'][$key];
    echo $id . ',' . $order . '<br />';