2016-04-21 1 views
0

Я использую PHP с API рекламы продукта Amazon, чтобы пользователь вводил номер ISBN в форму поиска и возвращал информацию о продукте.Позволяет пользователю вводить значения, разделенные запятой, на ввод и возврат уникальных элементов.

Есть ли способ разрешить пользователю вводить несколько номеров ISBN, разделенных запятой, и возвращать информацию о продукте для каждого введенного номера?

Вот то, что я до сих пор, что работает:

//allow users to enter multiple ISBN, separated by a comma 
$myValue = $_POST['isbnNum']; 
$arrs = explode(", ", $myValue); 

$similar = array(
    'Operation'  => 'ItemLookup', 
    'IdType'  => 'ISBN', 
    'ItemId'  => $myValue, 
    'SearchIndex' => 'Books', 
    'ResponseGroup' => 'Medium' 
    ); 

$result = $amazon->queryAmazon($similar); 
$similar_products = $result->Items->Item; 

//arrays 
$aws_items = array(); 

//array counter 
$i = 0; 

foreach($similar_products as $si){ 
    $item_url = $si->DetailPageURL; //get its amazon url 
    $img = $si->MediumImage->URL; //get the image url 

    $title = $si->ItemAttributes->Title; //product title 
    $isbn = $si->ItemAttributes->ISBN; //product title 
    $price = $si->OfferSummary->LowestNewPrice->FormattedPrice;  //product price 
    $weight = $si->ItemAttributes->ItemDimensions->Weight;  //product weight 

    //item array 
    $item = []; 
    $item['title'] = $title; 
    $item['price'] = $price; 
    $item['weight'] = $weight; 
    $item['isbn'] = $isbn; 

    //add decimal point two spaces from right of product dimensions 
    $length = number_format(($si->ItemAttributes->ItemDimensions->Length/100),2); //item length 
    $width = number_format(($si->ItemAttributes->ItemDimensions->Width/100),2); //item width 
    $height = number_format(($si->ItemAttributes->ItemDimensions->Height/100),2); //item height 

    //print HTML 
    echo '<div class="isbn-item">'; 
     echo '<img src="' . $img . '" />'; 
     echo '<h2>' . $title . '</h2>'; 
     echo '<p>' . $item['isbn'] . '</p>'; //isbn 
     /*echo '<p>' . $si->ItemAttributes->ListPrice->FormattedPrice . '</p>'; //item price*/ 
     echo '<p>' . $item['price'] . '</p>'; 
     echo '<p>' . $length . ' x ' . $width . ' x ' . $height . ' inches</p>'; 
     echo '<p>' . $weight . ' ounces</p>'; 
     echo '<input name="submit" type="submit" value="Add to Cart">'; 
    echo '</div>'; 

    //Increment the counter by 1 
    $i++; 
} 

Edit: Так что я добавил в взрываться части в верхней части, и теперь я возвращаюсь несколько элементов. Однако в HTML, поскольку я выводил $myValue, каждый элемент получает все введенные значения ISBN, а не те, которые связаны с ними. Я понимаю, что мне нужно получить доступ к массиву $arrs (правда?), Но я не уверен, где/как.

Редактировать 2: Почему бы не echo '<p>' . $arrs[$myValue] . '</p>'; работать?

Редактировать 3: Обновлен код с рабочим кодом, который добавляет каждую книгу ISBN в соответствующую книгу.

+1

да. взорваться в запятой, искать каждое индивидуальное значение, сообщать об этом пользователю. –

+0

Пожалуйста, прочитайте http://php.net/manual/en/function.explode.php – Scuzzy

+0

http://docs.aws.amazon.com/AWSECommerceService/latest/DG/CHAP_ApiReference.html –

ответ

0

$myValue - это строка ISBNs справа?

Таким образом, $arrs[$myValue] не будет работать, потому что вам нужно получить доступ к элементам с помощью индекса целого числа.

Если вы меняете для цикла использовать $ ключ => синтаксис $ Валя, вы можете сделать это:

foreach($similar_products as $index=>$si){ 
    ... 
     echo '<p>' . $arrs[$index] . '</p>'; //isbn 
    ... 
} 
+0

Хм не работал. Да, '$ myValue' хранит все введенные ISBN; если вы введете '$ myValue' вместо' $ arrs [$ index] ', вы получите' ISBN1, ISBN 2', но '$ arrs [$ index]' ничего не возвращает. – vytfla

+0

Вы изменили foreach, чтобы использовать $ index? 'foreach ($ Similar_products as $ index => $ si) {' – BizzyBob

+0

Да, я сделал, все равно ничего. – vytfla

0

Вот рабочий код:

//allow users to enter multiple ISBN, separated by a comma 
$myValue = $_POST['isbnNum']; 
$arrs = explode(", ", $myValue); 

$similar = array(
    'Operation'  => 'ItemLookup', 
    'IdType'  => 'ISBN', 
    'ItemId'  => $myValue, 
    'SearchIndex' => 'Books', 
    'ResponseGroup' => 'Medium' 
    ); 

$result = $amazon->queryAmazon($similar); 
$similar_products = $result->Items->Item; 

//arrays 
$aws_items = array(); 

//array counter 
$i = 0; 

foreach($similar_products as $si){ 
    $item_url = $si->DetailPageURL; //get its amazon url 
    $img = $si->MediumImage->URL; //get the image url 

    $title = $si->ItemAttributes->Title; //product title 
    $isbn = $si->ItemAttributes->ISBN; //product title 
    $price = $si->OfferSummary->LowestNewPrice->FormattedPrice;  //product price 
    $weight = $si->ItemAttributes->ItemDimensions->Weight;  //product weight 

    //item array 
    $item = []; 
    $item['title'] = $title; 
    $item['price'] = $price; 
    $item['weight'] = $weight; 
    $item['isbn'] = $isbn; 

    //add decimal point two spaces from right of product dimensions 
    $length = number_format(($si->ItemAttributes->ItemDimensions->Length/100),2); //item length 
    $width = number_format(($si->ItemAttributes->ItemDimensions->Width/100),2); //item width 
    $height = number_format(($si->ItemAttributes->ItemDimensions->Height/100),2); //item height 

    //print HTML 
    echo '<div class="isbn-item">'; 
     echo '<img src="' . $img . '" />'; 
     echo '<h2>' . $title . '</h2>'; 
     echo '<p>' . $item['isbn'] . '</p>'; //isbn 
     /*echo '<p>' . $si->ItemAttributes->ListPrice->FormattedPrice . '</p>'; //item price*/ 
     echo '<p>' . $item['price'] . '</p>'; 
     echo '<p>' . $length . ' x ' . $width . ' x ' . $height . ' inches</p>'; 
     echo '<p>' . $weight . ' ounces</p>'; 
     echo '<input name="submit" type="submit" value="Add to Cart">'; 
    echo '</div>'; 

    //Increment the counter by 1 
    $i++; 
} 
Смежные вопросы