2013-05-15 7 views
0

ОБНОВЛЕНИЕ: ЭТО РЕШЕН И РАБОЧИЙ КОД ПРОХОДИТ В НИЖНЕЙ СТОЛЕТЕ. Я СОХРАНИЛ ОРИГИНАЛЬНУЮ ПОЧТУ, ЧТО ДРУГИЕ МОГУТ ЧИТАТЬ И ПОСЛЕДУЮТ.

У меня возникла большая проблема с Live PayPal, но думаю, что я нашел проблему.

Посмотрите на этом скриншоте, это от pdt.php, где клиенты перенаправлены после покупки, и это реальный, сделали с реальной визой: http://snag.gy/5XCvA.jpg

я печатал весь TX-идентификатор в верхняя часть для отладки и здесь я вижу, что item_number1 = 54, quantity1 = 1 и item_name1 = Introductionktionsföreläsning.

Проблема заключается в том, что они не отображаются под Produkt, ID и Antal (Product, Id и Quantity), которые используются для представления клиенту. Это потому, что у меня есть набор переменных, как это:

$item_number = $response[item_number]; 
$item_name = $response[item_name]; 
$qty = $response[quantity]; 

и они никогда не получают больше, чем просто ITEM_NUMBER, когда они должны получить «++: изд» в item_number1, item_number2 и т.д. для каждого продукта.

Я попытался сделать много изменений, например:

for($idx = 1; $idx < $count; $idx ++) 
     { 
      //$item_name .=$idx ++; 
      //$item_name = $item_name++; 
      echo ("<div class='abouttext'>Produkt: ".$item_name."</div>\n"); 
      echo ("<div class='abouttext'>ID: ".$item_number."</div>\n"); 
      echo ("<div class='abouttext'>Antal: ".$qty."</div>\n"); 
      echo ("<br />"); 
     } 

где outcommented линии, где я пытаюсь добавить номер к ITEM_NAME, но я просто получить «1» или вообще ничего, как ответ, когда мне нужно это item_name1 и так далее.

Вот мой PDT сценарий: Но им вполне уверен, что это может быть исправлено в этой области кода: http://pastebin.com/L2nyT9q7

$array_keys = array_keys($response); 
    $count = 1; 
    foreach($array_keys as $element) 
    { 
     if (!strncmp('item_number', $element, strlen('item_number'))) 
      $count++;  
    } 
     for($idx = 1; $idx < $count; $idx ++) 
     { 
      if (isset($string1) && 'item_name' != null) 
      { 
      //$item_name .=$idx ++; 
      //$item_name = $item_name++; 
      echo ("<div class='abouttext'>Produkt: ".$item_name."</div>\n"); 
      echo ("<div class='abouttext'>ID: ".$item_number."</div>\n"); 
      echo ("<div class='abouttext'>Antal: ".$qty."</div>\n"); 
      echo ("<br />"); 
      } 
     } 

также: Я читал на некоторых форумах с людьми с подобными проблемами, и они получили отвечает на использование item_nameX как имя переменной, и я тоже пробовал это, без каких-либо других результатов. Если я hardcode $item_number = $response[item_number1]; < - где я укажу 1, я получу правильные данные. Я проверил это.

РАБОТА КОД:

$array_keys = array_keys($response); 
    $count = 1; 
    $i = 1; 

    foreach($array_keys as $element) 
    { 
     if (!strncmp('item_number', $element, strlen('item_number'))) 
      $count++; 
    } 
     for($idx = 1; $idx < $count; $idx ++ & $i++) 
     { 
      $item_number = $response[item_number . $i]; 
      $item_name = $response[item_name . $i]; 
      $qty = $response[quantity . $i];   
      echo ("<div class='abouttext'>Produkt: ".$item_name."</div>\n"); 
      echo ("<div class='abouttext'>ID: ".$item_number."</div>\n"); 
      echo ("<div class='abouttext'>Antal: ".$qty."</div>\n"); 
      echo ("<br />"); 
     } 
+0

(отредактировано) У вас есть что-то плохое с логикой: «item_name» - это строка, поэтому она никогда не имеет значения null. И код в целом чрезвычайно трудно читать из-за стиля. –

+0

Да, это правда, спасибо. Но я не думаю, что он даже выполнял функцию, я удалил ее, и у меня такой же результат. Отображается только имя, но это указывает на то, что оно все равно может найти имя, но все же item_name - это просто item_name, а не item_name1, например. Ill обновить код. –

ответ

2

Я переписан и очистить часть вашего кода. Это непроверено, но, надеюсь, он заставит вас идти в правильном направлении.

$product_ids = array(1,3,5,7,9,11,13,15,17,18,19,20,21,22,24,26,27,28,29,30,31,33,41,43,45,47,49,51,54,55,57,58); 
    $msg = ''; 
    $num_items = 0; 
    if (array_key_exists('num_cart_items', $response)) 
     $num_items = intval($response['num_cart_items']); 

    if (!empty($num_items)) 
    { 
     $string1 = 'item_name'; 
     $string2 = 'item_number'; 
     $firstname = $response['first_name']; 
     $lastname = $response['last_name']; 
     $total = $response['mc_gross']; 

     for ($i = 1; $i <= $num_items; $i++) 
     { 
     $item_number = $response['item_number'.$i]; 
     $item_name = $response['item_name'.$i]; 
     $qty = $response['quantity'.$i]; 
     $id = $response['item_number'.$i]; 
     // do something with these vars since they change every iteration through the loop and only exist within the scope of the loop. 

     if (in_array($item_number, $product_ids)) { 
      $msg = '<p><div id="bold">Produkter tillgängliga för nerladdning/lyssning</div></p><br>'; 
     } 
     } 
    } 

    echo ' 
    <div id="wrapper"> 
     <div id="welcomeText">Tack för ditt köp!</div> 
     <div class="abouttext3">Har du köpt produkter som ska laddas ned, laddar du ned dem NU till din dator. <br> Du har endast möjlighet att ladda ned från just den här sidan.<br> 
      Stanna kvar på sidan tills du laddat ned ALLT du köpt. <br>OBS! Om du stänger ned sidan har du inte möjlighet att komma tillbaka till den.<br> 
      Har du köpt en lyssning av ”Guidning till förlåtelse” lyssnar du på den HÄR och NU. <br> Var kvar på sidan tills du lyssnat klart. <br> OBS! 
      Om du stänger ned sidan har du inte möjlighet att komma tillbaka till den. <br /> 
      Har du köpt varor som levereras med Posten, skickas de så snart som möjligt från oss. <br> Allra senast inom en vecka. 
     </div> 
     <div class="abouttext2">Vi önskar Dig en bra dag. <br> 
     Välkommen tillbaka till energyshop.se när du vill! 
     </div>' 
     . $msg; // If item_number matches any product that is for download/listetning, then print this headline 
+0

Да! Я сам понял, что пытался использовать: $ item_number = $ response ['item_number']. $ I; вместо $ item_number = $ response ['item_number'. $ i]; где $ i является INSIDE of []. Дурак я. Большое спасибо, остальная часть кода также очень полезна, и я думаю, что мне удастся разобраться с этим сейчас. –

+0

Я сделал это! Я не использовал весь код ur, но мне нужно было это сделать. Я уверен, что это может быть лучше, но его работа и мои руки так счастливы! :) Обновленный код. –

 Смежные вопросы

  • Нет связанных вопросов^_^