2016-05-30 2 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"); 
    } 

} 

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

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

は、いくつかのいずれかが、私は私のコードを修正するか、よりよい解決策を与えるのを助ける。この私のcheckout.php ...

+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"); 
} 

ヘッダーの位置は1つだけにしてください。それはループ内にあることはできません。

あなたは、この使用して、区切りカンマのように行うことができます。

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

そして、あなたのハンドラcheckout.phpを:

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

使用$_GETは、製品のチェックアウトのための良いアイデアではありません。 $_GETは簡単に変更でき、URLの長さには制限があります。そのため、カウント数は限られています。

$_GETの代わりに$_SESSIONを使用して、productIdsを保存することができます。

+0

IDが100個の場合はどうなりますか? Implodeはそのための悪い選択肢です。 URLでは、その多くの文字を渡すことができます。私はあなたが非常によく知っていることを願っています – Nehal

+0

@ Ms.Nehal多くのIDがある場合、著者は '$ _SETSION'を' $ _GET'の代わりに使うべきです。ループを避け、いくつかのIDを渡す方法を提案しました。そしてyes、 '$ _SESSION'はcheckout.phpの方が良いでしょう。 – jekaby

+0

これは私が言っていることです。あなたの答えのすべてのオプションを挙げてください。それ以外のユーザーは、悪いオプションのためにあなたの答えを下降させることができます。 – Nehal

関連する問題