Nawigacja  

   

Kategorie  

   

Flag Counter  

   

Ankieta  

Najbardziej elastyczny język programowania ?

   

Prezentacja pobranych danych z WebService IAI

Ocena użytkowników:  / 0
SłabyŚwietny 
Szczegóły

Przykład ten nawiązuje do artykułu Korzystanie z WebService na platformie IAI.shop.com

Po udanym połączeniu się do WebService oraz pobraniu danych możemy zabrać się za ich obróbkę. W dalszej części artykułu na potrzeby prezentacji danych zostanie stworzona klasa z funkcją wyświetlania danych.

Na początku załączamy plik z klasą do wyświetlania produktu oraz określamy parametry logowania. Jego zawartość zostanie przedstawiona w dalszej części artykułu:

 
//klasa z danymi produktu
 include('produkty.php');
 
 // dane do logowania 
 $login = "login do panelu IAI"; 
$password = "hasło do panelu IAI";
 

Połączenie do bramki zamkniemy w pętli, której ilość iteracji określona jest przez ilość stron, które chcemy pobrać:

 
// ilość stron do pobrania
 $ile_stron = 21;
for($s =0; $s <= $ile_stron; $s++)
 {
 
 // ilość pobieranych produktów na jedną stronę
 $ile_produktow_na_strone = 100;
 
 // numer strony z wynikami
 $numer_strony_z_wynikami = $s;
 

Następnie łączymy się z WebService'm i pobieramy dane - prawie identycznie jak w w/w artykule, z tą różnicą, że podajemy numer strony i ilość do wyświetlenia jako parametr:

 
$service_name = "http://markartur.iai-shop.com/edi/api-getproducts.php?wsdl";

$authenticate = array( 
 'system_key' => sha1(date('Ymd').sha1($password)),
 'system_login' => $login
); 
 
 
$params = array( 
 'available' => 'y'
 ,'results_limit' => $ile_produktow_na_strone
 ,'results_page' => $numer_strony_z_wynikami
); 
 
$parametry = array(
 'authenticate' => $authenticate,
 'params' => $params
);
 
$service = new SoapClient($service_name,array($parametry));
$result = $service->getProducts($parametry);
$wyniki = (array)$result;
$tablica_dane_produktu = (array)$wyniki['products'];
 



Teraz zabieramy się za podział pobranych danych:

 
// pętla z iteracją dla produktów na danej stronie
for($x =0; $x < $wyniki['results_number_page']; $x++)
{
 
 //rozbicie tablicy konkretnego produktu
 $dane_produktu = (array)$tablica_dane_produktu[''.$x.''];
 
 //rozbicie tablicy z obrazami
 $dane_produktu_obrazy = (array)$dane_produktu['pictures'];

 //rozbicie tablicy z nazwą i opisami produktu
 $dane_produktu_szczegolowe = (array)$dane_produktu['lang_data'];
 

Następnie podzielone dane przekazujemy do nowo tworzonego obiektu:

 
$pdodukt_klasa = new produkty(
$dane_produktu['id'],
$dane_produktu['code'],
$dane_produktu['producer_id'],
$dane_produktu['producer_name'],
$dane_produktu['category_id'],
$dane_produktu['category_name'],
$dane_produktu['wholesale_price'],
$dane_produktu['vat'],
$dane_produktu['weight'],
$dane_produktu['visible'],
$dane_produktu['size_group_id'],
$dane_produktu['size_group_name'],
$dane_produktu['modification_time'],
$dane_produktu_obrazy,
$dane_produktu_szczegolowe
);
 

Na koniec wywołujemy funkcję do wyświetlania danych przekazanych do obiektu i zamykamy wcześniej otworzone pętle:

 
echo "<hr color='#FF0000'></hr>";
 echo '<table><tr><td nowrap="nowrap">';
 $pdodukt_klasa->wyswietl_produkt();
echo '</td></tr></table>';
 }// koniec iteracji produktów
}// koniec iteracji stron
 

