Ayuda con insert

Hola nuevamente... Espero no descartes mi pregunta porque el código que expondré es un poco largo pero el problema que tengo no es complicado pero no he logrado encontrar la falla. Todo este código lo he logrado gracias a personas como tu que me han ayudado con un pequeño emujon en esto del aprendizaje de php, de quenes estaré eternamente agradecida.
El problema es que debo guardar datos en 2 tablas... En el primer insert guarda la info en la tabla notavtas y guardo el id en una variable... Luego en un bucle for genero las cuotas de la ventas o crédito y utilizo la variable con el id de la primera consulta... El problema es que solo me guarda información en la primera tabla y no en la segunda... Y los mysql_error no me indican nada... Aquí va el código...
<?php
$db=mysql_pconnect("localhost","uno","1234");
if (!$db) 
{
echo "Error en conexion a la BD";
exit;

mysql_select_db("prueba", $db); 
$i=0;
ini_set('display_errors' , 1 );
error_reporting(E_ALL);
function sumaDia($fecha,$dia,$cont)
{
list($day,$mon,$year) = explode('/',$fecha);
    if ( $mon == 2 )
    {
    }
    return date('d/m/Y',mktime(0,0,0,$mon + $cont ,0,$year));
}
$fechavta=$txtfecha;
$fechavta = explode('/',$fechavta);
$fechavta = $fechavta[2] . '-' . $fechavta[1] . '-' . $fechavta[0]; 
$fechavenc = $_POST['txtvencim']; 
$fechavenc = explode('/', $fechavenc);
$fechavenc = $fechavenc[2] . '-' . $fechavenc[1] . '-' . $fechavenc[0]; 
$consulta1="INSERT INTO notavta2 (numntavta,fechavta,rutcli,dv,nomcli,apecli,dircli,ciucli,fono,vendedor,clasevh,marcavh,modelvh,aniovh,colorvh,patentevh,valor,pie,saldo,tipodoc,tranfer,gastos,prenda,monto_finan,cantcuotas,valor_cuota,vencicuota,tasa,obs) VALUES ('$_POST[txtnotavta]','$fechavta','$_POST[txtrut]','$_POST[txtdv]','$_POST[txtnombre]','$_POST[txtape]','$_POST[txtdir]','$_POST[txtciud]','$_POST[txtfono]','$_POST[txtvend]','$_POST[txtclase]','$_POST[txtmarca]','$_POST[txtmodelo]','$_POST[txtanio]','$_POST[txtcolor]','$_POST[txtpatente]','$_POST[txtvalor]','$_POST[txtpie]','$_POST[txtsaldo]','$_POST[txtdocu]','$_POST[txttransf]','$_POST[txtgastos]','$_POST[txtprenda]','$_POST[txtcredito]','$_POST[txtcuotas]','$_POST[txtvalcuota]','$fechavenc','$_POST[txttasa]','$_POST[txtobs]')"; 
$id_nota=mysql_insert_id();
$resultado1 = mysql_query($consulta1); 
if (!$resultado1) { die('Invalid query: ' . Mysql_error());} 
for ($i=1;$i<=$txtcuotas;$i++)
{
$fecha=sumaDia($txtvencim,30, $i);
if(strlen($fecha) == 10){ 
            $day = substr($fecha, 0,2); 
            $month = substr($fecha,3,2); 
            $year = substr($fecha, 6,4); 
        } 
        $day = ((int) $day < 9) ? '0' . $day : $day ; 
        $fecha2=($year."/".$month."/".$day);
$intcuota=$txtcredito*$txttasa/100;
$cappagado=$txtvalcuota-$intcuota;
$valresi=$txtcredito-$cappagado;
$txtcredito=$valresi;
$consulta2="INSERT INTO cuotas (idnotavta,numcuota,fec_venc,cap_insol,val_cuota,int_cuota,cap_pagado,deuda_resi,id_status_cuota) VALUES ('$id_nota','$i','$fecha2','$_POST[txtcredito]','$_POST[txtvalcuota]','$intcuota','$cappagado','$valresi','2')"; 
echo $consulta2;
$resultado2 = mysql_query($consulta2); 
if (!$resultado2) { die('Invalid query: ' . Mysql_error());} 
}
?>
Si el código de los insert los ejecuto por separado, funcionan perfectamente, excepto si en el segundo insert no considero el id de la nota de venta...
Espero puedas ayudarme en esto una vez más...
Atenta a tus comentarios...;)
Respuesta
1
Lo siento, en otro momento te ayudo emily, disculpa no poder hacerlo.

2 respuestas más de otros expertos

Respuesta
1
Después de tu larga pregunta menos mal que me diste una pista de que podría ser el error, osea tu misma lo resolviste (eso espero):
'exepto si en el segundo insert no considero el id de la nota de venta...'
Este es tu codigo:
$id_nota=mysql_insert_id();
$resultado1 = mysql_query($consulta1);
estas tratando de pedir el id de del registro agregado antes de ejecutar tu consulta.
$resultado1 = mysql_query($consulta1);
$id_nota=mysql_insert_id();
Espero te sirva.
Saludos.
Omar Yepez
www.yepsua.com
Hice lo que me indicaste y ahora me da este error...
INSERT INTO cuotas (idnotavta,numcuota,fec_venc,cap_insol,val_cuota,int_cuota,cap_pagado,deuda_resi,id_status_cuota) VALUES ('16','1','2009/06/30','44344443','16666','1492926.6247','-1476260.6247','45820703.6247','2')Invalid query: Cannot add or update a child row: a foreign key constraint fails (`prueba/cuotas`, CONSTRAINT `cuotas_ibfk_1` FOREIGN KEY (`idnotavta`) REFERENCES `notavta` (`idnotavta`))
¿Esta bien que la variable donde guardo el id vaya fuera del bucle for? O debe ir dentro...
El error es una clave foránea pero no se si es error de lo que escribiste o esta así en tu código
Primer query:
INSERT INTO notavta2 ......
Y en el degundo Query el error MYSQL es
"REFERENCES `notavta` (`idnotavta`))" osea la tabla notavta, Sin el 2 al final.
Verifica eso.
Saludos.
Omar Yepez
www.yepsua.com
Respuesta
1
Creo que el error esta en el orden de estas sentencias:
$id_nota=mysql_insert_id();
$resultado1 = mysql_query($consulta1);
Primero tienes que hacer el mysql_query y luego recuperar el id insertado asi:
$resultado1 = mysql_query($consulta1);
$id_nota=mysql_insert_id();
Pruébalo y me cuentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas