Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Senhores, olha eu aqui novamente.........rs
Tá complicado resolver algumas coisas..
bom, ainda tenho problemas ao inserir xml no banco. Desta vez trata-se de uma leitura de dados, tavez.
Por exemplo, no xml tenho várias fichas. Mas quando vou buscar uma tag no arquivo xml para inserir no banco, até insere, mas só insere a tag que tem dados.
Tipo:
tenho 50 fichas no xml. Cada ficha tem uma despesa. Pode ter N despesas. Sendo que só vai para o banco o 4 primeiros registros que o foreach encontra ou só vai parao banco as fichas que possuem a tag despesa preenchida.
Como aplico esse laço pra pegar todos os campos, independentemente se estiverem preenchidos ou não?
Alguém tem alguma ideia dessa lógica?
Diegus, agradeço pelo feedback.
Mas, sim, eu já coloquei o banco para aceitar valores nulos. Na verdade foi a primeira coisa que verifiquei.
Princípio básico...rs
Só postei porque as possibilidades do que eu conheço(que não é muita coisa) se esgotaram.
É, complicado, põe aqui o(s) código(s) responsável(is) por ler e salvar o xml.
Blz...vou disponibilizar ..abç
Vou postar o código do foreach e Insert:
$x = 0;
// neste pego o numero de fichas
foreach ($xml->prestadorParaOperadora->loteGuias->guiasTISS->{'guiaSP-SADT'} as $value ) {
$values[0] = "('".$value->cabecalhoGuia->numeroGuiaPrestador."')";
$values[1] = "('".$value->dadosSolicitacao->dataSolicitacao."')";
// neste pego todos os procedimentos da ficha acima
foreach ($value->procedimentosExecutados->procedimentoExecutado as $value2) {
$values[2] = "('".$value2->procedimento->codigoProcedimento."')";
$values[3] = "('".$value2->procedimento->descricaoProcedimento."')";
$values[4] = "('".$value2->procedimento->codigoTabela."')";
//neste tento pegar todas as despesas da ficha.
foreach ($value->outrasDespesas->despesa as $despesa){
$values[5] = "('".$despesa->servicosExecutados->descricaoProcedimento."')";
$sql .= implode(',', $values);
//var_dump($sql)."<br>";
$sql = "INSERT INTO tb_xml (numeroGuiaPrestador, dataSolicitacao, codigoProcedimento, descricaoProcedimento, codigoTabela, nome_xml, fk_usuario_sessao, data_cadastro, despProcedimento)VALUES(".$values[0].", ".$values[1].", ".$values[2].", ".$values[3].", ".$values[4].", '$nome', '$usuario_sessao', '$data_cadastro', ".$values[5].")";
mysql_query($sql) or exit(mysql_error());
}
}
$x++;
}
$f++;
}
Nesta linha:
foreach ($value->outrasDespesas->despesa as $despesa){
$values[5] = "('".$despesa->servicosExecutados->descricaoProcedimento."')";
é que ocorre o "problema". Quando eu a adiciono, o foreach só me retorna as tags que tem a linha acima preenchida, ou seja, se é pra eu ter 538 linhas no banco, passo a ter somente 66 linhas.
Conseguiu compreender......?
Tem alguma ideia do que ocorre?
Cara, pra pegar informações é foreach, agora tem que ver se o banco aceita valores nulos, porque se não aceitar, nenhum código que for feito no PHP vai resolver.