Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> XML zwracanie całej tabeli
Robert1985
post 8.06.2010, 19:39:16
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 7
Dołączył: 5.08.2009
Skąd: Tychy

Ostrzeżenie: (0%)
-----


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 ?
  1. <?php
  2. class Ksiazka {
  3. var
  4. $id,$tytul,$cena;
  5. public function Ksiazka($id,$tytul,$cena) {
  6. $this->id = $id;
  7. $this->tytul = $tytul;
  8. $this->cena = $cena;
  9. }
  10. }
  11.  
  12. function pobierzKsiazke($tytul){
  13. $tablicaKsiazek = array();
  14.  
  15. $dbConnection = new mysqli('localhost','root','','ksiegarnia');
  16. $query = "SELECT * FROM ksiazki WHERE tytul='".$tytul."'";
  17. $result = $dbConnection->query($query);
  18. $rows = $result->num_rows;
  19.  
  20. for($i=0;$i<$rows;$i++) {
  21. $row = $result->fetch_assoc();
  22. $tablicaKsiazek[] = new Ksiazka($row['id'],$row['tytul'],$row['cena']);
  23. }
  24.  
  25.  
  26. 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)
  27. }
  28.  
  29.  
  30.  
  31. require_once ('nusoap.php');
  32.  
  33. $server = new soap_server();
  34. $server->configureWSDL('server','ksiegarnia');
  35.  
  36.  
  37. $server->wsdl->addComplexType('ksiazka','ComplexType','struct','all','',
  38. array('id'=>array('name'=>'id','type'=>'xsd:integer'),
  39. 'tytul'=>array('name'=>'tytul','type'=>'xsd:string'),
  40. 'cena'=>array('name'=>'cena','type'=>'xsd:integer'))
  41. );
  42.  
  43. $server->wsdl->addComplexType('ksiazki','complexType', 'array', '', 'SOAP-ENC:Array',
  44. array(),
  45. array('ref' => 'SOAP-ENC:arrayType',
  46. 'wsdl:arrayType' => 'tns:ksiazka[]')
  47. ),
  48. 'tns:ksiazka'
  49. );
  50.  
  51.  
  52. $server->register("pobierzKsiazke",
  53. array('tytul'=> 'xsd:string'),
  54. array('return' =>'tns:ksiazki'),
  55. 'ksiegarnia',
  56. 'ksiegarnia#pobierzKsiazke'
  57. );
  58.  
  59. $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
  60.  
  61. $server->service($HTTP_RAW_POST_DATA);
  62.  
  63.  

Klient:
  1. <?php
  2.  
  3. require_once ('nusoap.php');
  4.  
  5. $client = new soapclient('http://localhost/Soap/server.php');
  6.  
  7. $ksiazka = $client->call('pobierzKsiazke',array('tytul'=>'PHP Vademecum Profesjonalisty'));
  8.  
  9. var_dump($ksiazka);


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.06.2025 - 00:31