Ayudar para guardar en BD

Hola nuevamente david, espero puedas ayudarme y no te complique con una pregunta muy larga, pero es por el código para que así puedas ayudarme de mejor manera. Tengo dos archivos, un html que contiene un formulario con 5 campos, donde el usuario ingresa un monto de un crédito, el numero de cuotas, la fecha del primer vencimiento, Valor cuota y el interés. El segundo archivo es un php que es llamado por el formulario, el cual tiene el siguiente código:
<table width="50%" border="0" cellpadding=3>
<tbody>
<tr>
<td align="center" bgcolor="#CCCCCC">Numero Cuota
</tr>
<td align="center" bgcolor="#CCCCCC">Capital
</tr>
<td align="center" bgcolor="#CCCCCC">Valor Cuota
</tr>
<td align="center" bgcolor="#CCCCCC">Interes
</tr>
<td align="center" bgcolor="#CCCCCC">Capital Pagado
</tr>
<td align="center" bgcolor="#CCCCCC">Valor Residual
</tr>
<?php
for ($i=1;$i<=$txtcuotas;$i++)
{
$intcuota=$txtcredito*$txttasa/100;
$cappagado=$txtvalcuota-$intcuota;
$valresi=$txtcredito-$cappagado;
echo "
<tr>
<td align=left> $i</td>
";
echo "
<td align=left>$txtcredito</td>
";
echo "
<td align=left>$txtvalcuota</td>
";
echo "
<td align=left>".number_format($intcuota,0)."</td>
";
echo "
<td align=middle>".number_format($cappagado,0)."</td>
";
echo "
<td align=middle>".number_format($valresi,0)."</td>
</tr>
";
$txtcredito=$valresi;
}
?>
Todo funciona a la perfección, el problema es que ahora todo el resultado generado necesito quede guardado en una tabla. La BD se llama SISTEMA y la tabla se llama Convenio y los campos son:
NCUOTA ->NUMERO DE CUOTA ($i)
CAPINI ->CAPITAL ($txtcredito)
VALCUOT ->VALOR CUOTA ($txtvalcuota)
INTERES ->INTERES O TASA ($intcuota)
CAPPAG -> CAPITAL PAGADO ($cappagado)
SALDO -> VALOR RESIDUAL ($valresi)
Yo coloque el siguiente código dentro del bucle for y comente todos lo echo de mis variables...
@ $db=mysql_pconnect("localhost","usuario","clave");
if (!$db) //si no se encuentra db
 {
  echo "Error en conexion a la BD";
  exit;
 }
for ($i=1;$i<=$txtcuotas;$i++)
{
$fecha=sumaDia($txtvencim,30, $i);
//echo "
<td align=left>".$txtvencim."</td>
";
//echo "
<td align=left>".$fecha."</td>
";
//$txtvencim=sumaDia($txtvencim,30);
//echo "
<td align=left>".date("$nuevafecha")."</td>
";
//echo "
<td align=left>".number_format($txtcredito,0)."</td>
";
//echo "
<td align=left>".number_format($txtvalcuota,0)."</td>
";
$intcuota=$txtcredito*$txttasa/100;
//echo "
<td align=left>".number_format($intcuota,0)."</td>
";
$cappagado=$txtvalcuota-$intcuota;
//echo "
<td align=middle>".number_format($cappagado,0)."</td>
";
$valresi=$txtcredito-$cappagado;
//echo "
<td align=middle>".number_format($valresi,0)."</td>
</tr>
";
$txtcredito=$valresi;
$consulta="INSERT INTO convenio VALUES('".$i."','".$txtcredito."','".$txtvalcuota."','".$intcuota."','".$cappagado."','".$valresi."')";
$resultado = mysql_query($consulta);
if (!$resultado) { die('Invalid query: ' . Mysql_error());}
}
Al momento de ejecutar me aparece el siguiente mensaje: Invalid query: Column count doesn't match value count at row 1.
Tambien probe este otro metodo, pero sucede lo mismo:
$consulta="INSERT INTO convenio (ncuota,fvenc,capital,valcuota,interes,cpagado,valresi) VALUES ('$_POST','$_POST[txtcredito]','$_POST[txtvalcuota]','$_POST[intcuota]','$_POST[cappagado]','$_POST[valresi]')";
Tengo un campo llamado id que es de autoincremento y que no menciono en el código, pero no se si esto tiene que ver. No se donde tengo el error...
Espero puedas ayudarme...

1 respuesta

Respuesta
1
Pues sí tiene que ver. Usando el primer sistema en el que no especificas los campos en los que insertas, debes dar un valor para cada campo (incluyendo el autoincremental) y en el mismo orden que se encuentran en la tabla. Para el campo autoincremental puedes usar NULL como valor si quieres que se incremente automáticamente.
Con el segundo método funcionaría bien si colocas los campos y sus valores correspondientes, pero ahí has vuelto a cometer un error: has puesto 7 campos y sólo 6 valores. Con este método no hace falta que pongas el campo autoincremental.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas