Foros del Web » Programando para Internet » PHP »

Problema se crea dos registros con el insert.

Estas en el tema de Problema se crea dos registros con el insert. en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 18/06/2008, 12:46
 
Fecha de Ingreso: junio-2008
Mensajes: 1
Antigüedad: 16 años, 5 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;
  #2 (permalink)  
Antiguo 18/06/2008, 13:17
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 21 años, 6 meses
Puntos: 3
Respuesta: Problema se crea dos registros con el insert.

pana tu error no es PHP sino la validacion que estas haciendo....


todo esta bien solo debes cambiar es:

<INPUT id="button" tabIndex="34" type="submit" value="Continuar" OnClick="js_NextForm ('frmtablas','write','153_archivo', 'tar_nac','');">

por:

<INPUT id="button" tabIndex="34" type="button" value="Continuar" OnClick="js_NextForm ('frmtablas','write','153_archivo', 'tar_nac','');">
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
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 14:12.