Pomocy chcę wyrzucić do klienta usługi sieciowej całą tabelę z bazy danych, korzystam z nuSoap.
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){
$tablicaKsiazek = array();
$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','',
array('id'=>array
('name'=>'id','type'=>'xsd:integer'), 'tytul'=>array('name'=>'tytul','type'=>'xsd:string'),
'cena'=>array('name'=>'cena','type'=>'xsd:integer'))
);
$server->wsdl->addComplexType('ksiazki','complexType', 'array', '', 'SOAP-ENC:Array',
array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:ksiazka[]')
),
'tns:ksiazka'
);
$server->register("pobierzKsiazke",
array('tytul'=> 'xsd:string'), array('return' =>'tns:ksiazki'), 'ksiegarnia',
'ksiegarnia#pobierzKsiazke'
);
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ?
$HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
Klient:
<?php
require_once ('nusoap.php');
$client = new soapclient('http://localhost/Soap/server.php');
$ksiazka = $client->call('pobierzKsiazke',array('tytul'=>'PHP Vademecum Profesjonalisty'));
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ę.
Ten post edytował Robert1985 8.06.2010, 19:41:35
"Istnieją dwa sposoby projektowania oprogramowania. Można napisać je tak prosto, że w oczywisty sposób nie będzie w nim niedoskonałości; można też uczynić je tak skomplikowanym ,że nie będzie w nim żadnych oczywistych niedociągnięć.Pierwsza metoda jest znacznie trudniejsza." C.A.R Hoare