Pero que problema o error exacto obtienes?
Consejos:
Usa los arrays superglobales para TODO!:
Código PHP:
<input type="hidden" name="clave" id="clave" value="<? echo $_POST['idd'];?>">
En lugar de:
Código PHP:
<?php echo $PHP_SELF; ?>"
usa:
Código PHP:
<?php echo $_SERVER['PHP_SELF']; ?>"
Código PHP:
if (isset($_POST['submit'])) {
$form_data=$_FILES['form_data']['tmp_name'];
// esto te podrá dar problemas .. no todo servicio de hosting te dejará
// acceder así a tu archivo "temporal" por donde PHP los deja hasta que
// hagas algo con el.
// En su defecto usa move_uploaded_file() .. te traes el archivo a un
// directorio de tu sitio y ahí aplicas la misma técnica para leer el archivo,
// pero desde tu ruta de tu sitio.
$data = addslashes(fread(fopen($form_data, "rb"), filesize($form_data)));
$strSQL="UPDATE fotos SET
descripcion='$form_description', foto='$data', nombre='$form_data_name', tamano='$form_data_size', tipo='$form_data_type'
WHERE id='".$_GET['clave']."' LIMIT 1";
mysql_query($strSQL);
if(mysql_query)
echo "El archivo se actualizó correctamente";
else echo "No se ha podido realizar la operación";
Las variables que definen tipo del archivo y peso .. $fom_data_type o size .. debes accederlas por:
$_FILES['form_data']['type'] y ['size'] .. (sustituyelo en tu código).
En general .. Usa los arrays superglobales .. ($_GET, $_POST, $_FILES .. etc) donde correspondan.
Un saludo,