Buenas
a ver si alguno de vosotros me saca del atolladero en el que estoy.
tengo el siguiente fichero xml
Código:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by Oracle Reports version 11.1.2.2.0 -->
<REPARTOS_R_SB>
<LIST_G_REPARTO>
<G_REPARTO>
<CRC_EMPRESA>1</CRC_EMPRESA>
<CRC_NUMERO_REPARTO>42916</CRC_NUMERO_REPARTO>
<CRC_CENTRO>DM01</CRC_CENTRO>
<ESTADO>ABIERTO</ESTADO>
<CRC_AGENCIA_TRANSPORTE>999</CRC_AGENCIA_TRANSPORTE>
<CRC_FECHA_REPARTO>04/07/18</CRC_FECHA_REPARTO>
<AGENCIA_TRANSPORTE>999 - SERVIRUTA</AGENCIA_TRANSPORTE>
<CENTRO>DM01 - NOMBRE DEL CENTRO</CENTRO>
<LIST_G_ALBARANES>
<G_ALBARANES>
<CRD_NOALB_D_POSTAL></CRD_NOALB_D_POSTAL>
<CRD_NOALB_NOMBRE></CRD_NOALB_NOMBRE>
<CRD_NOALB_DIRECCION></CRD_NOALB_DIRECCION>
<CRD_NOALB_POBLACION></CRD_NOALB_POBLACION>
<CRD_NOALB_PROVINCIA></CRD_NOALB_PROVINCIA>
<CRD_NOALB_TELEFONO></CRD_NOALB_TELEFONO>
<MODALIDAD>ENTREGA</MODALIDAD>
<CRD_TIPO_REPARTO>A</CRD_TIPO_REPARTO>
<CRD_OBSERVACIONES></CRD_OBSERVACIONES>
<CRD_BULTOS>1</CRD_BULTOS>
<CRD_MOTIVO_FALLO></CRD_MOTIVO_FALLO>
<CRD_CLIENTE_PROVEEDOR>70227080</CRD_CLIENTE_PROVEEDOR>
<CRD_DOCUMENTO>70157296</CRD_DOCUMENTO>
<CRD_EMPRESA>1</CRD_EMPRESA>
<CRD_NUMERO_REPARTO>42916</CRD_NUMERO_REPARTO>
<CRD_ORDEN_REPARTO>5</CRD_ORDEN_REPARTO>
<CRD_EJERCICIO>2018</CRD_EJERCICIO>
<CRD_ESTADO>en Curso</CRD_ESTADO>
<CP_NOMBRE>cliente1</CP_NOMBRE>
<CP_NOMBRE_OBRA>CLIENTE 1</CP_NOMBRE_OBRA>
<CP_DIRECCION>DIRECCION 1</CP_DIRECCION>
<CP_POBLACION>45517 - ESCALONILLA</CP_POBLACION>
<CP_PROVINCIA>TOLEDO</CP_PROVINCIA>
<CP_TELEFONO>Telf. 666666666</CP_TELEFONO>
<CP_FECHA_DOCUMENTO>04/07/18</CP_FECHA_DOCUMENTO>
<CP_IMPORTE_ALBARAN>1965,6</CP_IMPORTE_ALBARAN>
<CF_DATOS_POR_DOCUMENTO>0</CF_DATOS_POR_DOCUMENTO>
<CP_PKLIST></CP_PKLIST>
<CP_CENTRO>DM02 - CENTRO1</CP_CENTRO>
</G_ALBARANES>
<G_ALBARANES>
<CRD_NOALB_D_POSTAL></CRD_NOALB_D_POSTAL>
<CRD_NOALB_NOMBRE></CRD_NOALB_NOMBRE>
<CRD_NOALB_DIRECCION></CRD_NOALB_DIRECCION>
<CRD_NOALB_POBLACION></CRD_NOALB_POBLACION>
<CRD_NOALB_PROVINCIA></CRD_NOALB_PROVINCIA>
<CRD_NOALB_TELEFONO></CRD_NOALB_TELEFONO>
<MODALIDAD>ENTREGA</MODALIDAD>
<CRD_TIPO_REPARTO>A</CRD_TIPO_REPARTO>
<CRD_OBSERVACIONES></CRD_OBSERVACIONES>
<CRD_BULTOS>6</CRD_BULTOS>
<CRD_MOTIVO_FALLO></CRD_MOTIVO_FALLO>
<CRD_CLIENTE_PROVEEDOR>70200059</CRD_CLIENTE_PROVEEDOR>
<CRD_DOCUMENTO>70157271</CRD_DOCUMENTO>
<CRD_EMPRESA>1</CRD_EMPRESA>
<CRD_NUMERO_REPARTO>42916</CRD_NUMERO_REPARTO>
<CRD_ORDEN_REPARTO>10</CRD_ORDEN_REPARTO>
<CRD_EJERCICIO>2018</CRD_EJERCICIO>
<CRD_ESTADO>en Curso</CRD_ESTADO>
<CP_NOMBRE>CLIENTE 2</CP_NOMBRE>
<CP_NOMBRE_OBRA>CLIENTE 2</CP_NOMBRE_OBRA>
<CP_DIRECCION>DIRECCION 2</CP_DIRECCION>
<CP_POBLACION>45500 - TORRIJOS</CP_POBLACION>
<CP_PROVINCIA>TOLEDO</CP_PROVINCIA>
<CP_TELEFONO>Telf. 666666666</CP_TELEFONO>
<CP_FECHA_DOCUMENTO>04/07/18</CP_FECHA_DOCUMENTO>
<CP_IMPORTE_ALBARAN>210,49</CP_IMPORTE_ALBARAN>
<CF_DATOS_POR_DOCUMENTO>0</CF_DATOS_POR_DOCUMENTO>
<CP_PKLIST></CP_PKLIST>
<CP_CENTRO>DM02 - CENTRO2</CP_CENTRO>
</G_ALBARANES>
<G_ALBARANES>
<CRD_NOALB_D_POSTAL></CRD_NOALB_D_POSTAL>
<CRD_NOALB_NOMBRE></CRD_NOALB_NOMBRE>
<CRD_NOALB_DIRECCION></CRD_NOALB_DIRECCION>
<CRD_NOALB_POBLACION></CRD_NOALB_POBLACION>
<CRD_NOALB_PROVINCIA></CRD_NOALB_PROVINCIA>
<CRD_NOALB_TELEFONO></CRD_NOALB_TELEFONO>
<MODALIDAD>ENTREGA</MODALIDAD>
<CRD_TIPO_REPARTO>A</CRD_TIPO_REPARTO>
<CRD_OBSERVACIONES>S/Ref:T/210</CRD_OBSERVACIONES>
<CRD_BULTOS>1</CRD_BULTOS>
<CRD_MOTIVO_FALLO></CRD_MOTIVO_FALLO>
<CRD_CLIENTE_PROVEEDOR>70200754</CRD_CLIENTE_PROVEEDOR>
<CRD_DOCUMENTO>70157268</CRD_DOCUMENTO>
<CRD_EMPRESA>1</CRD_EMPRESA>
<CRD_NUMERO_REPARTO>42916</CRD_NUMERO_REPARTO>
<CRD_ORDEN_REPARTO>15</CRD_ORDEN_REPARTO>
<CRD_EJERCICIO>2018</CRD_EJERCICIO>
<CRD_ESTADO>en Curso</CRD_ESTADO>
<CP_NOMBRE>CLIENTE 3</CP_NOMBRE>
<CP_NOMBRE_OBRA>CLIENTE 3</CP_NOMBRE_OBRA>
<CP_DIRECCION>DIRECCION 3</CP_DIRECCION>
<CP_POBLACION>45500 - TORRIJOS</CP_POBLACION>
<CP_PROVINCIA>TOLEDO</CP_PROVINCIA>
<CP_TELEFONO>Telf. 666666666</CP_TELEFONO>
<CP_FECHA_DOCUMENTO>04/07/18</CP_FECHA_DOCUMENTO>
<CP_IMPORTE_ALBARAN>22,71</CP_IMPORTE_ALBARAN>
<CF_DATOS_POR_DOCUMENTO>0</CF_DATOS_POR_DOCUMENTO>
<CP_PKLIST></CP_PKLIST>
<CP_CENTRO>DM02 - CENTRO 3</CP_CENTRO>
</G_ALBARANES>
<G_ALBARANES>
<CRD_NOALB_D_POSTAL></CRD_NOALB_D_POSTAL>
<CRD_NOALB_NOMBRE></CRD_NOALB_NOMBRE>
<CRD_NOALB_DIRECCION></CRD_NOALB_DIRECCION>
<CRD_NOALB_POBLACION></CRD_NOALB_POBLACION>
<CRD_NOALB_PROVINCIA></CRD_NOALB_PROVINCIA>
<CRD_NOALB_TELEFONO></CRD_NOALB_TELEFONO>
<MODALIDAD>ENTREGA</MODALIDAD>
<CRD_TIPO_REPARTO>A</CRD_TIPO_REPARTO>
<CRD_OBSERVACIONES>S/Ref:718183</CRD_OBSERVACIONES>
<CRD_BULTOS>1</CRD_BULTOS>
<CRD_MOTIVO_FALLO></CRD_MOTIVO_FALLO>
<CRD_CLIENTE_PROVEEDOR>70300240</CRD_CLIENTE_PROVEEDOR>
<CRD_DOCUMENTO>70157265</CRD_DOCUMENTO>
<CRD_EMPRESA>1</CRD_EMPRESA>
<CRD_NUMERO_REPARTO>42916</CRD_NUMERO_REPARTO>
<CRD_ORDEN_REPARTO>20</CRD_ORDEN_REPARTO>
<CRD_EJERCICIO>2018</CRD_EJERCICIO>
<CRD_ESTADO>en Curso</CRD_ESTADO>
<CP_NOMBRE>CLIENTE 4</CP_NOMBRE>
<CP_NOMBRE_OBRA>718183</CP_NOMBRE_OBRA>
<CP_DIRECCION>DIRECCION 4</CP_DIRECCION>
<CP_POBLACION>CLIENTE 4</CP_POBLACION>
<CP_PROVINCIA>MADRID</CP_PROVINCIA>
<CP_TELEFONO>Telf. 666666666</CP_TELEFONO>
<CP_FECHA_DOCUMENTO>04/07/18</CP_FECHA_DOCUMENTO>
<CP_IMPORTE_ALBARAN>56,27</CP_IMPORTE_ALBARAN>
<CF_DATOS_POR_DOCUMENTO>0</CF_DATOS_POR_DOCUMENTO>
<CP_PKLIST></CP_PKLIST>
<CP_CENTRO>DM03 - CENTRO 4</CP_CENTRO>
</G_ALBARANES>
</LIST_G_ALBARANES>
<CS_TOT_DOC>39</CS_TOT_DOC>
<CF_TOT_DIR>23</CF_TOT_DIR>
<CS_TOT_BULTOS>53</CS_TOT_BULTOS>
<CS_TOT_IMPORTE>10742,56</CS_TOT_IMPORTE>
</G_REPARTO>
</LIST_G_REPARTO>
<PIE> Informe generado por AMIGUELANEZ el 06/07/18 09:09:28</PIE>
</REPARTOS_R_SB>
y lo importo mediante el siguiente codigo
Código PHP:
<?php
//import.php
//sleep(3);
$output = '';
if(isset($_FILES['file']['name']) && $_FILES['file']['name'] != '')
{
$valid_extension = array('xml');
$file_data = explode('.', $_FILES['file']['name']);
$file_extension = end($file_data);
if(in_array($file_extension, $valid_extension))
{
$data = simplexml_load_file($_FILES['file']['tmp_name']);
$connect = new PDO('mysql:host=localhost;dbname=testing','root', '');
$query = "
INSERT INTO envio
(expedi, codigo, consigna, domicilio, provin, bultos, tipo, observ, telefono, enviado, fecha1)
VALUES(:expedi,:codigo,:consigna,:domicilio,:provin,:bultos,:tipo,:observ,:telefono,:enviado, curdate());
";
$statement = $connect->prepare($query);
for($i = 0; $i < count($data); $i++)
{
$statement->execute(
array(
':expedi' => substr($data->LIST_G_REPARTO->G_REPARTO->LIST_G_ALBARANES->G_ALBARANES[$i]->CRD_DOCUMENTO,2),
':codigo' => "122",
':consigna' => $data->LIST_G_REPARTO->G_REPARTO->LIST_G_ALBARANES->G_ALBARANES[$i]->CP_NOMBRE_OBRA,
':domicilio'=> $data->LIST_G_REPARTO->G_REPARTO->LIST_G_ALBARANES->G_ALBARANES[$i]->CP_DIRECCION,
':provin' => $data->LIST_G_REPARTO->G_REPARTO->LIST_G_ALBARANES->G_ALBARANES[$i]->CP_PROVINCIA,
':bultos' => $data->LIST_G_REPARTO->G_REPARTO->LIST_G_ALBARANES->G_ALBARANES[$i]->CRD_BULTOS,
':tipo' => "P",
':observ' => $data->LIST_G_REPARTO->G_REPARTO->LIST_G_ALBARANES->G_ALBARANES[$i]->CRD_OBSERVACIONES,
':telefono' => substr($data->LIST_G_REPARTO->G_REPARTO->LIST_G_ALBARANES->G_ALBARANES[$i]->CP_TELEFONO,6),
':enviado' => "N"
)
);
}
$result = $statement->fetchAll();
if(isset($result))
{
$output = '<div class="alert alert-success">Import Data Done</div>';
}
}
else
{
$output = '<div class="alert alert-warning">Invalid File</div>';
}
}
else
{
$output = '<div class="alert alert-warning">Please Select XML File</div>';
}
echo $output;
?>
y mo problema radica en que sólo me importa dos registros, cliente 1 y cliente 2
Si hago un debugger con netbeans me da que el valor de $data el 2, y no soy capaz de hacer que recorra todo el fichero.
Sin embargo si quito nodos, y dejo el xml solo con las etiquetas <list_g_albaranes> y <g_albaranes> si me recorre todo el fichero.
Sabeis que puede ser?
Un saludo