Zawartość pliku z klasą do wyświetlania produktu wraz z opisem.

Na początku definiujemy zmienne klasy i funkcję do ich pobierania: 

 
//definicja klasy
class produkty
{
 //zmienne klasy
 var $p_id_artykulu_iai;
 var $p_id_artykulu_towaru;
 var $p_kod_producenta;
 var $p_nazwa_producenta;
 var $p_kod_kategorii;
 var $p_nazwa_kategorii;
 var $p_cena;
 var $p_vat;
 var $p_waga;
 var $p_widocznosc;
 var $p_id_grupy_rozmiaru;
 var $p_nazwa_rozmiaru;
 var $p_data_modyfikacji;
var $p_obrazy_tablica;
 var $p_opisy_tablica;
 
//funkcja do pobierania przekazanych wartości zmiennych
function produkty(
 $id_artykulu_iai,
 $id_artykulu_towaru,
 $kod_producenta,
 $nazwa_producenta,
 $kod_kategorii,
 $nazwa_kategorii,
 $cena,
 $vat,
 $waga,
 $widocznosc,
 $id_grupy_rozmiaru,
 $nazwa_rozmiaru,
 $data_modyfikacji,
 $obrazy_tablica,
 $opisy_tablica
){
 $this->p_id_artykulu_iai = $id_artykulu_iai;
 $this->p_id_artykulu_towaru = $id_artykulu_towaru;
 $this->p_kod_producenta = $kod_producenta;
 $this->p_nazwa_producenta = $nazwa_producenta;
 $this->p_kod_kategorii = $kod_kategorii;
 $this->p_nazwa_kategorii = $nazwa_kategorii;
 $this->p_cena = $cena;
 $this->p_vat = $vat;
 $this->p_waga = $waga;
 $this->p_widocznosc = $widocznosc;
 $this->p_id_grupy_rozmiaru = $id_grupy_rozmiaru;
 $this->p_nazwa_rozmiaru = $nazwa_rozmiaru;
 $this->p_data_modyfikacji = $data_modyfikacji;
 $this->p_obrazy_tablica = $obrazy_tablica;
 $this->p_opisy_tablica = $opisy_tablica;
}
 

A teraz to co najważniejsze, czyli funkcja do prezentacji wyników. Pierwsza część wyświetla nagłówki tabeli oraz dane, które nie wymagają dodatkowej obróbi (rozbicia):

 
function wyswietl_produkt()
{
//tabela główna
echo'
<table align="center" border="1">
<tr>
 <th style="text-align:center">Dane</th>
 <th style="text-align:center">Obrazy</th>
 <th style="text-align:center">Opisy</th>
</tr>
<tr><td><table>
<tr>
 <th>Kod IAI:</th><td>'.$this->p_id_artykulu_iai.'</td>
</tr>
<tr>
 <th>Symbol:</th><td>'.$this->p_id_artykulu_towaru.'</td>
</tr>
<tr>
 <th>Kod producenta:</th><td>'.$this->p_kod_producenta.'</td>
</tr>
<tr>
 <th>Producent:</th><td>'.$this->p_nazwa_producenta.'</td>
</tr>
<tr>
 <th>Kod kategorii:</th><td>'.$this->p_kod_kategorii.'</td>
</tr>
<tr>
 <th>Kategoria:</th><td>'.$this->p_nazwa_kategorii.'</td>
</tr>
<tr>
 <th>Cena:</th><td>'.$this->p_cena.'</td>
</tr>
<tr>
 <th>VAT:</th><td>'.$this->p_vat.'</td>
</tr>
<tr>
 <th>Waga:</th><td>'.$this->p_waga.'</td>
</tr>
<tr>
 <th>Widoczność:</th><td>'.$this->p_widocznosc.'</td>
</tr>
<tr>
 <th>ID rozmiaru:</th><td>'.$this->p_id_grupy_rozmiaru.'</td>
</tr>
<tr>
 <th>Nazwa rozmiaru:</th><td>'.$this->p_nazwa_rozmiaru.'</td>
</tr>
<tr>
 <th>Data modyfikacji:</th>
 <td>'.$this->p_data_modyfikacji.'</td>
</tr></table></td>';
 

Dalsza część wymaga dodatkowej obróbi wyników. Najpierw rozbita zostanie tablica przechowująca obrazy:

 
echo '<td><table>';
 
//zmienna przechowująca kolejne numery obrazów w tablicy
$iteracja_obrazu = 0;
 
//ustawienie wskaźnika na pierwszy obraz
$dane_produktu_obraz['large_url'] = 1;
 
//pętla z warunkiem sprawdzającym istnienie obrazu
while(isset($dane_produktu_obraz['large_url']))
{
 
//rozbicie tablicy z obrazem
$dane_produktu_obraz = (array)$this->p_obrazy_tablica[''.$iteracja_obrazu.''];
 
//sprawdzenie czy istnieje obrazek
if(isset($dane_produktu_obraz['large_url']))
{
 
 echo"<tr>
 <th>Obrazek ID:</th>
 <td>".$dane_produktu_obraz['image_id']."</td>

 <th>Obrazek duży:</th>
 <td>".$dane_produktu_obraz['large_url']."</td>
 </tr>
 <tr>
 <th>Szerokość:</th>
 <td>".$dane_produktu_obraz['width']."</td>
 <th>Obrazek średni:</th>
 <td>".$dane_produktu_obraz['medium_url']."</td>
 </tr>
 <tr>
 <th>Wysokość:</th>
 <td>".$dane_produktu_obraz['height']."</td>
 <th>Obrazek mały:</th>
 <td>".$dane_produktu_obraz['small_url']."</td>
 </tr>
 <tr>
 <th>Rozmiar:</th>
 <td>".$dane_produktu_obraz['size']."</td>
 <th>Data:</th>
 <td>".$dane_produktu_obraz['date']."</td>
 </tr>
 <tr>
 <td>&nbsp;</td><td></td>
 </tr>";
}
 $iteracja_obrazu++;
}
 
echo'</table></td>';
 

a następnie rozbijamy tablicę z opisami produktu:

 
echo '<td><table>';
 
// rozbicie tablicy z opisem produktu
$dane_produktu_szczegolowe = $this->p_opisy_tablica;
 
//zabezpieczenie - jeżeli strona postawiona na iai ma więcej języków
$iteracja_jezyka = 0;
 
// ustawienie domyślnego języka - polski
$dane_produktu_szczegolowe_data['lang_id'] = 'pol';
 
//pętla z warunkiem sprawdzającym istnienie opisu
while(isset($dane_produktu_szczegolowe_data['lang_id']))
{
 
// tablica z opisem w danum języku
$dane_produktu_szczegolowe_data = (array)$dane_produktu_szczegolowe[''.$iteracja_jezyka.''];
 
//warunek sprawdzający istnienie opisu w danym języku
if(isset($dane_produktu_szczegolowe_data['lang_id']))
{
 
 echo"
 <tr>
 <th>Język:</th>
 <td>".$dane_produktu_szczegolowe_data['lang_id']."</td>
 <th>Nazwa produktu:</th>
 <td>".$dane_produktu_szczegolowe_data['name']."</td>
 </tr>
 <tr>
 <th>Opis krótki:</th>
 <td colspan='3'>".$dane_produktu_szczegolowe_data['description']."</td>
 </tr>
 <tr>
 <th>Opis długi:</th>
 <td colspan='3'>".$dane_produktu_szczegolowe_data['long_description']."</td>
 </tr>
 <tr>
 <td>&nbsp;</td><td></td><td></td><td></td>
 </tr>";
}
 $iteracja_jezyka++;
}
 
echo'</table></td></tr></table>';
}// koniec funkcji wyświetlającej
 
}// koniec klasy produktu
 

 

 

Skrypty do pobrania w dziale Downloads.

   

Aktualnie online

Odwiedza nas 23 gości oraz 0 użytkowników.

   
© TRAFAS.EU