0

我有一个来自数据库的动态行。每行都有一个订单字段。我想让用户能够通过在每行旁边的文本框中输入顺序来更改顺序,并且当用户单击保存时,每行都将使用新顺序进行更新。

我的问题是当我写这段代码时:

    <table>
    <?
    foreach($results as $p)
    {
        echo '
            <tr>
            <td>'.$p['page_title'].'</td>
            <td><input type="text" size="2" id="'.$p['page_id'].'" name="s[]" value="'.$p['menu_order'].'"></td>
        </tr>';
    }
    ?>
    <tr><td colspan="2"><input type="submit" value="Save Order"></td></tr>
    </table>

正如您所看到的,每个动态文本框都会在发布表单后给出新订单,但问题是我如何知道这个订单到哪一行?

该图像将解释更多。单击保存后,s数组将如下所示:

数组( [0] => 2 1 => 3 [2] => 1 )

但是,我不知道要更新的页面! 在此处输入图像描述

4

1 回答 1

2

我认为您要问的是如何按分配给它的数字对字段进行排序。如果这是您想要做的,并且如果您使用 MySQL 来存储这些数据,您可以按该顺序检索它。例如:

SELECT * FROM mytable ORDER BY menu_order ASC

编辑:既然我已经重新阅读了您的问题,您也可能会问如何将该顺序分配给每一行。我注意到您的字段已命名s[]您可以命名它们$p['page_id']并相应地更新它们。

 <?
    foreach($results as $p)
    {
        echo '
            <tr>
            <td>'.$p['page_title'].'</td>
            <td><input type="text" size="2" id="'.$p['page_id'].'" name="s['.$p['page_id'].']" value="'.$p['menu_order'].'"></td>
        </tr>';
    }
    ?>

进而

foreach($_POST['s'] as $key => $value) {
    // Update each $key with $value
    // Where $key is the ID and $value is the order
}
于 2012-06-22T07:02:32.650 回答