Hola. Estoy intentando hacer un formulario para añadir datos desde la web a la base de datos. Hay un campo que guardará el enlace a una imagen (he leído que es mejor guardar las imágenes en una carpeta del servidor y el enlace en la BD, ya que es más sencillo acceder así a esas imágenes)
El caso es que he adaptado uno de tantos códigos que he ido encontrando y que en principio todo funcionaba... Hasta que me ha dado por mirar esos registros en la BD y en la carpeta, y no están.
¿Podríais indicarme que errores hay en el código que uso?
En principio, me gustaría que estuviese todo (HTML y PHP) en la misma página... Si es posible, aunque también he probado ese código en dos paginas separadas y tampoco guarda ni los datos ni la imagen.
Saludos.
Código HTML:
Ver original<?php include ("Connections/miriamweb.php");?>
<!doctype html>
<?php
if ($_FILES["imagen"]["error"] > 0){
echo "ha ocurrido un error";
//ahora vamos a verificar si el tipo de archivo es un tipo de imagen permitido.
//y que el tamano del archivo no exceda los 100kb
$permitidos = array("image/jpg", "image/jpeg", "image/gif", "image/png");
$limite_kb = 200;
if (in_array($_FILES['imagen']['type'], $permitidos) && $_FILES['imagen']['size'] <= $limite_kb * 1024){
//esta es la ruta donde copiaremos la imagen
//recuerden que deben crear un directorio con este mismo nombre
//en el mismo lugar donde se encuentra el archivo subir.php
$ruta = "album/" . $_FILES['imagen']['name'];
//comprovamos si este archivo existe para no volverlo a copiar.
//pero si quieren pueden obviar esto si no es necesario.
//o pueden darle otro nombre para que no sobreescriba el actual.
if (!file_exists($ruta)){
//aqui movemos el archivo desde la ruta temporal a nuestra ruta
//usamos la variable $resultado para almacenar el resultado del proceso de mover el archivo
//almacenara true o false
$resultado = move_uploaded_file($_FILES["imagen"]["tmp_name"], $ruta);
if ($resultado){///hasta aqui es para guardar la imagen en carpeta album/... Una vez hecho esto, se añaden los campos a la base de datos.
$nombre = $_FILES['imagen']['name'];
$GModo = $_POST['GModo'];
$GSERIE = $_POST['GSerie'];
$GTitulo = $_POST['GTitulo'];
$GTecnica = $_POST['GTecnica'];
$GFecha = $_POST['GFecha'];
$GMedidas = $_POST['GMedidas'];
$GDisponibilidad = $_POST['GDisponibilidad'];
$Ganadir = "INSERT INTO `miriamweb`.`obras` (`ID`, `Medio`, `Serie`, `Titulo`, `Tecnica`, `Fecha`, `Medidas`, `Disponibilidad`, `Imagen`) VALUES (NULL, '$GModo', '$GSERIE', '$GTitulo', '$GTecnica', '$GFecha', '$GMedidas', '$GDisponibilidad1', '$nombre');";
echo "el archivo ha sido movido exitosamente";
} else {
echo "ocurrio un error al mover el archivo.";
}
} else {
echo $_FILES['imagen']['name'] . ", este archivo existe";
}
} else {
echo "archivo no permitido, es tipo de archivo prohibido o excede el tamano de $limite_kb Kilobytes";
}
}
?>
<form action="" method="POST" enctype="multipart/form-data"> <input type="text" name="GModo" required/> <input type="text" name="GSerie" required/> <input type="text" name="GTitulo" required/> <input type="text" name="GTecnica" required/> <input type="text" name="GFecha" required/> <input type="text" name="GMedidas" required/> <input type="text" name="GDisponibilidad" required/> <input type="file" name="imagen" id="imagen" required/>
<input type="submit" name="subir" value="Añadir"/>