我试图通过url将表和数据库变量传递到新页面,这样我就可以使用$_GET
动态查询指定的数据库和表。我尝试使用带有JavaScript的window.onload
保存变量并将其附加到页面,但error_log
说Undefined 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
时,变量会附加到网址,但页面会不断刷新。
答案 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'];
?>