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