Как отобразить результат, используя только массивы, без базы данных MySQL - PullRequest
0 голосов
/ 16 ноября 2011

У меня есть скрипт, который извлекает удаленный XML-файл и отображает таблицу с данными о продукте. данные имеют следующий формат:

ID, name, price, months.

+++++++++++++++++++

1,  Name1, $24,  12 

2,  Name2, $11,  24

2,  Name2, $10,  36

3,  Name3, $16,  12

2,  Name2, $9,  48

4,  Name4, $26,  12

+++++++++++++++++++

как вы видите Name2 с идентификатором 2 - это один и тот же продукт, но с возможностью выбора разных месяцев и разной цены.

Мне нужно отображать одно и то же название продукта только один раз и иметь раскрывающееся меню для него с выбором месяца (чтобы цена соответствовала значению этого меню)

Может кто-нибудь помочь мне написать для него какую-нибудь функцию PHP? Он не должен использовать базу данных mysql, может быть, массивы php ...

Большое спасибо!

++++++++++++++++++++++++++++++++++++

Большое спасибо за ваше внимание, очень ценю это! Функция Яна Туроя выглядит как решение, но у меня проблемы с его реализацией ... вот мой фактический код:

<? 
try 
{
$client = new soapclient("https://api.thesslstore.com/WBService.svc?wsdl", array('trace' => 1,'soap_version' => SOAP_1_1));


$parameters = array('objAuth'=>array("ResellerUserName"=>"user@domain.net","ResellerPassword"=>"password","PartnerCode"=>000000111));

// get the result, a native PHP type, such as an array or string
$result = $client->GetAllProductPrice($parameters);

$counter=count($result->GetAllProductPriceResult->AllProductPrice->AllProductPricing);

for ( $i=0; $i<$counter; $i+=1) {

printf("<tr><td> %s \n", $result->GetAllProductPriceResult->AllProductPrice->AllProductPricing[$i]->NumberOfMonths ."</td>");  
printf("<td> %s \n", $result->GetAllProductPriceResult->AllProductPrice->AllProductPricing[$i]->Price ."</td>");  
printf("<td> %s \n", $result->GetAllProductPriceResult->AllProductPrice->AllProductPricing[$i]->ProductCode ."</td>");  
printf("<td> %s \n", $result->GetAllProductPriceResult->AllProductPrice->AllProductPricing[$i]->ProductName ."</td>");  

}
catch (Exception $e) 
{                           
printf("Error:sendSms: %s\n",$e->__toString());
}

exit;
?>

А вот живой пример: http://webservice.ge/eus/TestPHPAPIProductDetails.php

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 16 ноября 2011
// prepare $data from your SOAP object
$result = $client->GetAllProductPrice($parameters);
$x = $result->GetAllProductPriceResult->AllProductPrice->AllProductPricing;
$data = array();
for ( $i=0; $i<count($x); $i++) {
  $data[] = get_object_vars($x[$i]);
}

// transform to format that suits your purpose
$result = [];
foreach($data as $item) {
  $key = $item["name"];
  if(!isset($result[$key])) $result[$key] = array();
  $result[$key][$item["price"]] = $item["months"];
}

// create your HTML code
ksort($result);
foreach($result as $key=>$item) {
  ksort($item); // optional if you want options sorted asc
  echo "<select name=\"$key\">";
  foreach($item as $value=>$text) echo "<option value=\"$value\">$text</option>";
  echo "</select>";
}
...