提交表格后保留一些选定的选项

时间:2014-03-29 10:28:01

标签: php mysql forms

提前感谢您对以下内容的任何建议:

我创建了一个php页面,用于将作曲家的作品添加到数据库中的CD中。它是两种形式的组合,如下所示:

  

第一种形式:

     

作曲家:[下拉列表]:选择

一些空白

  

第二种形式:

     

标题:[下拉列表]

     

曲目编号:[空varchar字段]

     

工作:[下拉列表]

     

其他一些领域

处理按钮

在第一个区块中选择一个名字(发布到$_SERVER["PHP_SELF"])后,我停留在同一页面上,该名称显示在两者之间的空白处,下拉列表中只填充了CD标题和作品选定的作曲家。

然后,我可以从列表中进行选择,并在其他字段中输入其他数据。点击进程按钮将数据从第二个块发布到另一个页面,最终将所有内容发送到MySQL数据库中的表。

之后我将自己发回header("Location: the_first_page.php")

的第一页

到目前为止一直很好,但回来后我想要预选作曲家,头衔和作品。现在我被发送到一个空白页面,必须从头开始。我想我已经看到一些解决方案涉及在下拉列表中对$_POST['something']进行<option value>测试,但我似乎无法做到这一点。

我的问题是:有没有办法以某种方式将$_POST['Title']$_POST['Work']发回第一页?或者,将这两种形式分开到单独的页面上会更好吗?

欢迎所有帮助。

2 个答案:

答案 0 :(得分:0)

使用会话变量并为它们设置条件...参见[$ _SESSION]。

答案 1 :(得分:0)

您可以使用会话或发布数据本身。对于使用发布数据本身,发送请求的页面应该相同,并包含将处理它的脚本,如果有这样的数据:

if (!empty($_POST)) {
  include "save.php";
  }

// More code...

?>
<select name = "a">
  <option <?php if ($_POST['a'] == "test")  echo "selected"; ?> value = "test">
  <option <?php if ($_POST['a'] == "testb") echo "selected"; ?> value = "testb">
</select>

当然还有很多方法,但这只是一个让你入门的简单方法。要了解的事项:您可能希望更改变量$ _POST并在使用之前将其清理干净。在这种情况下它应该没问题,但在<input type = "text" value = "<?= $_POST['b']; ?> name =&#34; b&#34;&gt;`你有严重的安全问题。

为了消毒输入,您希望根据您的期望对其进行消毒。但是,作为一个额外的安慰,你通常想要删除看起来像<script>onclick =""' DROP TABLE users和类似的所有东西。这不是一个容易的主题,所以我建议你阅读它,主要是XSS attacks,这与向用户显示文本有关。虽然对于这个简单的案例来说看起来似乎太多了,但它在很多情况下都很有用。