2012-02-19 18 views
-2

カートのフォーム要素を収集する必要があります。項目は倍数です。私はそれらをセッションとして、または使いやすいArrayとして収集したいと思います - 私はArrayが一番良いと思いますか?PHP複数の項目でフォーム変数を取得するにはどうすればよいですか?

この情報をprocess.phpでどのように収集できますか?

私はそれを明確にしたいと思います。

コードは、各項目について、このようなものです:

<div class="product" id="pId_2"> 
<input type="hidden" name="productID" value="2" /> 
<input type="hidden" name="productURL" value="site.com" /> 
<input type="hidden" name="productQty" value="1" /> 
<input type="hidden" name="productPrice" value="750" /> 
</div> 
<div class="product" id="pId_45"> 
<input type="hidden" name="productID" value="45" /> 
<input type="hidden" name="productURL" value="example.co.uk" /> 
<input type="hidden" name="productQty" value="2" /> 
<input type="hidden" name="productPrice" value="100" /> 
</div> 

これらの詳細は、フォームに提出されている..しかし、私はどのように収集することができます:

<div class="product" id="pId_'.$id.'"> 

<input type="hidden" name="productID" value="'.$id.'" /> 
<input type="hidden" name="productURL" value="'.$url.'" /> 
<input type="hidden" name="productQty" value="'.$qty.'" /> 
<input type="hidden" name="productPrice" value="'.$price.'" /> 

</div> 

ので使用カートを持っている可能性がありproductIDが2回以上呼び出されたとき?

+1

アップデートを見て、回答を追加しました。さらなる質問がある場合はそれを調べてコメントを残してください – Tom

+0

あなたはそれを行うことはできません。同じ名前の場合、1つの値だけが送信されます。答えを読む。彼らは配列としてデータを提出する方法を教えてくれます。 – SimonMayer

答えて

0

あなたは、あなたのprocess.phpファイルに次のPHPコードを追加することにより、

foreach ($_POST['productID'] as $key => $getid) { 
    $getqty = $_POST['productQty'][$key]; 
    $getprice = $_POST['productPrice'][$key]; 
    $geturl = $_POST['productURL'][$key]; 

    // Example MySQL Query 
    mysql_query("INSERT INTO orders (id, url, quantity, price) VALUES ('" . $getid . "', '" . $geturl . "', '" . $getqty . "', '" . $getprice . "')"); 
} 
をすべてのフォームのデータを収集し、使用することができます

これは、上記のPHPコードを使用して、$key変数を使用してインデックス番号を使用して各行から正しいデータを収集できるように、フォームデータ用の配列を自動的に作成することです。

+0

これは、例えば40,50の項目では速いでしょうか?それはミニタイプのカートです。ステッカー、小ガーリーアクセサリーなど、カートは常に大きくなります。 – TheBlackBenzKid

+1

@ TheBlackBenzKid - できるだけ早く。あなたは何らかの方法でアイテムをループする必要があります。そして、私が知っている限り、これを行うのが最良の方法です。すべての挿入にはミリ秒かかるので、40個の項目でもかなり高速になります:) – Tom

+1

@TheBlackBenzKid - カートのシステムにどれだけの距離があるのか​​はわかりませんが、すべてを保持するためにcartIDを追加することもできます一緒に項目を – Tom

-2
<form action="process.php" method="post"> 
These elements are looped pending on cart items 
<input type="hidden" name="someitem['.$id.']" value="1" size="1" maxlength="1" /> 
<input type="hidden" name="somename['.$id.']" value="1" size="1" maxlength="1" /> 
<input type="hidden" name="someurl['.$id.']" value="1" size="1" maxlength="1" /> 
</form> 
+1

あなたは答えを読んでいない、または理解していない可能性が高いです。 –

+0

本当に、あなたはループを使用してprocess.phpの例を示していたかもしれませんが、あなたが "meh"と言うように – TheBlackBenzKid

+0

できます。もし私が丁重に*求められたら。 –

-1

私があなたに求めていることは完全にはわかりません。しかし、array$_POSTから検索するには、フィールド名に[]を付ける必要があります。

<input type="hidden" name="someitem[]" value="1" size="1" maxlength="1" /> 

そしてPHP $_GET["someitem"]に配列

EDIT次のようになります:使用$_POST["someitem"]

<input name="myArray[1]" value="foo" /> 
<input name="myArray[37]" value="bar" /> 

はあなたの使用を

array(
    1 => 'foo', 
    37 => 'bar' 
) 
+0

なぜ私は低下したのですか? – Vitamin

-2

を与えるだろう。私は質問のタイトルのためにあなたがGETを必要とすると仮定しました。

0

あなたのprocess.phpフォームは、投稿データをプルするときに配列に格納することができます。適切な量​​の項目をループできるように、$ idの最大値を値として渡す必要があります。

あなたprocess.phpのトップが

<?php 

    $processArray = array(); 
    $id = $_POST["id"]; 
    $i = 0; 

    while ($i <= $id) { 

    $processArray = ('item' => $_POST["someitem"_.$i], 'name' => $_POST["somename"_.$i], 'url' => $_POST["someurl"_.$i]): 

    //Now you can do what you want with each value. Display it somewhere, store it somewhere, etc. 

$i++; 

    } 

のようになります。私は私の頭の上にこれをオフにしなかったが、それは、私はあなたの問題を見たときに頭に浮かぶものです。あなたが入力名

<input type="hidden" name="productID[]" value="' . $id . '" /> 
<input type="hidden" name="productURL[]" value="' . $url . '" /> 
<input type="hidden" name="productQty[]" value="' . $qty . '" /> 
<input type="hidden" name="productPrice[]" value="' . $price . '" /> 

に角括弧を追加した場合

1

後で処理するためにアイテムを収集する必要がある場合は、すべてのPOST変数をループする別の方法があります。 PHPは予約済みの変数$ _POSTに提出されたすべての情報を収集します。

ここから、foreachを使用して、以下のように収集された情報をループすることができます。

foreach ($_POST as $key => $value) 
{ 
    echo "$key = $value"; 
} 

ここで、$ keyはあなたのsomeitem_と$ valueには実際に送信された値が入ります。

ショッピングカートのアイテム以外のフォームに他の入力がない場合は、これは簡単に実行できます。カートに関連付けられているレコードがどれかを判断するロジックが必要な場合は、アイテム。

3つの関連する入力値を1つの値に結合し、値を定義した文字で区切った場合(おそらく<item>|<name>|<url>のようなもの)、取得しようとすると簡単になりますidに関連付けられた3つの値すべて。

この場合、コードは特定のIDの文字列値を取得し、 '|'それを3つの値に分解してください。

+0

あなたの答えと注意を丁寧にしていただきありがとうございます。 – TheBlackBenzKid

関連する問題