Foros del Web » Programando para Internet » PHP »

Duplicidad De Registros

Estas en el tema de Duplicidad De Registros en el foro de PHP en Foros del Web. Estoy Trabajando Con Php Y Mysql He Hecho Varios Formularios Y Mi Unico Problema Es Que Despues De Agregar Un Registro Si Recargo La Pagina ...
  #1 (permalink)  
Antiguo 24/08/2006, 18:39
 
Fecha de Ingreso: agosto-2006
Mensajes: 2
Antigüedad: 11 años, 3 meses
Puntos: 0
Pregunta Duplicidad De Registros

Estoy Trabajando Con Php Y Mysql He Hecho Varios Formularios Y
Mi Unico Problema Es Que Despues De Agregar Un Registro Si Recargo La Pagina Automaticamente Se Ingresa Un Nuevo Registro, Soy Nueva En Esto Y No Se Que Mas Hacer, Bueno Ojala Puedan Ayudarme.

Gracias
  #2 (permalink)  
Antiguo 24/08/2006, 18:49
 
Fecha de Ingreso: agosto-2006
Mensajes: 58
Antigüedad: 11 años, 3 meses
Puntos: 0
para que quieres recargar la pagina??
  #3 (permalink)  
Antiguo 24/08/2006, 18:50
 
Fecha de Ingreso: agosto-2006
Mensajes: 58
Antigüedad: 11 años, 3 meses
Puntos: 0
has un query que busque los datos que estas capturando en la tabla, si los encuentra que no haga nada, si no los encuentra que los inserte, es basicamente in IF
  #4 (permalink)  
Antiguo 24/08/2006, 18:58
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 12 años
Puntos: 281
si estas insertando data usando un form no pongas el codigo insert en la misma pagina. envia el form a otro pagina y haz el insert ahi. luego le das un header a otra pagina de confirmacion que diga 'La informacion ha sido guarda', o algo asi.
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...
  #5 (permalink)  
Antiguo 24/08/2006, 19:11
 
Fecha de Ingreso: agosto-2006
Mensajes: 2
Antigüedad: 11 años, 3 meses
Puntos: 0
bueno no es necesariamente que yo la quiera recargar, los usuarios lo hacen y el que me dupliquen los registros seria un gran problema, he pensado en deshabilitar esta opcion pero no estoy segura y pues es necesario regresar a la misma pagina para nuevos ingresos.Esto es lo que tengo le hallan algun error??? Bueno gracias..

Código PHP:
if($accion=="" && $nombre<>""){
$idarea<>"" && $hora_entrada<>""){ 
$nombre strtoupper($nombre);
$pat =   strtoupper($paterno);
$mat =   strtoupper($materno);
$area = ($idarea);
$entrada = ($hora_entrada);
 
EjecutaSQL("INSERT INTO cat_colaboradores VALUES('','$nombre','$pat','$mat','$area','$entrada')");
 
$nombre="";
} else {

$cual substr($accion,1,strlen($accion));

switch (
substr($accion,0,1)) {
    case 
"b" :
    
EjecutaSQL("DELETE FROM cat_colaboradores WHERE idcolaborador=$cual");
    break;
    case 
"m" :
    if(
$nombre<>""){
        
$nombre strtoupper($nombre);
         
EjecutaSQL("UPDATE cat_colaboradores SET nombre='$nombre' WHERE idcolaborador=$cual") ;
    }
    if(
$paterno<>""){
        
$pat =   strtoupper($paterno);
         
EjecutaSQL("UPDATE cat_colaboradores SET paterno='$pat' WHERE idcolaborador=$cual");
    } 
    
    if(
$materno<>""){
        
$mat =   strtoupper($materno);
         
EjecutaSQL("UPDATE cat_colaboradores SET materno='$mat' WHERE idcolaborador=$cual");
    } 
    if(
$idarea<>""){
        
$area =  ($idarea);
         
EjecutaSQL("UPDATE cat_colaboradores SET idarea='$area' WHERE idcolaborador=$cual");
    } 
    if(
$hora_entrada<>""){
        
$entrada =  ($hora_entrada);
         
EjecutaSQL("UPDATE cat_colaboradores SET hora_entrada='$entrada' WHERE idcolaborador=$cual");
    } 
    break;
  }
}


