1

是否可以通过 PHP 函数打开另一个传递 $array 的 PHP 文件(print_array.php)?

HTML:

<form method=post>
<input type="checkbox" name="array[]" value="111">
<input type="checkbox" name="array[]" value="222">
<input type="checkbox" name="array[]" value="333">
<button type="submit" name="action" value="print">Print</button>
<button type="submit" name="action" value="delete">Delete</button>
<button type="submit" name="action" value="add">Add New</button>
</form>

array[] 全部被检查,因此,$array 的值为 111、222 和 333。

然后,PHP函数:

switch ($action) {
  case 'print': printing($_post['array']); break; /* open new window */
  case 'add': break; /* same window */
  case 'delete': break; /* same window */
  default: break;
}

function printing($array) {
  /* open print_array.php in a new window showing $array value */
}

然后,仅当 action=print 时,在具有 $array 值的新窗口中打开 print_array.php。

if (is_array($array)) {
  print_r($array);
} else {
  ...
}

print_array.php 中的结果将是

Array ( [0] => 111 [1] => 222 [2] => 333 )

我不认为header("Location: print_array.php")可以传递数组值。有什么好方法可以在传递数组值的新窗口中打开另一个 PHP 页面吗?

4

3 回答 3

1

要使用 Javascript 打开窗口,请在页面加载时使用 window.open()。

要将数据获取到新页面,请使用 _SESSION 变量。当您使用 swtich 访问脚本时,请使用:

start_session(); 
$_SESSION['data'] = $_POST['array'];

在新窗口上(使用 header() 访问它之后,使用:

start_session();
$array = $_SESSION['data'];

您将可以在新窗口中访问整个阵列。

于 2012-07-23T15:49:32.683 回答
0

请记住,PHP 不会打开窗口等。您要执行的操作听起来需要在 HTML 和/或 javascript 中实现。

于 2012-07-23T15:49:30.217 回答
0

最好的方法是使用 javascript:

Firs 声明您的复选框以在单击时调用 javascript 函数:

<input type="checkbox" name="array[]" onclick="myfunction(111)" value="111">

然后在您的页面中包含以下内容:

 <script type="text/javascript">
      function myfunction(number) {
          if (number == 111) {
              location.href="mypage.html";
          }
      }
 </script>

如果您严格想使用 PHP,也可以为此使用$_POST$_GET 。

在服务器端,你可以做switch($_GET['array'])你的事情。这样,您必须将表单声明更改为

<form method=post action="<?php echo $_SERVER['PHP_SELF']; ?>">

或者

<form method=post action="<?php echo $_SERVER['PHP_SELF']; ?>">
于 2012-07-23T16:03:31.307 回答