Primero que nada, para que utilizas PHP para imprimir el formulario:
No tienes que usar PHP para imprimir ese formulario.
Código PHP:
<html>
<head>
<head>
<title>Index</title>
</head>
<body>
<?php
echo "<form name=\"form1\" enctype='multipart/form-data' action=\"save_producto.php\">";
echo "Codigo<br>";
echo "<input type=\"text\" name=\"codigo\" value=\"\"><br><br>";
echo "Nombre<br>";
echo "<input type=\"text\" name=\"nombre\" value=\"\"><br><br>";
echo "Imagen<br>";
echo "<input type=\"file\" name=\"imagen\"><br><br>";
echo "</select><br>";
echo "<input type=\"submit\" value=\"Enviar\" onclick=\"javascript: valida(); return false\>";
echo "</form>";
?>
</body>
</html>
2. No puedes recuperar el valor de un campo FILE por medio de $_POST.
Código PHP:
$imagen=$_POST['imagen'];
3. Defines los nombres como imagen_n e imagen_f, pero usas img_n en tu IF.
Código PHP:
$imagen_n=$_FILES['imagen']['name']; // <-- dale un vistazo a los nombres de las variables
$imagen_f=$_FILES['imagen']['tmp_name'];
$fileName = '';
$val = time();
//Sube videos e imagen
if ($img_n != '') { // <-- Aqui usas una variable totalmente diferente
Por eso no copia la imagen.
4. Recuerda que guardas la imagen en $dir.$filename, y solo guardas el filename en tu consulta:
Código PHP:
$sql="INSERT INTO producto Values ($codigo,'$nombre','$filename')";
5. Antes de darle la extension .jpg, asegurate de que el archivo es un JPEG. Puedes usar $_FILES['imagen']['type'], eso devuelve el MIME type de el archivo subido, si el archivo es jpg, aparecera: image/jpeg
Código PHP:
$fileName = $val.".jpg";
6. No uses copy, move_uploaded_file() es mas seguro:
Código PHP:
@copy($imagen_f, $dir.$filename);