【问题标题】:How to Send Loop value to another page? [duplicate]如何将循环值发送到另一个页面? [复制]
【发布时间】:2016-05-30 07:53:50
【问题描述】:

我尝试使用 url 和 GET 将循环变量发送到另一个页面。但 $_GET 只打印最后一个值。

这是我现在的代码

 ...
 //example
 $codereg[0] = 6;
 $codereg[1] = 2;
 $codereg[2] = 67;

if ($option =='sent')
{

   foreach($codereg as $ids) 
   {
   header("location:checkout.php?id=$userId&productIds[]=$ids");
   }

}

这是我的 checkout.php

 <?php
 $userId= $_GET['id'];
 $code= $_GET['productIds'];

 foreach($code as $test)
 {
 echo $test;
 }
 ?>

有人帮我修复我的代码或提供更好的解决方案...

【问题讨论】:

  • 不使用标题...,使用链接点击去更好。

标签: php foreach get


【解决方案1】:
foreach($codereg as $ids) 
{
    header("location:checkout.php?id=$userId&productIds[]=$ids");
}

您应该只有一个标题位置。它不能在循环中。

你可以这样做使用分隔符逗号:

header("location:checkout.php?id=$userId&productIds=".implode(',', $ids));

还有你的处理程序checkout.php

$userId= $_GET['id'];
$ids = explode(',', $_GET['productIds']);
var_dump($ids);

使用$_GET 不是产品结帐的好主意。 $_GET 可以轻松修改,url 长度有限。所以count productIds是有限的。

您可以使用$_SESSION 代替$_GET 来存储productIds。

$_SESSION["productIds"] = $ids;

【讨论】:

  • 如果有 100 个 id 怎么办?内爆是一个糟糕的选择。在 URL 上,您可以传递那么多字符。我希望你很清楚
  • @Ms.Nehal 如果有很多 id,作者应该使用$_SESSION 而不是$_GET。我只建议了一个选项如何避免循环并传递多个 ID。是的,$_SESSION 对于 checkout.php 会更好。
  • 这就是我想说的。在您的答案中提及所有选项。其他用户可能会对您的答案投反对票。
  • @Ms.Nehal 感谢您的建议。
【解决方案2】:

这样做:

$codereg[0] = 6;
$codereg[1] = 2;
$codereg[2] = 67;

if ($option =='sent') {
   header('location:checkout.php?id=$userId&productIds[]=' . implode('&productIds[]=', $codereg));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多