创建一个刷新页面并允许用户编辑数据库的特定部分的下拉列表

时间:2011-06-04 18:46:55

标签: php html forms select

我理解标题可能有点模糊,但希望我能在这里解释一下。

我们有一个页面,用户可以修改数据库的某些字段。正在修改的字段随着页面顶部下拉列表的选择而变化。

假设我们的这个表的名称为restaurants

 -----------------------------------------------------------
| id | name       | items                                   |
-------------------------------------------------------------
|  1 | fryking    | burger, fries, shake                    |
|  2 | burgertown | nuggets, chicken sandwich               |
 -----------------------------------------------------------

加载后,页面应如下所示:

[ CHOOSE RESTAURANT ] [v]


ITEMS:

选择“fryking”后,用户可以:查看fryking的项目,添加新项目,删除不需要的项目。

[ fryking           ] [v]


ITEMS:

[  (txtbox)   ]     [ADD ITEM]

1. burger           [DELETE]
2. fries            [DELETE]
3. shake            [DELETE]

一旦选择了餐厅,用户应该能够添加,删除等,而不会将下拉列表恢复为“SELECT RESTAURANT”并强制他们再次选择它。

现在,我们可以在选择餐厅时显示相应的信息,但在处理“添加”或“删除”后没有选择餐厅。

抱歉,我无法解释这个问题。我知道这已经在其他网站上完成了1000次,所以有人必须了解我在寻找什么。

如果我能说清楚的话,请告诉我。

非常感谢,

Justian Meyer

编辑:

以下是处理删除的方式(各自以不同的形式)。

$page = str_replace('%7E', '~', $_SERVER['REQUEST_URI']);    

...

<form method="post" action="'.$page.'">
    <input type="hidden" name="item_id" value="'.$i.'"> // $i refers to the value from the loop
    <input type="submit" name="delete_item" value="Delete">
</form>

我可以做些什么来将每个按钮压缩成一个表单并仍然正确处理它们?

4 个答案:

答案 0 :(得分:1)

我不知道你使用什么技术,但在asp.net mvc我会做这样的事情

执行httppost时,我会保存会话中所选下拉项的值(或id或其他)(甚至是控制器中的变量),并在发布后将其返回给视图并设置该会话或模型信息为默认值。

你能说出你正在使用什么技术吗?

答案 1 :(得分:1)

JavaScript的: - 在onload事件中设置下拉列表的值。

PHP: - 通过说出

之类的内容来设置所选标签
<?

if ($_POST)
{

    $ddlRestaurantPersistValue = $_POST['ddlRestaurant'];
}

?>

,HTML将是

<select id="ddlRestaurant" name="ddlRestaurant">
    // build the options here if you are doing a database while loop
    // check to see if the option value == $ddlRestaurantPersistValue and then add
    // selected='selected' to the attributes of the option
</select>

答案 2 :(得分:0)

我不会悄悄得到你的意思。

  

一旦选择了餐厅,用户应该能够添加,删除等,而不会将下拉列表恢复为“SELECT RESTAURANT”并强制他们再次选择它。

考虑到我不明白为什么SELECT RESTAURANT卷土重来,为什么不用javascript代码选择你想要的东西呢?

您可以绑定onchange侦听器

答案 3 :(得分:0)

嗯,我认为这样的事情最好通过AJAX调用处理,但我不建议你重新编写页面来解决一个问题。

您必须告诉您的表单处理器当前餐厅是什么,因此可以在保存后正确设置。假设您在页面上有很多表单是有充分理由的,那么您将不得不将其填入并在每个表单中添加隐藏的restaurant输入。当用户更改餐厅值(通过javascript)时更新它们,并在保存后构建页面时重置餐厅。