2010-02-11 9 views
1
$index = 1; 
foreach($product['varieties'] as $variety){  
echo '<input style="width:10px; margin-left:9px; " name="price_' . $index . '" type="checkbox" value="' . $variety['price']. '" />'; 
echo '<input name="size_' . $index . '" type="text" value="' . $variety['size']. '" />'; $index++; 
} 

이 경우 색인 = 1이 표시되고 각 반복이 price_1, price_2 및 etc._1 및 size_1, size_2가 될 때마다 증가합니다. 이제 동적 이름 = ""입력으로 각 이름이 다를 때 cart.php에서 어떻게받을 수 있습니까?이 양식을 cart.php에서받는 방법은 무엇입니까

$price= "'..',$_POST['price_']"과 같을까요? 글쎄 어떻게 cart.php URL 에서이 이름 인덱스를받을 수 있을지 모르겠다.

Thnank you.

+0

답변을 원할 경우 질문을 다시 말해야한다고 생각합니다. – iBiryukov

답변

2

size_1과 같은 이름을 만드는 문자열 대신 size[]과 같은 이름을 사용하십시오.

그러면 PHP를 통해 배열처럼 즉시 액세스 할 수 있습니다.

0

알렉스의 대답을보세요. 상황에 더 적합합니다.

마지막으로 항목 수 ($ 인덱스 값)가있는 숨겨진 텍스트 상자를 추가 할 수 있습니다. 다시

그래서 루프 후

echo '<input name="counter" type="hidden" value="' . $index. '" />' 

추가를 읽고 당신이 그것을 읽으려고 할 때, 가장 먼저 1에서 그 값이 $POST['price_'.$loop_counter] 읽기에 다시 $POST['counter'] 다음 루프를 읽는 것 이 모든 페이지에 대해 그것을 위해 가정

$prices = preg_grep('/^price_\d+$/', $_POST); 

foreach($prices as $P) { 
    $idx = substr($p, 5); // extract the digits, which we know will be at position 5->end 

    $size = $_POST['size_' . $idx]; 
    etc.... 
} 

:

+1

한계를 추적 할 필요없이 내 방법을 선호합니다. 누군가 (악의적 인) 사람이 더 높은 숫자를 보내면 어떨까요? 확인/디버그/잘못 될 수 있습니다. – alex

+0

사실 .. 나는 PHP가 아닌 배경에서 왔습니다. 당신의 솔루션은 더 우아합니다 .. –

+1

괜찮습니다 - PHP는 웹 개발을 쉽게하기위한 약간의 트릭을 가지고 있습니다. 이것은 더 유용한 것들 중 하나입니다. – alex

0

이 같은 뭔가 값을 찾을 수 쌀 _ #, 거기에 해당하는 크기 _ #

+0

대문자와 소문자 p가 있습니다. – alex

관련 문제