2012-02-19 6 views
-2

장바구니의 양식 요소를 수집해야합니다. 항목은 배수입니다. 세션이나 사용하기 쉬운 배열로 수집하고 싶습니다. 배열이 가장 좋을 것 같습니까?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가 두 번 이상 호출되면?

+1

업데이트를보고 답변을 추가했습니다. 그것을 확인하고 더 이상의 질문이 있으면 의견을 남기십시오. – Tom

+0

그럴 수 없습니다. 동일한 이름에 대해 하나의 값만 제출됩니다. 답을 읽으십시오. 데이터를 배열로 제출하는 방법을 알려줍니다. – SimonMayer

답변

0

당신이 당신의 입력 이름

<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 . '" /> 

에 사각 괄호를 추가 할 경우 다음 수집하고 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를 추가 할 수 있습니다. items together – 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"]

될 것

편집 : 사용 $_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++; 

    } 

처럼 보일 수 있습니다 내 머리의 상단이를했다하지만 난 당신의 문제를 볼 때 마음에 오는거야.

1

나중에 처리 할 항목을 수집하기 만하면되는 또 다른 방법은 모든 POST 변수를 반복하는 것입니다. PHP는 예약 변수 $ _POST에 제출 된 모든 정보를 수집합니다.

거기에서 foreach를 사용하여 다음과 같이 수집 된 정보를 반복 할 수 있습니다.

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

여기서 $ key는 귀하의 someitem_ 및 $ value에 제출 된 실제 값을 포함합니다.

장바구니 품목 이외의 다른 양식을 양식에 입력하지 않았다면 더 쉽게 작업 할 수 있습니다. 그렇지 않은 경우 장바구니와 관련된 레코드가 무엇인지 결정하기 위해 어떤 논리를 사용해야 할 것입니다 항목.

3 개의 관련 입력 값을 정의한 문자 (예 : <item>|<name>|<url>)로 분리 한 값을 1로 결합 할 수 있다면 얻는 것이 더 쉬울 수도 있습니다. id와 관련된 모든 3 개의 값.

이 경우 코드는 특정 ID에 대한 문자열 값을 가져오고 '|'에 split()을 수행합니다. 그것을 다시 3 가지 값으로 나눌 수 있습니다.

+0

답변과 메모를 잘 읽고 높이 평가했습니다. – TheBlackBenzKid

관련 문제