Si se puede, yo siempre uso el mismo formulario para agregar y modificar, un ejemplo de la estructura:
formulario.php
Código PHP:
<?php
$accion = $_GET['accion'];
if($accion == 'Agregar') {
// Aqui inicializas todas las variables que usaras para los campos del formulario
$id = 0;
$nombre = '';
$email = '';
} else {
// Aqui lees el registro y lo asignas a las variables
$id = $row['id'];
$nombre = $row['nombre'];
$email = $row['email'];
}
// Presentas el formulario:
echo "<h2>$accion</h2>";
?>
<form method="post" action="pagina.php?accion=<?php echo $accion; ?>">
<input type="hidden" name="id" value="<?php echo $id; ?>" /><br />
Nombre: <input type="text" name="nombre" value="<?php echo $nombre; ?>" /><br />
Email: <input type="text" name="email" value="<?php echo $email; ?>" /><br />
<input type="submit" value="<?php echo $accion; ?>" />
</form>
pagina.php
Código PHP:
$accion = $_GET['accion'];
// Aqui lees y validas los datos recibidos
// Si hay errores, avisas y pones link a la pagina anterior
// Iniciamos la consulta:
$query = ($accion == 'Agregar') ? 'INSERT INTO ' : 'UPDATE ';
$query .= " tabla SET nombre = '$nombre', email = '$email'";
$query .= ($action == 'Agregar') ? '' : " WHERE id = $id";
mysql_query($query) or die(mysql_error());
// El resto de tu codigo para avisar que todo salio bien