2009-11-27 8 views
1

J'utilise paypal pour traiter les paiements sur mon site. Paypal retourne le tableau de poste commeEn utilisant post tableau de 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 

étape Insérer ici maintenant Im juste aller dans les cercles nulle part

Et puis exécutez la boucle

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); 

    } 

Im ayant des problèmes avec ces variables variables. Y a-t-il une meilleure manière de faire cela?

Merci Andrew

+0

Les variables de publication sont-elles globales? Pourquoi ne pas simplement les référencer directement à partir de $ _POST? –

Répondre

7

Je changerais votre code révisé pour utiliser $ _POST directement, par exemple La sortie de diagnostic devrait vous aider à affiner où les choses se passent pour vous.

QUESTION ANCIENS - notes ci-dessous renvoient à la question avant une révision complète de celui-ci était-il fait.

Qu'est-ce que vous avez vraiment besoin est un tableau, plutôt que d'essayer d'utiliser des variables variables

$item_numbers=array(24, 16); 

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

Pour ce faire les choses comme vous le faites, quelque chose comme cela pourrait l'éclairer

$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); 
} 

Le $$ varname est un exemple de variable variable, mais dans votre cas, un tableau déclare votre intention d'une manière beaucoup plus claire.

+0

Cela ne devrait pas être '$ varname =" item_number ". $ i; '? –

+0

Oui, juste repéré que - corrigé –

+0

j'avais simplifié la question. L'item_number1 et l'item_number2 proviennent de paypal, donc je n'avais aucun contrôle sur ça. La deuxième façon que vous avez suggéré est ce dont j'ai besoin, c'est évident, je devrais aller au lit – andrew