Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/06/2008, 12:46
piratatres
 
Fecha de Ingreso: junio-2008
Mensajes: 1
Antigüedad: 15 años, 10 meses
Puntos: 0
Exclamación Problema se crea dos registros con el insert.

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( "ñ", "&ntilde;", $mess );

$mess = str_replace( "Ñ", "&Ntilde;", $mess );

$mess = str_replace( "á", "&aacute;", $mess );

$mess = str_replace( "Á", "&Aacute;", $mess );

$mess = str_replace( "é", "&eacute;", $mess );

$mess = str_replace( "É", "&Eacute;", $mess );

$mess = str_replace( "í", "&iacute;", $mess );

$mess = str_replace( "Í", "&Iacute;", $mess );

$mess = str_replace( "ó", "&oacute;", $mess );

$mess = str_replace( "Ó", "&Oacute;", $mess );

$mess = str_replace( "ú", "&uacute;", $mess );

$mess = str_replace( "Ú", "&Uacute;", $mess );

$mess = str_replace( " ", " &nbsp;", $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;