使用表单提交操作传递$ _GET变量

时间:2015-03-18 09:29:57

标签: javascript php html mysql forms

我试图通过url将表和数据库变量传递到新页面,这样我就可以使用$_GET动态查询指定的数据库和表。我尝试使用带有JavaScript的window.onload保存变量并将其附加到页面,但error_logUndefined index: db & tbl,我认为这意味着变量未正确传递。

因此我问我是否可以使用提交表单操作而不是使用JavaScript来传递这些变量?或者我如何修复脚本以正确传入变量?

我的表格

    <form method="post" action="db_search.php">
        Search : <input type="text" name="name" id="name" autocomplete="off"
            value="<?php echo $val;?>"> <input type="submit" name="submit"
            id="submit" value="Search">
    </form>

db_search.php中的脚本

function pageSet () {
    var yourTbl = window.sessionStorage.getItem("tbl");
    var yourDB = window.sessionStorage.getItem("db");
    window.location.href ='db_search.php?db=' + yourDB + '&tbl=' + yourTbl ;
};
window.onload=pageSet();

加载db_search.php时,变量会附加到网址,但页面会不断刷新。

3 个答案:

答案 0 :(得分:2)

您可以调整PHP以使用$_REQUEST并按如下方式调整表单:

<form method="post" action="db_search.php">
    <input type="hidden" name="db" value="<?php echo $_REQUEST['db'] ?>" />
    <input type="hidden" name="tbl" value="<?php echo $_REQUEST['tbl'] ?>" />
    Search : <input type="text" name="name" id="name" autocomplete="off"
        value="<?php echo $val;?>"> <input type="submit" name="submit"
        id="submit" value="Search">
</form>

这会将$_GET参数添加为$_POST个参数。您的脚本将匹配$_REQUEST个参数,因此将使用{db'的$_POST$_GET个出现。 $_POST优先于$_GET中的$_REQUEST

使其具体化:

//You now match db like:
$db = $_GET['db'];

// Change that to
$db = $_REQUEST['db'];

这种方式无论db是通过GET还是POST发送的,都会被填充

答案 1 :(得分:0)

试试这个;

<form method="get" action="db_search.php">

答案 2 :(得分:0)

您可以使用$ _POST变量。

或许您应该考虑将这些变量服务器端存储在PHP会话中。

<?php
    session_start();
    $_SESSION['tbl'] = $_POST['tbl'];
    $_SESSION['db'] = $_POST['db'];
?>

然后再把它们拿出来

<?php
    session_start();
    $table = $_SESSION['tbl'];
    $db = $_SESSION['db'];
?>