Witam

Nie wiedzialem w jakim temacie to umiescic, z poczatku myslalem XML, ale w sumie to jest chyba problem php - tworzenia tablic?

Sprawa ma sie nastepujaco:

Problem polega na tym, ze nie potrafie utworzyc tablicy wielowatkowej w nuSOAP.
Pokaze na przylkadzie o co chodzi, bedzie latwiej:

Poprawna zawartosc XMLa powinna wygladac tak:

  1. <ns4:DeleteProducts>
  2. <Value>
  3. <AuthLogin>zakupy_test</AuthLogin>
  4. <AuthPassword>zakupy_test</AuthPassword>
  5. <AuthSid></AuthSid>
  6. <Rows>
  7.  <Row>
  8.    <SrcId></SrcId>
  9.  </Row>
  10.  <Row>
  11.    <SrcId></SrcId>
  12.  </Row>
  13.  <Row>
  14.    <SrcId></SrcId>
  15.  </Row>
  16.  <Row>
  17.    <SrcId></SrcId>
  18.  </Row>
  19.    ....
  20. </Rows>
  21. </Value>
  22. </ns4:DeleteProducts>




Implementacja NUSOAP w php realizuje to nastepnujaco:



  1. <?php
  2.  
  3. $params = array(
  4.  
  5. 'Value' => ARRAY (
  6.     'AuthLogin' => '***',
  7.     'AuthPassword' => '***',
  8.     'AuthSid' => '***',
  9.  
  10.     'Rows' => ARRAY (
  11.         ),
  12.     ),
  13. );
  14.  
  15.  
  16. $params[Value][Rows][Row] = ARRAY (
  17.                 'SrcId' => &#092;"1407\",
  18.         );
  19.  
  20.  
  21. $result = $client->call('DeleteProducts', $params, &#092;"http://codewebservice.namespace\");
  22. ?>



Wszystko jest ok... tylko okazuje sie ze pojawil sie problem przy kilku produktach do skasowania:

logicznie rzecz biorac implementacja powinna wygladac tak:

  1. <?php
  2. [...]
  3. $params[Value][Rows][Row] = ARRAY (
  4.                 'SrcId' => &#092;"1407\",
  5.         );
  6. $params[Value][Rows][Row] = ARRAY (
  7.                 'SrcId' => &#092;"1408\",
  8.         );
  9. $params[Value][Rows][Row] = ARRAY (
  10.                 'SrcId' => &#092;"1409\",
  11.         );
  12. [...]
  13. ?>


niestety nie dziala to z prostego powodu - zawartosc "Row" jest za kazdym razem zastepowana i w wyniku otrzymuje sie
XMLA wygladajacego tak:

  1. <ns4:DeleteProducts>
  2. <Value>
  3. <AuthLogin>zakupy_test</AuthLogin>
  4. <AuthPassword>zakupy_test</AuthPassword>
  5. <AuthSid></AuthSid>
  6. <Rows>
  7.  <Row>
  8.    <SrcId>1409</SrcId>
  9.  </Row>
  10. </Rows>
  11. </Value>
  12. </ns4:DeleteProducts>



i w wyniku tego oczywiscie kasowany jest tylko jeden produkt.

Jak wiec mozna otrzymac kilka wartosci ROW?

  1. ---
  2.  <Row>
  3.    <SrcId>1407</SrcId>
  4.  </Row>
  5.  <Row>
  6.    <SrcId>1408</SrcId>
  7.  </Row>
  8.  <Row>
  9.    <SrcId>1409</SrcId>
  10.  </Row>
  11. ---


z gory dziekuje za pomoc

pozdrawiam