Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [XML][PHP]WSDL i NuSOAP
ilidir
post 10.02.2015, 13:21:33
Post #1





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


Witam mam problem z ogarnięciem myślę że trywialnej sprawy ;/

  1. $serwer->wsdl->addComplexType(
  2. 'WorkerObject',
  3. 'complexType',
  4. 'struct',
  5. 'all',
  6. '',
  7. array('Id' => array('name'=>'Id', 'type'=>'xsd:int'),
  8. 'Name' => array('name'=>'Name','type'=>'xsd:string'),
  9. 'Surname' => array('name'=>'Surname','type'=>'xsd:string')
  10. )
  11. );
  12.  
  13. $serwer->register('test_dodanie',
  14.  
  15. array('who'=>'tns:WorkerObject'),
  16.  
  17.  
  18. array('return'=>'xsd:varchar'),
  19.  
  20. $ns,
  21.  
  22. false,
  23.  
  24. 'rpc',
  25.  
  26. 'encoded',
  27.  
  28. 'Opisowy test dodanie');
  29.  
  30.  
  31. function test_dodanie($WorkerObject) {
  32. foreach($WorkerObject[Id] as $Id){
  33. mysql_query("INSERT INTO test(test) VALUES ('$Id')");
  34. }


Zapytaniem do WSDL-a tworze 2 rekordy w tablicy i je wysyłam Problemjest w tym że nie wiem w jaki sposób dodać oba te rekordy do bazy danych Z dodaniem pojedynczego nie mam żadnego problemu az wieloma już sobie nie radze sad.gif

pozdrawiam
Go to the top of the page
+Quote Post
Randallmaster
post 10.02.2015, 13:45:27
Post #2





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


  1. foreach($WorkerObject[Id] as $key => $Id){

dodaj $key

i w foreach stwórz 2 ciągi: nazwy kolumn i wartości.
i wrzuć to w zapytanie

takie coś musisz osiągnąć:
$columns = '(name, surname)';
$values = '(1,2)';

docelowo musi wyjść tak:
insert into nazwa_tabeli (name, surname) values (1,2)
Go to the top of the page
+Quote Post
ilidir
post 10.02.2015, 14:58:22
Post #3





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


Zrobiłem coś takiego:

function test_dodanie($WorkerObject) {
foreach($WorkerObject[Id] as $key=>$Id){
for ($i=0; $i<count($Id); $i++){
mysql_query("INSERT INTO test(test) VALUES ('$Id[$i]')");
}
}

Ale nadal nic sad.gif
Go to the top of the page
+Quote Post
Randallmaster
post 11.02.2015, 09:25:07
Post #4





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


Zapis do bazy danych musi być poza pętlą.

  1. $columns = '';
  2. $values = '';
  3. foreach($WorkerObject[Id] as $key=>$Id){
  4. $columns .= $key;
  5. $values .= $Id;
  6. }
  7.  
  8. mysql_query("INSERT INTO nazwa_tabeli ($columns) VALUES ($values)");


To nie jest gotowiec smile.gif w $columns musisz dodać jeszcze odpowiednio przecinki smile.gif

Ten post edytował Randallmaster 11.02.2015, 09:25:46
Go to the top of the page
+Quote Post
ilidir
post 12.02.2015, 08:29:52
Post #5





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


Ale jak będe miał 10 rekordów to wydaje mi się że zapis do bazy powinien być w pętli bo teraz w przykładzie który podałeś przypisuje dane do 2 zmiennych i potem je wstawiam do bazy i kończy się funkcja. A ja bede przyjmował duże ilości danych smile.gif Chyba że znacie inny skuteczniejszy sposób na mają zagwostkę smile.gif


Na przykład takie dane:
  1. $testt = Array(
  2. 'Id' => array(100, 20, 50, 1000),
  3. 'Name' => array('Test1', 'Test2', 'Test3', 'Test4'),
  4. 'Surname' => array('Sur1', 'Sur2', 'Sur3', 'Sur4')
  5. );


i teraz na przykład INSERT test(id,name,surname) VALUES ($Id,$Name,$Surname)

Ten post edytował ilidir 12.02.2015, 09:17:47
Go to the top of the page
+Quote Post
Randallmaster
post 12.02.2015, 09:27:09
Post #6





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


No to robisz mniej więcej tym samym sposobem tylko $values doprowadzasz do takiej formy (jan,kowalski),(ania,kowalska),(staś,kowalski) itd.

Nie jestem zwolennikiem gotowców, ale widzę że nie chcesz mnie posłuchać.

  1. $test = Array(
  2. 'Id' => array(100, 20, 50, 1000),
  3. 'Name' => array('Test1', 'Test2', 'Test3', 'Test4'),
  4. 'Surname' => array('Sur1', 'Sur2', 'Sur3', 'Sur4')
  5. );
  6. $columns = '';
  7. $values = '';
  8. $i = 0;
  9. foreach($test as $key => $r){
  10. if($i > 0) $sep = ','; else $sep = '';
  11. $columns .= $sep.$key;
  12. $values .= $sep.'(';
  13. $i2 = 0;
  14. foreach($r as $r2){
  15. if($i2 > 0) $sep2 = ','; else $sep2 = '';
  16. $values .= $sep2.$r2;
  17. $i2++;
  18. }
  19. $values .= ')';
  20. $i++;
  21. }
  22. echo 'insert into nazwa_tabeli (' . $columns . ') values '. $values;
Go to the top of the page
+Quote Post
ilidir
post 13.02.2015, 09:45:31
Post #7





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


na tąchwile nie działa to taj jak bym chciał mam inne pytanie może mi to coś rozjaśni smile.gif

mam coś takiego.

  1. $serwer->wsdl->addComplexType(
  2. 'tablica',
  3. 'complexType',
  4. 'array',
  5. 'all',
  6. '',
  7. 'login' => array('name'=>'login','type'=>'xsd:array'),
  8. 'grupa' => array('name'=>'grupa','type'=>'xsd:array')
  9. )
  10. );
  11.  
  12. $serwer->register('inny',
  13.  
  14. array('input'=>'xsd:varchar'),
  15.  
  16. array('return'=>'tns:tablica'),
  17.  
  18. $ns,
  19.  
  20. false,
  21.  
  22. 'rpc',
  23.  
  24. 'encoded',
  25.  
  26. 'Opisowy test odpowiedz');
  27.  
  28.  
  29.  
  30. function inny(){
  31. $tab = array();
  32. $result = mysql_query("SELECT * FROM temp")
  33. or die('<p class="blad">Wystąpił błąd podczas pobierania wpisów z bazy.</p>');
  34. while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
  35. $elogin = $row['login'];
  36. $egrupa = $row['grupa'];
  37. $tab['login'] = $elogin;
  38. $tab['grupa'] = $egrupa;
  39. }
  40. return $tab;
  41. }


i zwraca mi coś takiego ;/

Array
(
[login] => Array
(
)

[grupa] => Array
(
)

)

Kod tutaj zawarty poprawiłem idziała jeżeliktoś będzie potrzebował smile.gif

wracając do tematu tabel i pomocy Randala smile.gif

dostaje coś takiego teraz insert into nazwa_tabeli (Id,Name,Surname) values (100,20,50,1000),(Test1,Test2,Test3,Test4),(Sur1,Sur2,Sur3,Sur4)

nie można tak zbudować foreach-ow żeby odpytywać te tablice i mieć kontrole co i w jakim miejscu jest tworzone questionmark.gifquestionmark.gif?

Ten post edytował ilidir 12.02.2015, 20:46:24
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: 13.06.2025 - 02:30