$datosQuery EjecutaSQL("SELECT * FROM cat_colaboradores");

echo 
"<form name='form1' method='post' action='PruebaColaboradores.php'>";
echo 
"<table width='100%' border='0'>";
echo 
"<tr bgcolor=#306090>";
echo 
"<th>ID</th>";
echo 
"<th>NOMBRE (S)</th>";
echo 
"<th>PATERNO</th>";
echo 
"<th>MATERNO</th>";
echo 
"<th>ID AREA</th>";
echo 
"<th>HORA ENTRADA</th>";
echo 
"    <th>ELIMINAR</th>";
echo 
"    <th>EDITAR</th>";
echo 
"  </tr>";
while(
$row PosicionaRenglon($datosQuery)){
    echo 
"<tr>";
    echo 
"<td>$row[0] </td>";
    echo 
"<td>$row[1]</td>";
    echo 
"<td>$row[2]</td>";
    echo 
"<td>$row[3]</td>";
    
$datosCte EjecutaSQL("SELECT descripcion FROM cat_areas WHERE idarea=$row[4]");
    
$cte PosicionaRenglon($datosCte);
    echo 
"<td>$cte[0]</td>";
    
    echo 
"<td>$row[5]</td>";
    echo 
"<td><input type='radio' name='accion' value='b$row[0]'></td>";    
    echo 
"<td><input type='radio' name='accion' value='m$row[0]'></td>";    
    echo 
"</tr>";
}
 
echo 
"<tr>";
echo 
"<td>NUEVO";
echo 
"</td>";
echo 
"<td>";
echo 
"<input name='nombre' type='text'>";
echo 
"</td>";
echo 
"<td>";
echo 
"<input name='paterno' type='text'>";
echo 
"</td>";
echo 
"<td>";
echo 
"<input name='materno' type='text'>";
echo 
"</td>";
echo 
"<td>";

 echo 
"        <select name='idarea' size='1' id='area'>";
  echo 
"            <option value='0'>[Selecciona Area]</option>";
                   
$datosQuery EjecutaSQL("SELECT * FROM cat_areas"); 
                while(
$row PosicionaRenglon($datosQuery)){ 
                   echo 
"<option value='$row[0]'>$row[2]</option>";
                }
  echo 
"           </select>";echo "</td>";
echo 
"<td>";
echo 
"<input name='hora_entrada' type='text'>";
echo 
"</td>";
echo 
"<td>";
echo 
"<input name='Agregar' type='submit' value='CONTINUAR'>";
echo 
"</td>";
echo 
"</tr>";

echo 
"</form>";
?>

</body>
</html> 

Última edición por Cluster; 24/08/2006 a las 19:43
  #6 (permalink)  
Antiguo 24/08/2006, 19:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Para solventar el problema .. debes redireccionar a otra pàgina o a si misma (pero indicando otro "estado") cada vez que ejecutas tu proceso de insercciòn de datos o actualizaciòn y similares:

Código PHP:
if($nombre<>""){
$nombre strtoupper($nombre);
EjecutaSQL("UPDATE cat_colaboradores SET nombre='$nombre' WHERE idcolaborador=$cual") ;
header ("Location: ".$_SERVER['PHP_SELF']);
exit;

Tienes que hacer la misma redirecion tras cada "EjecutaSQL()" que tu haces con un INSERT o UPDATE .. Debes tener presente que NO puedes tener nada de "HTML" o salida en general (espacios .. etc) antes de llamar a tu header().

Al redireccionar .. se "pierden" las variables que puedas tener .. asì que no se volverán a re-enviar y por ende no se volverá a validar las variables que tu validas y que pasaran las validaciones por qué se re-envian los mismos datos.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 01:06.