注文商品を注文し、そのURLを介して一意のIDをprocess.phpページに渡すオンラインショッピングカートを使用しています。だから、URLは、注文した各項目ごとに生成される
process.php?code_1=231&code_2=532&code_3=342
別code_x=xxx
ようになります。 process.phpページで、配列数を知らずにcode_x
の値を取得する配列を作成するにはどうすればよいですか?
注文商品を注文し、そのURLを介して一意のIDをprocess.phpページに渡すオンラインショッピングカートを使用しています。だから、URLは、注文した各項目ごとに生成される
process.php?code_1=231&code_2=532&code_3=342
別code_x=xxx
ようになります。 process.phpページで、配列数を知らずにcode_x
の値を取得する配列を作成するにはどうすればよいですか?
この問題は、フォーム内の要素の名前をcode[]
に変更すると、はるかに良く解決されます。あなたは今、あなたはこれをやった後
<input type="text" name="code[]" ... />
<input type="text" name="code[]" ... />
<input type="text" name="code[]" ... />
にそれを変更します、$_GET['code']
は、テキストボックスからすべての値を含む配列になりますのは、
<input type="text" name="code_1" ... />
<input type="text" name="code_2" ... />
<input type="text" name="code_3" ... />
を言わせているたとえば
、その項目として。
更新:
あなたが入ってくるパラメータの名前を制御できない場合は、手動で解析する必要があります。私はそれをどうするのですか?
// Sample data
$get = array('code_1' => 'foo', 'code_2' => 'bar', 'code_X' => 'X', 'asdf' => 'X');
$codes = array();
foreach($get as $k => $v) {
// Reject items not starting with prefix
if (substr($k, 0, 5) != 'code_') {
continue;
}
// Reject items like code_X where X is not all digits
$k = substr($k, 5);
if (!ctype_digit($k)) {
continue;
}
$codes[$k] = $v;
}
print_r($codes);
Jon suggestedのような配列を使用する方がはるかに良いでしょう。
これにはget
を使用しない方がクリーンです。しかしむしろpost
。
しかし、あなたが本当にあなたができるこのルートを移動する場合:しかし、再び
foreach($_GET as $name=>$value) {
if (strpos($name, 'code_') !== 0) continue;
// here are the names and values of the items
}
:私はそれをお勧めしません。
は同意する、お勧めしない –
私は同意します、私はjcartを使用しており、コード自体に大きな変更を加えることはありません - それを得るための最も速い方法のようです。ウェブサイトが社内の従業員だけに閉じられているので、私はすぐに安全なものは必要ありません。私はあなたのアドバイスを取って、最終的にカートを再コーディングし、データを投稿します。 – Fleppar
あなたのコードは "code_test"のようにも一致します。したがって、正確なフィルタリングを得るには、 "^ code_ [1-9] $"のような正規表現を使用する方が良いでしょう。 –
print_r($_GET);
foreach($_GET as $key=>$val)
{
echo '<br />';
echo $key.' : '.$val;
}
あなたは$ _GETを繰り返して名前を探す必要があります。
foreach(!empty($_GET as $name=>$value)) {
// Check for match names for your
if (preg_match('/^code_[1-9]$/', $name)) {
// Do whatever with values
}
}
'ereg'はPHP 5.3.0以降で廃止されました。代わりに 'preg_match'を使用してください。 – Jon
@ジョンありがとう、私はポストを更新しました。 –
私は同意します。私が「カート」を自分で作成した場合は、これでやりました。 $ _GET ['code']ではなく、データを投稿しました。私はすぐに何かを得る必要があり、そこからそれを改善する必要があります。助けてくれてありがとう! – Fleppar
@Fleppar:私はこの状況のための選択肢を追加しました。 – Jon
このアップデートでは、あなたが何をすべきかを説明し、他のオプションがない場合にはそれを行う方法を説明したので、正しい答えとしてお答えします。助けてくれてありがとう。 – Fleppar