문제

PayPal을 사용하여 사이트에서 지불을 처리하고 있습니다. PayPal은 포스트 배열을 반환합니다

[item_number1] =12
[item_name1] = My product name
[quantity1] =3
[item_number2] =14
[item_name2] = My product name2
[quantity2] =5
[num_cart_items] 2

여기에 단계 삽입 지금 여기에 IM은 아무데도 원하지 않습니다.

그런 다음 for 루프를 실행하십시오

for($i = 1;$i <= $num_cart_items ;$i++){
        $x = 'item_number' . $i;
        $y = 'item_name' . $i;
        $z = 'quantity' . $i;


        $new_amount = $row['stock_quantity'] - $$z;
        $db->update1_by_match('cart_products','stock_quantity',$new_amount,'id',$$x);

    }

이 변수 변수에 문제가 있습니다. 더 좋은 방법이 있습니까?

앤드류 감사합니다

도움이 되었습니까?

해결책

나는 당신의 수정 된 코드를 $ _post를 직접 사용하도록 변경합니다.

for($i = 1;$i <= $_POST['num_cart_items'] ;$i++){

   $item_number= intval($_POST['item_number' . $i]);
   $item_quantity= intval($_POST['quantity' . $i]);

   printf("DEBUG: item %d item:%d quantity:%d<br>", $i, $item_number, $item_quantity);

   $new_amount = $row['stock_quantity'] - $item_quantity;
   $db->update1_by_match('cart_products','stock_quantity',$new_amount,'id', $item_number);

}

진단 출력은 일이 어디로 가고 있는지를 정제하는 데 도움이됩니다.

이전 질문 - 아래의 참고 사항은 완전한 개정이 이루어지기 전에 질문을 참조하십시오.

실제로 필요한 것은 변수 변수를 사용하지 않고 배열입니다.

$item_numbers=array(24, 16);

foreach ($item_numbers as $item_number) {
    $result = $db->get_cols_by_match('cart_products','stock_quantity','id', $item_number);
}

당신이하는 방식으로 그것을하기 위해, 이와 같은 것이 그것을 명확히 할 수 있습니다.

$item_number1='24';
$item_number2='16';
$num_cart_items = 2

for($i = 1;$i <= $num_cart_items ;$i++){                
    $varname='item_number' . $i;
    printf("DEBUG: %s = %s<br>", $varname, $$varname);

    $result = $db->get_cols_by_match('cart_products','stock_quantity','id', $$varname);
}

$$ varname은 a의 예입니다 변수 변수, 그러나 귀하의 경우 배열은 귀하의 의도를 훨씬 더 명확하게 선언합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top