根据 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>';

如果您让表单自然发布,则可以从选择下拉列表中获取所需的信息。您可能需要将您选择的 dropname 命名为="somethingBetter"。请查看 _POST 美元和 _GET 美元以更好地了解这一点。在你的PHP代码中,使用var_dump()输出$_POST和/或$_GET来理解我的意思。

如果您想要更复杂的解决方案。使用 jQuery .ajax 完全控制表单的发布位置。对于您的问题来说,这可能是矫枉过正。

正如你正确指出的那样,你必须使用一些客户端语言,如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>