0

您好,到目前为止,我一直在尝试使用这行代码,我的目标是通过 select 重新加载页面,然后 select 获取该值,以便页面将使用所述值重新加载,以便我可以检索它。这两个都是 1 形式。这是我应该在重新加载后使用我的值的地方。

    <input type="hidden" name="student_id" class="typed" readonly="readonly" value="<?php echo @$get_display->student_id;?>">

这就是我试图用来重新加载页面以获取上述值的方法。

    <select name="lvl" onchange="window.location='search_enroll.php?id='$_GET['student_id']">

感谢您提供任何帮助。

这就是我检索的方式我在上一条语句中遇到问题,假设在重新加载后检索值。

   if (!empty($_POST['searchstudent'])){
                $id = $_POST['searchstudent'];

            }else if(!empty($_GET['id'])){
                $id = $_GET['id'];
            }
            else {
                $id= $_GET['student_id'];
            }
4

3 回答 3

1

当你写

<select name="lvl" onchange="window.location='search_enroll.php?id='$_GET['student_id']">

您实际上导航到将您带到该页面的同一个 student_id。

您想要做的是询问“用户选择了哪个 student_id?” 并在下一页加载中使用它。

HTML 应该类似于

<form action="search_enroll.php">
    <select name="id" onchange="submit()">
       <option> student_id_1 </option>
       <option> student_id_2 </option>
        ...
    </select>
</form>

让我知道是否有任何问题。

这是一个JSFiddle来模拟重新加载。(它会显示 404,因为 'search_enroll.php' 不存在,但您仍然可以看到重新加载有效。)

编辑:在我解释了此选择的目的后添加“隐藏”输入字段

如果您有 2 个字段( student_id ,grade ),您应该在表单中添加一个隐藏的输入字段。表单应如下所示:

<form action="search_enroll.php">
        <input value="<?php echo $_GET['student_id']?>" type="hidden"/>
        <select name="grade" onchange="submit()">
           <option> student_id_1 </option>
           <option> student_id_2 </option>
            ...
        </select>
</form>

这将确保用户之前选择的 student_id 将传递给另一个重新加载。

于 2012-08-20T15:23:39.697 回答
0

如果您在表单中,则只需提交更改表单即可:

onchange="document.yourForm.submit()"

所有参数都可用于您的 PHP 脚本。

于 2012-08-20T15:18:55.143 回答
0

您不想在select元素中使用 PHP,因为它是在生成页面(服务器响应)时填充的,但您要做的是在请求发送到服务器时填充它。

最简单的方法是使用onchange="document.aForm.submit()". 您的服务器端验证需要能够理解这是部分提交,并且不应向用户显示错误消息。


针对发帖人的问题:

您有以下事件链:

  1. 客户请求表单页面。
  2. 服务器发送响应,select元素填充option元素。
  3. 客户端选择option元素的一个select元素。
  4. 客户端向服务器发送请求,包括option选定的(以某种方式)。
  5. 服务器发送响应,更改了一些表单元素,并option预先选择了客户端在上次请求中选择的元素。

服务器无法在第 1 步预填充元素的onchange属性select(并且不应该在第 5 步,因为客户端可能会更改他们的选择);服务器不知道客户端将选择哪个选项,直到客户端在步骤 3 中选择并在步骤 4 中将该选项发送到服务器。

我和其他人建议submit()不要的原因window.location是,对于表单,客户可以按任何顺序填写字段,或者您以后可以在 之前添加字段select,在这种情况下,最好保留这些选择。如果 PHP在生成表单时submit从对象中获取所有字段,则保留这些。POST如果window.location使用,则GET请求中未包含的所有内容都将丢失。

如果您确实想使用window.location,则必须使用 JavaScript 来获取所选option路径的值(类似于?id=document.aForm.selectElement.options[document.aForm.selectElement.selectedIndex])。

于 2012-08-20T15:21:21.323 回答