Tengo el siguiente problema de una pagiga html con input tipo hidden al continuar invocar a un programa php y este me duplica el registros entregado por la pagina anterior.
El codigo html es:
<html>
<head>
<title>:: Mantenedor de Archivos ::</title>
</head>
<BODY>
<br>
<script language="JavaScript">
function js_NextForm ( nform, valor, bbdd, tabla, secuencial )
{
var frm = document.forms[nform];
// var frm = nform;
//alert ( nform ) ;
frm.tipo.value = valor;
frm.bbdd.value = bbdd;
frm.tbl.value = tabla;
frm.idreg.value = secuencial;
frm.submit ();
} // end js_NextForm()
</script>
<form name="frmtablas" method="POST" action="./php_WriteTabla.php">
<input type="hidden" name="tipo" value="">
<input type="hidden" name="bbdd" value="">
<input type="hidden" name="tbl" value="">
<input type="hidden" name="idreg" value="">
<input type="hidden" name="tpord" value="">
<input type="hidden" name="ordcam" value="">
<input type="hidden" name="addquery" value="">
<br>
<input type="hidden" name="write" value="INSERT+INTO+153_archivo.tar_nac+VALUES+%28+ %2700%27%2C%27%27%2C%27000%27%2C%27%27%2C%272008-06-18%27%2C%279999-12-31%27%2C%27%27%2C%27A%27%2C%27%27%2C%27%27%2C%27%2 7%2C%27%27%2C%27%27%2C%27%27%2C%27%27%2C%27%27%2C% 27%27%2C%27%27%2C%27%27%2C%27%27%2C%27%27%2C%27%27 +%29%3B">
<br>
<table width="50%" border="0" align="center">
<tr><td>
<div align="center">
<INPUT id="button" tabIndex="34" type="submit" value="Anular" OnClick="history.back();">
</div>
</td><td>
<div align="center">
<INPUT id="button" tabIndex="34" type="submit" value="Continuar" OnClick="js_NextForm ('frmtablas','write','153_archivo', 'tar_nac','');">
</div>
</td><tr>
</table>
El siguiente codigo PHP (php_WriteTabla.php) es que realiza la acción de ingresar el registro. Pero este registro se duplica y aun mas raro que esto no ocurre siempre.
<?php
//function php_WriteTabla ( $bbdd, $nametbl )
//{
/* .................................................. ....................... */
/* defino el nombre y la clave que viene de la autentificacion de apache */
/* .................................................. ....................... */
$lhost = "localhost";
$remoteIP = ( !empty( $_SERVER["REMOTE_ADDR"] ) ) ? $_SERVER["REMOTE_ADDR"] : "";
$luser = ( !empty( $_SERVER["REMOTE_USER"] ) ) ? $_SERVER["REMOTE_USER"] : "pfica";
$lclave = ( !empty( $_SERVER["PHP_AUTH_PW"] ) ) ? $_SERVER["PHP_AUTH_PW"] : "doors";
$db = mysql_connect( $lhost, $luser, $lclave );
function phpgb_fixCharHtml ( $mess )
{
$mess = str_replace( "ñ", "ñ", $mess );
$mess = str_replace( "Ñ", "Ñ", $mess );
$mess = str_replace( "á", "á", $mess );
$mess = str_replace( "Á", "Á", $mess );
$mess = str_replace( "é", "é", $mess );
$mess = str_replace( "É", "É", $mess );
$mess = str_replace( "í", "í", $mess );
$mess = str_replace( "Í", "Í", $mess );
$mess = str_replace( "ó", "ó", $mess );
$mess = str_replace( "Ó", "Ó", $mess );
$mess = str_replace( "ú", "ú", $mess );
$mess = str_replace( "Ú", "Ú", $mess );
$mess = str_replace( " ", " ", $mess );
return ( $mess );
}
function php_msn_div( $msn, $class )
{
$result = $msn;
phpgb_fixCharHtml( $result );
echo "<br>";
echo "<DIV";
if( !empty ( $class ) )
echo " class=".$class;
echo ">";
print_r ( $result );
echo "</DIV>\n";
unset( $result );
} // end php_msn_div
function php_NivelMensaje ( $mensaje, $class, $nivel )
{
global $aBIBLIO;
if( $aBIBLIO['mensaje'] >= $nivel )
php_msn_div ( $mensaje, $class );
} // end php_NivelMensaje
function phpgb_exeQuery ( $query )
{
echo "<br> entro;\n";
$resultado = mysql_query( $query ) or $code = mysql_error();
if ( isset( $code ) ){
echo "<br>Query Error: ". $query ."<br>";
echo "(". mysql_errno() ." ". $code .")";
return ( false );
}
echo "<br> \$resultado = (". $resultado .")\n";
return ( $resultado );
} /* end php_exeQuery */
$consulta = "INSERT+INTO+153_archivo.tar_nac+VALUES+%28+%2700% 27%2C%27%27%2C%27000%27%2C%27%27%2C%272008-06-18%27%2C%279999-12-31%27%2C%27%27%2C%27A%27%2C%27%27%2C%27%27%2C%27%2 7%2C%27%27%2C%27%27%2C%27%27%2C%27%27%2C%27%27%2C% 27%27%2C%27%27%2C%27%27%2C%27%27%2C%27%27%2C%27%27 +%29%3B";
$consulta = $_REQUEST['write'];
$ejecutar = urldecode( $consulta );
echo "<br>REQUEST="; print_r($_REQUEST); echo "\n";
echo "<br>\n";
echo "<br>ejecutar="; print_r( $ejecutar ); echo ";\n";
echo "<br>\n";
unset( $code );
//$resultado = mysql_query( $ejecutar, $db ) or $code = mysql_error();
//if ( isset( $code ) )
$code = phpgb_exeQuery ( $ejecutar );
if ( !$code )
php_NivelMensaje( "No Se ejecuto la consulta :".$code.".", "notice", 0 );
else {
php_NivelMensaje( "Se realizo correctamente la tarea solicitada.", "notice",0 );
php_NivelMensaje( " filas afectadas = ".mysql_affected_rows(), "notice",0 );
}
unset( $code, $ejecutar );
//exit;
//}
?>
Inicial mente parto con el html pincho continuar y veo la base de dato borro el registros vía phpMyAdmin y después pincho atrás en la ventana use y repito la acción por lo menos 10 veces y se duplica 2 de 10 veces… la tabla tiene la siguiente estructura :
--
-- Estructura de tabla para la tabla `tar_nac`
--
CREATE TABLE `tar_nac` (
`pagina` varchar(2) NOT NULL,
`filler1` char(1) NOT NULL,
`referencia` varchar(3) NOT NULL,
`filler2` char(1) NOT NULL,
`fdesde` date NOT NULL default '2006-01-01',
`fhasta` date NOT NULL default '9999-12-31',
`filler3` char(1) NOT NULL,
`tipoval` char(1) NOT NULL default 'A',
`filler4` char(1) NOT NULL,
`tar_h_eco` varchar(10) NOT NULL,
`filler5` char(1) NOT NULL,
`car_h_eco` varchar(10) NOT NULL,
`filler6` char(1) NOT NULL,
`tar_h_nor` varchar(10) NOT NULL,
`filler7` char(1) NOT NULL,
`car_h_nor` varchar(10) NOT NULL,
`filler8` char(1) NOT NULL,
`tar_h_sec` varchar(10) NOT NULL,
`filler9` char(1) NOT NULL,
`car_h_sec` varchar(10) NOT NULL,
`filler10` char(1) NOT NULL,
`movil` enum('','M') NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;