Przedstawiam kod serwera ,czy dobrze zainicjowałem ComplexType ? Jak napisać funkcję ,żeby zwróciła wszystkie wiersze ?
<?php class Ksiazka { var $id,$tytul,$cena; public function Ksiazka($id,$tytul,$cena) { $this->id = $id; $this->tytul = $tytul; $this->cena = $cena; } } function pobierzKsiazke($tytul){ $dbConnection = new mysqli('localhost','root','','ksiegarnia'); $query = "SELECT * FROM ksiazki WHERE tytul='".$tytul."'"; $result = $dbConnection->query($query); $rows = $result->num_rows; for($i=0;$i<$rows;$i++) { $row = $result->fetch_assoc(); $tablicaKsiazek[] = new Ksiazka($row['id'],$row['tytul'],$row['cena']); } return $tablicaKsiazek; //kiedy wstawię tu $row lub $ new Ksiazka($row['id'],$row['tytul'],$row['cena']) jednocześnie zmieniając w register z ksiazki na ksiazka to prawidłowo otrzymuje na wyjsciu kliena jeden wiersz z tabeli. Kiedy wykomentuję poniższy kod i sprawdzam poprzez print_r($tablicaKsiazek otrzymuję poprawny wynik tzn. trzy rekory z bazy wsadzone do tablicy) } require_once ('nusoap.php'); $server = new soap_server(); $server->configureWSDL('server','ksiegarnia'); $server->wsdl->addComplexType('ksiazka','ComplexType','struct','all','', 'tytul'=>array('name'=>'tytul','type'=>'xsd:string'), 'cena'=>array('name'=>'cena','type'=>'xsd:integer')) ); $server->wsdl->addComplexType('ksiazki','complexType', 'array', '', 'SOAP-ENC:Array', 'wsdl:arrayType' => 'tns:ksiazka[]') ), 'tns:ksiazka' ); $server->register("pobierzKsiazke", 'ksiegarnia', 'ksiegarnia#pobierzKsiazke' ); $server->service($HTTP_RAW_POST_DATA);
Klient:
<?php require_once ('nusoap.php'); $client = new soapclient('http://localhost/Soap/server.php');
Niestety na wyjściu otrzymuję bool(false) ,a kiedy sprawdzam to w pliku serwera otrzymuję poprawny wynik.
Proszę o pomoc kogoś kto robił coś podobnego jeżeli macie jakieś przykłady jak wyciągnąć poprzez nuSoap calą tabelę to podzielcie się proszę.