我有来自数据库的动态行。每行都有一个订单字段。我希望用户能够通过在每行旁边的文本框中输入订单来更改订单,当用户点击保存时,每一行都将使用新订单进行更新。
我的问题是我写这段代码的时候:
<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] =&gt; 2 1 =&gt; 3 [2] =&gt; 1)
但是,我不知道我要更新的页面!!
答案 0 :(得分: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
}