Jump to content
Sign in to follow this  
NunoDinis

Captar valores do array

Recommended Posts

NunoDinis

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 by apocsantos

Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
HappyHippyHippo

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

Share this post


Link to post
Share on other sites
NunoDinis

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

Share this post


Link to post
Share on other sites
NunoDinis

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 by apocsantos

Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
NunoDinis

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

Share this post


Link to post
Share on other sites
NunoDinis

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.