sjscosta 0 Denunciar post Postado Maio 6, 2009 Ola pessoal, Estou tendo um probleminha com meu webservices... é o seguinte o cliente mostra apenas o ultimo registo introduzido na tabela books. Alguém me pode explicar o que está a acontecer.... Obrigado SERVER.PHP <?php //call library require_once ('nusoap.php'); //using soap_server to create server object $server = new soap_server; //register a function that works on server $server->register('getallbook'); // create the function function getallbook() { $conn = mysql_connect('localhost','root','pass'); $link = mysql_select_db('testedb', $conn); $sql = "SELECT * FROM book"; $q = mysql_query($sql); $num = mysql_num_rows($q); while($r = mysql_fetch_array($q)){ $items = array('cd'=>$r['cd'], 'title'=>$r['title'], 'author'=>$r['author'], 'publisher'=>$r['publisher']); } return $items; } // create HTTP listener $server->service($HTTP_RAW_POST_DATA); exit(); ?> CLIENTE.PHP <?php require_once ('nusoap.php'); $client = new soapclient('http://localhost/webservices/server.php'); $response = $client->call('getallbook'); if($client->fault) { echo "FAULT: <p>Code: (".$client->faultcode.")</p>"; echo "String: ".$client->faultstring; } else { $r = $response; $count = count($r); ?> <table border="1"> <tr> <th>Code</th> <th>Title</th> <th>Author</th> <th>Publisher</th> </tr> <?php for($i=0;$i<=$count-1;$i++){ ?> <tr> <td><?php echo $r['cd']?></td> <td><?php echo $r['title']?></td> <td><?php echo $r['author']?></td> <td><?php echo $r['publisher']?></td> </tr> <?php } ?> </table> <?php } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Maio 6, 2009 Você está recriando a variável a cada iteração: while($r = mysql_fetch_array($q)){ $items = array('cd'=>$r['cd'], 'title'=>$r['title'], 'author'=>$r['author'], 'publisher'=>$r['publisher']); } Compartilhar este post Link para o post Compartilhar em outros sites
sjscosta 0 Denunciar post Postado Maio 7, 2009 Então como devo fazer? Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Maio 7, 2009 Criar um array, por exemplo: while($r = mysql_fetch_array($q)){ $items[] = array('cd'=>$r['cd'], 'title'=>$r['title'], 'author'=>$r['author'], 'publisher'=>$r['publisher']); } Compartilhar este post Link para o post Compartilhar em outros sites
sjscosta 0 Denunciar post Postado Maio 8, 2009 com a soloção que apresentas-te eu obtenho : Notice: Undefined index: cd in cliente.php on line 32 Notice: Undefined index: title in cliente.php on line 33 Notice: Undefined index: author in cliente.php on line 34 Notice: Undefined index: publisher in cliente.php on line 35 Como faço para resolver? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Maio 8, 2009 Você tem que testar, imprimir o retorno pra ver o que está recebendo. Como você mecheu na estrutura do array original, as chaves já não estão iguais. Dica: use print_r pra imprimir arrays. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Maio 8, 2009 Só complementando a dica do Marcio, para facilitar a visualização, use <pre> antes e </pre> depois do print_r, pois fica ainda mais fácil de enxergar o array, principalmente se for de diversos níveis. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites