Foros del Web » Programando para Internet » PHP »

XML problemas al hacer un insert into a una BD de MySQl

Estas en el tema de XML problemas al hacer un insert into a una BD de MySQl en el foro de PHP en Foros del Web. 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. ...
  #1 (permalink)  
Antiguo 12/10/2012, 10:28
 
Fecha de Ingreso: octubre-2012
Mensajes: 1
Antigüedad: 11 años, 6 meses
Puntos: 0
XML problemas al hacer un insert into a una BD de MySQl

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");
}
}
?>
  #2 (permalink)  
Antiguo 12/10/2012, 10:32
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Respuesta: XML problemas al hacer un insert into a una BD de MySQl

Te recomiendo que dentro de la función die() del insert que estas realizando, agregues la funcion mysql_error()

Código PHP:
$resultfinal=mysql_query($consulta1,$conexion) or die(mysql_error()); 
Y de esta forma sepas el porque no se inserto la información.

Saludos.

Etiquetas: html, insert, mysql, registro, sql, tabla, xml, variables, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:46.