我觉得这是一个常见问题,但我没有找到合适的答案,所以我问你! ;)
让我们从经典 index.php 中的表单开始:
...
<form action="<?php echo BASE_URL; ?>">
<div style="color:white">Instructions</div>
<input type="number" name="param" />
<input type="hidden" name="action" value="view" />
<input type="hidden" name="controller" value="Solution" />
<input type="????" name="instance_id" value="?????" />
<input type="submit" value="Solutions Listing" id="button_solutions">
</form>
...
这里的问题是提交按钮之前的最后输入字段。用户应该在第一个非隐藏输入中输入 param ,这应该触发一个php函数,通过选择数据库来确定 instance_id 。
我想要做的是,当用户点击提交时,重定向通过
等链接BASE_URL."?controller=Solution&action=view¶m=toto&instance_id=value"
让我说我在php中选择数据库的函数叫做toto(),toto返回instance_id。 我知道如何通过表单指向带有GET参数的网址,但是 我不知道如何触发php功能。 我知道如何通过参数输入确定instance_id 但是 我不知道如何通过php函数创建一个带GET参数的重定向
请考虑任何帮助 感谢
答案 0 :(得分:1)
如果您不需要在客户端上看到instance_id,则可以创建某种重定向页面,该页面从数据库中检索instance_id。此页面可能与目标网页相同。
<form method="GET" action="<?php echo BASE_URL; ?>">
<div style="color:white">Instructions</div>
<input type="number" name="param" />
<input type="hidden" name="action" value="view" />
<input type="hidden" name="controller" value="Solution" />
<input type="submit" value="Solutions Listing" id="button_solutions">
</form>
并在你的php脚本中
// instance_id not set
if (!isset($_GET['instance_id'])) {
$args = $_GET;
$param = $args['param'];
// do something with param and save it to instance_id
$instance_id = ...
$args['instance_id'] = $instance_id;
// create get query
$query = http_build_query($args);
$url = BASE_URL . '?' . $query;
header('Location: ' . $url);
} else {
// instance_id set - do something with it
$instance_id = $_GET['instance_id'];
}
如果您不能使用此方法并且必须同时显示instance_id的结果,则用户输入参数,您必须使用ajax请求,该请求向服务器发送请求以获取instance_id。
使用JavaScript(使用jQuery)执行此操作可能如下所示:
$('input[name="param"]').on('change', function() {
$.ajax({
url: '...',
data: { param: $(this).val() },
method: 'GET'
}).done(function(data) {
$('input[name="instance_id"]').val(data);
});
});
php文件将param
作为GET值,并应从数据库返回instance_id。