根据 PHP 数组值更改表单操作参数
Change form action parameter based on PHP array value
我正在尝试在 PHP 中创建一个表单,提交后,action= 中的 URL 会根据所选选项进行更改。
代码如下:
$myArray = array(
'389'=>'Value 1',
'533'=>'Value 2'
);
echo'<form action="https://example.com/value.php?time=today&value[]='.$num.'" method="post">';
echo'<select name="value">';
foreach($myArray as $num=>$value){
echo'<option value="'.$num.'">'.$value.'</option>';
}
echo'</select>';
echo'<input type="submit" value="Submit">';
echo'</form>';
我认为它不起作用,因为 PHP 代码是在选择值之前生成的。不确定我是否需要在其中实现一些 jQuery 或 Javascript。
如有任何帮助,我们将不胜感激。
干杯
要更改 action
表单属性的值,您必须使用 javascript。
但是,如果提供的示例是真实的,您可以简单地将表单方法更改为 GET
:
echo'<form action="https://example.com/value.php" method="get">';
echo'<input type="hidden" name="time" value="today">';
echo'<select name="value">';
foreach($myArray as $num=>$value){
echo'<option value="'.$num.'">'.$value.'</option>';
}
echo'</select>';
echo'<input type="submit" value="Submit">';
echo'</form>';
如果您让表格 post 自然,您可以从 select 下拉列表中获取您需要的信息。您可能需要将您的 select dropname 命名为 name="somethingBetter"。请查看 $_POST 和 $_GET 以更好地理解这一点。在你的 PHP 代码中,使用 var_dump() 输出 $_POST and/or $_GET 看看我的意思。
如果您想要更复杂的解决方案。使用 jQuery .ajax 可以完全控制表单 post 的位置。对于您的问题,这可能有点矫枉过正。
正如您正确指出的那样,您必须使用一些客户端语言,例如 JavaScript 和 jQuery。下面是一个简单的示例,说明如何通过选择一个选项来修改表单的操作属性:
$('#actionSelect').change(function() {
$form = $('#form');
console.log(this.value);
switch (this.value) {
case "1":
$form.attr("action", "page1.php");
break;
case "2":
$form.attr("action", "page2.php");
break;
case "3":
$form.attr("action", "page3.php");
break;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="actionSelect">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
<form id="form" action="page1.php">
<input type="text" name="textInput" />
</form>
感谢大家的意见和建议。我决定走一些 javascript.
的路线
<script>
window.onload = function(){
var sel = document.getElementById('report');
sel.onchange = function () {
document.getElementById("abc").href = "https://example.com/value.php?time=today&value[]=" + this.value + "&date=today";
}
};
</script>
我正在尝试在 PHP 中创建一个表单,提交后,action= 中的 URL 会根据所选选项进行更改。 代码如下:
$myArray = array(
'389'=>'Value 1',
'533'=>'Value 2'
);
echo'<form action="https://example.com/value.php?time=today&value[]='.$num.'" method="post">';
echo'<select name="value">';
foreach($myArray as $num=>$value){
echo'<option value="'.$num.'">'.$value.'</option>';
}
echo'</select>';
echo'<input type="submit" value="Submit">';
echo'</form>';
我认为它不起作用,因为 PHP 代码是在选择值之前生成的。不确定我是否需要在其中实现一些 jQuery 或 Javascript。
如有任何帮助,我们将不胜感激。
干杯
要更改 action
表单属性的值,您必须使用 javascript。
但是,如果提供的示例是真实的,您可以简单地将表单方法更改为 GET
:
echo'<form action="https://example.com/value.php" method="get">';
echo'<input type="hidden" name="time" value="today">';
echo'<select name="value">';
foreach($myArray as $num=>$value){
echo'<option value="'.$num.'">'.$value.'</option>';
}
echo'</select>';
echo'<input type="submit" value="Submit">';
echo'</form>';
如果您让表格 post 自然,您可以从 select 下拉列表中获取您需要的信息。您可能需要将您的 select dropname 命名为 name="somethingBetter"。请查看 $_POST 和 $_GET 以更好地理解这一点。在你的 PHP 代码中,使用 var_dump() 输出 $_POST and/or $_GET 看看我的意思。
如果您想要更复杂的解决方案。使用 jQuery .ajax 可以完全控制表单 post 的位置。对于您的问题,这可能有点矫枉过正。
正如您正确指出的那样,您必须使用一些客户端语言,例如 JavaScript 和 jQuery。下面是一个简单的示例,说明如何通过选择一个选项来修改表单的操作属性:
$('#actionSelect').change(function() {
$form = $('#form');
console.log(this.value);
switch (this.value) {
case "1":
$form.attr("action", "page1.php");
break;
case "2":
$form.attr("action", "page2.php");
break;
case "3":
$form.attr("action", "page3.php");
break;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="actionSelect">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
<form id="form" action="page1.php">
<input type="text" name="textInput" />
</form>
感谢大家的意见和建议。我决定走一些 javascript.
的路线<script>
window.onload = function(){
var sel = document.getElementById('report');
sel.onchange = function () {
document.getElementById("abc").href = "https://example.com/value.php?time=today&value[]=" + this.value + "&date=today";
}
};
</script>