Hola, tengo que hacer una carga masiva de xmls...
un programa que los valide sintacticamente y los compare contra una distintas tablas de una BD.
Los que no pasen por este filtro... los saco enun xml de error.. eso lo sé y lo hice..
Tengo el problema al hacer el INSERT INTO en una tabla..
la tabla es.. pagos_alumnos
pagos_alumnos
(id_legajo (es autoincremental/autonumerico)
,id_oferta (FK)
,fecha_pago
,importe_cuota
,importe_mora
,nro_cuota
,id_recargo, (FK)
flags (esto se usa para dar de baja lógica un registro, es decir que está en la BD pero no se muestra)
,forma_pago
,Nro_tarjeta)
el código es el siguiente:
tml>
<head>
<title>
Carga Masiva de XML
</title>
</head>
<body>
<?php
/*linea en blanco*/
echo "<br></br>";
$pagos = new SimpleXMLElement('pagos.xml', null, true);
/* echo PRUEBA;*/
$usuario='root';
$huesped='localhost';
$clave='';
$basededatos='prog1';
$conexion=mysql_connect($huesped,$usuario,$clave) or die ("No se pudo conectar al servidor");
$bd = mysql_select_db($basededatos,$conexion) or die ("No se pudo seleccionar la base de datos");
?>
<table>
<tr>
<td align="center"> Id_oferta </td>
<td align="center"> Nro_cuota </td>
<td align="center"> Fecha_pago </td>
<td align="center"> Importe_cuota </td>
<td align="center"> Forma_pago </td>
<td align="center"> Nro_tarjeta </td>
</tr>
<?php
foreach ($pagos->PAGO as $pago)
{
echo "<tr>";
if ( (preg_match("/[0-9]+^$/",$pago->id_legajo)) ==1 )
{
$consulta= "SELECT id_legajo FROM alumnos WHERE ".$pago->id_legajo."=id_legajo";
$resultado=mysql_query($consulta,$conexion) or die("No se pudo realizar la consulta");
if( mysql_num_rows($resultado) >= 1)
{
echo "<td>";
echo $pago->id_legajo;
echo "</td>";
}
else
{
sacarxmlerror($pago);
continue;
}
}
else
{
sacarxmlerror($pago);
continue;
}
if( (preg_match("/^[0-9]+$/",$pago->id_oferta)) == 1 )
{
$consulta1= "SELECT id_oferta FROM oferta_horaria WHERE ".$pago->id_oferta."=id_oferta";
$resultado1=mysql_query($consulta1,$conexion) or die("No se pudo realizar la consulta del id_oferta del pago XML");
if( mysql_num_rows($resultado1) >= 1)
{
echo "<td>";
echo $pago->id_oferta;
echo "</td>";
}
else
{
sacarxmlerror($pago);
continue;
}
}
else
{
sacarxmlerror($pago);
continue;
}
if ( (preg_match("/^[1-5]$/",$pago->nro_cuota) ) == 1 )
{
echo "<td>";
echo $pago->nro_cuota;
echo "</td>";
}
else
{
sacarxmlerror($pago);
continue;
}
if ( (preg_match("/^\d{1,2}\/\d{1,2}\/\d{4}$/",$pago->fecha_pago) ) == 1 )
{
echo "<td>";
echo $pago->fecha_pago;
echo "</td>";
}
else
{
sacarxmlerror($pago);
continue;
}
if ( (preg_match("/^[0-9]+$/",$pago->importe_cuota) ) == 1 )
{
$query = "SELECT precio FROM oferta_horaria WHERE ".$pago->id_oferta."=id_oferta";
$resu = mysql_query($query,$conexion) or die("No se pudo realizar la consulta de seleccionar precio de of_hor del xml");
$fila = mysql_fetch_array($resu);
if ( $pago->importe_cuota == $fila[0])
{
echo "<td>";
echo $pago->importe_cuota;
echo "</td>";
}
else
{
sacarxmlerror($pago);
continue;
}
}
else
{
sacarxmlerror($pago);
continue;
}
if ( (preg_match("/^(Efectivo|EFECTIVO|efectivo|Tarjeta Debito|tarjeta debito|Tarjeta Credito| tarjeta credito)$/",$pago->forma_pago) ) == 1 )
{
echo "<td>";
echo $pago->forma_pago;
echo "</td>";
}
else
{
sacarxmlerror($pago);
continue;
}
if ( (preg_match("/^[0-9]*$/",$pago->nro_tarjeta) ) == 1 )
{
echo "<td>";
echo $pago->nro_tarjeta;
echo "</td>";
}
else
{
sacarxmlerror($pago);
continue;
}
$id_recargo=0;
$flag=0;
$queryfinal= "INSERT INTO pagos_alumnos (id_legajo,id_oferta,fecha_pago,importe_cuota,impo rte_mora,nro_cuota,id_recargo,flags,forma_pago,Nro _tarjeta) VALUES ('". $pago->id_legajo ."','". $pago->id_oferta ."','". $pago->fecha_pago ."','". $pago->importe_cuota ."','". $pago->importe_cuota ."','". $pago->nro_cuota ."','". $id_recargo ."','". $flag ."','". $pago->forma_pago ."','". $pago->nro_tarjeta ."')";
$resultfinal=mysql_query($consulta1,$conexion) or die("No se pudo realizar el alta del registro en la tabla pagos_alumnos");
echo "</tr>";
}
?>
</table>
</body>
</html>
<?php
function sacarxmlerror($pago)
{
$ubicacion="xmlerrores.xml";
$xml = fopen($ubicacion,"a+");
static $variable=1;
if (!$xml)
{
echo "No se pudo abrir el archivo XML.";
exit;
}
if($variable == 1)
{
fwrite($xml,'<?xml version="1.0" enconding="utf-8"'.'?'.'>');
fwrite($xml,"\n");
$variable++;
}
fwrite($xml,'<ERRORES> ');
fwrite($xml,"\n");
fwrite($xml,' <ERROR> ');
fwrite($xml,"\n");
fwrite($xml,' <id_alumno>'.$pago->id_legajo.'</id_alumno>');
fwrite($xml,"\n");
fwrite($xml,' <id_oferta>'.$pago->id_oferta.'</id_oferta>');
fwrite($xml,"\n");
fwrite($xml,' <nro_cuota>'.$pago->nro_cuota.'</nro_cuota>');
fwrite($xml,"\n");
fwrite($xml,' <fecha_pago>'.$pago->fecha_pago.'</fecha_pago>');
fwrite($xml,"\n");
fwrite($xml,' <importe_cuota>'.$pago->importe_cuota.'</importe_cuota>');
fwrite($xml,"\n");
fwrite($xml,' <forma_pago>'.$pago->forma_pago.'</forma_pago>');
fwrite($xml,"\n");
fwrite($xml,' <nro_tarjeta>'.$pago->nro_tarjeta.'</nro_tarjeta>');
fwrite($xml,"\n");
fwrite($xml,' <id_error>'."falta hacer esta parte".'</id_error>');
fwrite($xml,"\n");
fwrite($xml,' <descripcion_error>'."falta hacer esta parte".'</descripcion_error>');
fwrite($xml,"\n");
fwrite($xml,' </ERROR>');
fwrite($xml,"\n");
fwrite($xml,'</ERRORES>');
fwrite($xml,"\n");
if ( fclose($xml))
{
//echo "Archivo escrito con exito";
}
else
{
exit ("Error escribiendo el XML");
}
}
?>