2016-05-30 25 views
-2

我嘗試使用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; 
} 
?> 

有人幫我解決我的代碼或提供更好的解決方案...

+0

小姐使用頭...,使用鏈接點擊和去更好。 –

回答

-1

像這樣做:

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

if ($option =='sent') { 
    header('location:checkout.php?id=$userId&productIds[]=' . implode('&productIds[]=', $codereg)); 
} 
0
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的長度是有限的。所以計數productIds是有限的。

您可以使用$_SESSION而不是$_GET來存儲productIds。

$_SESSION["productIds"] = $ids; 
+0

如果有100個id,該怎麼辦? Implode是一個不錯的選擇。在URL上你可以傳遞很多字符。我希望你很瞭解 – Nehal

+0

@ Ms.Nehal如果有很多ID,作者應該使用'$ _SESSION'而不是'$ _GET'。我只提出了一個選項,如何避免循環和傳遞幾個ID。是的,'$ _SESSION'對於checkout.php會更好。 – jekaby

+0

這就是我想說的。在答案中提到所有選項。其他用戶可以降低您的答案,因爲不好的選擇。 – Nehal