NunoDinis Posted December 19, 2012 at 03:24 PM Report #487804 Posted December 19, 2012 at 03:24 PM (edited) Boa tarde, Estou a ler os dados de um software (SAP) que provêm do mesmo em forma de array. O código que estou a utilizar para ler todas as posições é este: $result = $client->ZrrWsComunicaArquivo($params); foreach ($result->OutGestArquivo->item as $row) { echo $row; } Esta é o array que retorna no browser. stdClass Object ( [OutGestArquivo] => stdClass Object ( [item] => stdClass Object ( [Mandt] => 200 [Artigo] => MP000001 [Descricao] => MATERIAL 1 [GrpMerc] => 7550 [GrpMercDes1] => PENTES ) ) [PStatus] => 0 ) Porém, quando tenho mais do que um array de registos dá-me este erro: Warning: Invalid argument supplied for foreach() in G:\xampp\htdocs\ws_app3\get-values\exemploTabela.php on line 114 A linha 114 é foreach, em que OutGestArquivo é a tabela onde vai buscar os registos em SAP. $result = $client->ZrrWsComunicaArquivo($params); foreach ($result->OutGestArquivo->item as $row) { echo $row; } O que poderei estar a fazer errado, visto que para um registo funciona, mas para mais do que um não? Edited December 23, 2012 at 02:03 PM by apocsantos Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
HappyHippyHippo Posted December 19, 2012 at 03:51 PM Report #487807 Posted December 19, 2012 at 03:51 PM executa este código para saber o que estás a tentar interpretar como um array (para o caso que dá erro claro): print_r($result->OutGestArquivo->item); e isso terá de ser um array ... se não for, verifica o que é para se tentar decidir o que fazer IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
NunoDinis Posted December 19, 2012 at 04:13 PM Author Report #487809 Posted December 19, 2012 at 04:13 PM Para o caso que funciona bem, retorna isto: stdClass Object ( [Mandt] => 200 [Artigo] => MP000001 [Descricao] => MATERIAL 1 [GrpMerc] => 7550 [GrpMercDes1] => PENTES [GrpMercDes2] => [Peso] => 000 [Peso1] => [HierCode] => [HierN1Code] => [HierN1Des] => [HierN2Code] => [HierN2Des] => [HierN3Code] => [HierN3Des] => [HierN4Code] => [HierN4Des] => [Composicao] => [CompCo] => [Tela] => [CompPl] => [CompPa] => [CompEa] => [CompVi] => [CompCu] => [CompRay] => [CompWo] => [CompLi] => [CompWa] => [CompSe] => [CompPc] => [CompMo] => [CompLy] => [CompCa] => [CompInox] => [CompPva] => [CompAc] => [CompWm] => [CompTe] => [CompRa] => [CompJu] => [CompBamboo] => [TipoTecido] => [PontoBase] => [DesenhoTecido] => [TipoElastic] => [Obs] => [urlImage] => [inactivo] => N [DataCri] => 2012-12-18 [HoraCri] => 14:00:13 [usrCri] => matos [DataAlt] => 0000-00-00 [HoraAlt] => 00:00:00 [usrAlt] => [CompCo1] => [CompPl1] => [CompPa1] => [CompEa1] => [CompVi1] => [CompCu1] => [CompRay1] => [CompWo1] => [CompLi1] => [CompWa1] => [CompSe1] => [CompPc1] => [CompMo1] => [CompLy1] => [CompCa1] => [CompInox1] => [CompPva1] => [CompAc1] => [CompWm1] => [CompTe1] => [CompRa1] => [CompJu1] => [CompBamboo1] => ) Mas para o caso que dá mal eu nem consigo testar, porque diz logo isto: Warning: Invalid argument supplied for foreach() in G:\xampp\htdocs\ws_app3\get-values\exemploTabela.php on line 114 stdClass Object ( [OutGestArquivo] => stdClass Object ( ) [PStatus] => 1 ) Eu creio que a fazer uma boa interpretação do problema, caso contrário, nem com um funcionava. Certo é que alguma coisa falta... Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
HappyHippyHippo Posted December 19, 2012 at 04:34 PM Report #487811 Posted December 19, 2012 at 04:34 PM o problema parece ser antes do elemento apontado. testa este: print_r($result); IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
NunoDinis Posted December 20, 2012 at 09:11 AM Author Report #487904 Posted December 20, 2012 at 09:11 AM (edited) Olá Happy, Assim já retorna todos os dados. stdClass Object ( [OutGestArquivo] => stdClass Object ( [item] => Array ( [0] => stdClass Object ( [Mandt] => 200 [Artigo] => TC0114 [Descricao] => E 215G72373 [GrpMerc] => 5015 [GrpMercDes1] => TECIDO - GRP COR TP [GrpMercDes2] => TECIDO - GRP COR TINTO PEÇA [Peso] => 225 [Peso1] => [HierCode] => 100120013005400561 [HierN1Code] => 1001 [HierN1Des] => 100% ALGODÃO [HierN2Code] => 2001 [HierN2Des] => LISO [HierN3Code] => 3005 [HierN3Des] => ALGODOES PESADOS [HierN4Code] => 400561 [HierN4Des] => LIMA [Composicao] => 100% CO [CompCo] => 100,00 % [Tela] => TL0053 [CompPl] => [CompPa] => [CompEa] => [CompVi] => [CompCu] => [CompRay] => [CompWo] => [CompLi] => [CompWa] => [CompSe] => [CompPc] => [CompMo] => [CompLy] => [CompCa] => [CompInox] => [CompPva] => [CompAc] => [CompWm] => [CompTe] => [CompRa] => [CompJu] => [CompBamboo] => [TipoTecido] => CETINS [PontoBase] => CETIM 5 [DesenhoTecido] => LISOS [TipoElastic] => SEM ELASTICIDADE [Obs] => [urlImage] => http://srvsapportal.riopele.pt:50000/irj/go/km/docs/documents/Arquivo/TC0114.jpg [inactivo] => N [DataCri] => 2010-03-24 [HoraCri] => 15:10:40 [usrCri] => MATOS [DataAlt] => 2010-11-19 [HoraAlt] => 17:02:54 [usrAlt] => MATOS [CompCo1] => [CompPl1] => [CompPa1] => [CompEa1] => [CompVi1] => [CompCu1] => [CompRay1] => [CompWo1] => [CompLi1] => [CompWa1] => [CompSe1] => [CompPc1] => [CompMo1] => [CompLy1] => [CompCa1] => [CompInox1] => [CompPva1] => [CompAc1] => [CompWm1] => [CompTe1] => [CompRa1] => [CompJu1] => [CompBamboo1] => ) [1] => stdClass Object ( [Mandt] => 200 [Artigo] => TC0450 [Descricao] => W 0395 [GrpMerc] => 5015 [GrpMercDes1] => TECIDO - GRP COR TP [GrpMercDes2] => TECIDO - GRP COR TINTO PEÇA [Peso] => 110 [Peso1] => [HierCode] => 100120013004400556 [HierN1Code] => 1001 [HierN1Des] => 100% ALGODÃO [HierN2Code] => 2001 [HierN2Des] => LISO [HierN3Code] => 3004 [HierN3Des] => ALGODOES LIGEIROS [HierN4Code] => 400556 [HierN4Des] => LIGERO [Composicao] => 100% CO [CompCo] => 100,00 % [Tela] => TL0017 [CompPl] => [CompPa] => [CompEa] => [CompVi] => [CompCu] => [CompRay] => [CompWo] => [CompLi] => [CompWa] => [CompSe] => [CompPc] => [CompMo] => [CompLy] => [CompCa] => [CompInox] => [CompPva] => [CompAc] => [CompWm] => [CompTe] => [CompRa] => [CompJu] => [CompBamboo] => [TipoTecido] => TAFETAS [PontoBase] => TAFETÃ? SIMPLES [DesenhoTecido] => LISOS [TipoElastic] => SEM ELASTICIDADE [Obs] => [urlImage] => http://srvsapportal.riopele.pt:50000/irj/go/km/docs/documents/Arquivo/TC0450.jpg [inactivo] => N [DataCri] => 2010-03-24 [HoraCri] => 15:13:59 [usrCri] => MATOS [DataAlt] => 2010-03-24 [HoraAlt] => 15:14:02 [usrAlt] => MATOS [CompCo1] => [CompPl1] => [CompPa1] => [CompEa1] => [CompVi1] => [CompCu1] => [CompRay1] => [CompWo1] => [CompLi1] => [CompWa1] => [CompSe1] => [CompPc1] => [CompMo1] => [CompLy1] => [CompCa1] => [CompInox1] => [CompPva1] => [CompAc1] => [CompWm1] => [CompTe1] => [CompRa1] => [CompJu1] => [CompBamboo1] => ) Pus só dois para veres a forma, são bastantes. Já dá outro erro. Quando vou a por um valor numa tabela dá este erro: Catchable fatal error : Object of class stdClass could not be converted to string in G:\xampp\htdocs\ws_app3\Teste.php on line 224 Linha 224 - > <td width="10%" class="style1"><?php echo $Artigo; ?></td> (( $Artigo=$arr[1]; )) Refiro que a tabela é passada como parametro noutro array. Posto o código para que possas entender melhor: $x[] = array('Mandt' => "200", 'Artigo' => $_POST['artigo'], 'Descricao' => "", 'GrpMerc' => "", 'GrpMercDes1' => "", 'GrpMercDes2' => "", 'Peso' => "", 'Peso1' => "", 'HierCode' => "", 'HierN1Code' => "", 'HierN1Des' => "", 'HierN2Code' => "", 'HierN2Des' => "", 'HierN3Code' => "", 'HierN3Des' => "", 'HierN4Code' => "", 'HierN4Des' => "", 'Composicao' => "", 'CompCo' => "", 'Tela' => "", 'CompPl' => "", 'CompPa' => "", 'CompEa' => "", 'CompVi' => "", 'CompCu' => "", 'CompRay' => "", 'CompWo' => "", 'CompLi' => "", 'CompWa' => "", 'CompSe' => "", 'CompPc' => "", 'CompMo' => "", 'CompLy' => "", 'CompCa' => "", 'CompInox' => "", 'CompPva' => "", 'CompAc' => "", 'CompWm' => "", 'CompTe' => "", 'CompRa' => "", 'CompJu' => "", 'CompBamboo' => "", 'TipoTecido' => "", 'PontoBase' => "", 'DesenhoTecido' => "", 'TipoElastic' => "", 'Obs' => "", 'UrlImage' => "", 'Inactivo' => "", 'DataCri' => "", 'HoraCri' => "", 'UsrCri' => "", 'DataAlt' => "", 'HoraAlt' => "", 'UsrAlt' => "", 'CompCo1' => "", 'CompPl1' => "", 'CompPa1' => "", 'CompEa1' => "", 'CompVi1' => "", 'CompCu1' => "", 'CompRay1' => "", 'CompWo1' => "", 'CompLi1' => "", 'CompWa1' => "", 'CompSe1' => "", 'CompPc1' => "", 'CompMo1' => "", 'CompLy1' => "", 'CompCa1' => "", 'CompInox1' => "", 'CompPva1' => "", 'CompAc1' => "", 'CompWm1' => "", 'CompTe1' => "", 'CompRa1' => "", 'CompJu1' => "", 'CompBamboo1' => ""); #Setup input parameters (SAP Likes to Capitalise the parameter names) $params = array('OutGestArquivo' => $x, 'PAccao' => "C", 'PMatnr' => "M", 'PObs' => "obs", 'PUrlImg' => "nnn", 'PUser' => "matos", 'PStatus' => "" ); Edited December 23, 2012 at 02:04 PM by apocsantos Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
yoda Posted December 22, 2012 at 06:12 PM Report #488112 Posted December 22, 2012 at 06:12 PM (edited) Object of class stdClass could not be converted to string Estás a tentar imprimir o objecto como string. echo $row->Artigo Edited December 22, 2012 at 06:12 PM by yoda before you post, what have you tried? - http://filipematias.info sense, purpose, direction
NunoDinis Posted December 23, 2012 at 12:13 AM Author Report #488133 Posted December 23, 2012 at 12:13 AM Não funciona, ou melhor, funciona quando tenho vários arrays de registos. Quando retorno apenas um não, o que é estranho. Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
yoda Posted December 23, 2012 at 03:41 AM Report #488144 Posted December 23, 2012 at 03:41 AM Então só tens de verificar isso, não? Faz um count() ou algo similar. before you post, what have you tried? - http://filipematias.info sense, purpose, direction
NunoDinis Posted December 23, 2012 at 12:55 PM Author Report #488159 Posted December 23, 2012 at 12:55 PM Agora sim, mas na altura em que postei não funcionava era nada.. Quando o fizer, dou feedback, obrigado. Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now