Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Error al subir imagen o ruta de imagen a base de datos

Me da el siguiente error: "Error al insertar los datos en la tabla."
El objetivo del proyecto de publicar o anunciar discos musicales con un formulario html de 8 datos (una de ellas imagen), se suba a la base de datos. La imagen se sube una carpeta perfectamente, pero la ruta donde quesa esa imagen alojada no se guarda correctamente en la base de datos. ¿En la base de datos hay que crear una variable para "tmp_name" o algo así?

En la base de datos no he creado "tmp_name", no se si debo crearlo para nombre temporal.

¿Alguien podría echar un vistazo a ver si lo soluciono, que llevo ya días y días... sin solución xD

Código PHP:
//CONEXION//
<?php
$conexion = mysql_connect("localhost", "jazzgune","XXXXXX");
if(!isset($conexion)){
echo "Error al conectar a la base de datos." . mysql_error();
mysql_error();
exit();
}
//SELECCION DE BASE DE DATOS//
$seleccionar_bd = mysql_select_db("jazzgune");
if(!isset($seleccionar_bd)){
echo "Error al seleccionar la base de datos." . mysql_error();
exit();
}

//DE FORMULARIO A VARIABLE//
$titulodisco = $_POST["titulodisco"];
$grupoartista = $_POST["grupoartista"];
$anopublicacion = $_POST["anopublicacion"];
$sello = $_POST["sello"];
$titulostemas = $_POST["titulostemas"];
$musicosdisco = $_POST["musicosdisco"];
$comentariodisco = $_POST["comentariodisco"];
$fotodisco = $_FILES["imagendisco"]['tmp_name'];

///// ¿EL tmp_name es correcto? No está creado en la base de datos... /////


//INSERTAR DE VARIABLE A TABLA DE BASE DE DATOS//
$carpeta = 'imagenesdiscos/';
$destino = $carpeta.$_FILES['imagendisco']['name'];

if(copy($_FILES['imagendisco']['tmp_name'],$destino)){
$nombreImagen=$_FILES['imagendisco']['tmp_name'];
}

//DE 8 ELEMENTOS A 8 ELEMENTOS...//
$consulta = mysql_query("INSERT INTO discos(titulo,artista,ano,sello,temas, artistas,comentario,fotodisco) VALUES ('$titulodisco','$grupoartista','$anopublicacion','$sello','$titulostemas','$musicosdisco','$comentariodisco','$nombreImagen')");

if($consulta){
echo "Error al insertar los datos en la tabla. ". mysql_error();
} else {
echo "Correcto.";
}

?>

¡Un saludo y gracias!
Editado
0
Puntos
452
Visitas
8
Resp
Por Iaaki hace 20 meses
Principiante

Respuesta #1

hola, en la base de datos tienes que guardar el nombre de la imagen, solo tienes que cambiar esto:
$nombreImagen=$_FILES['imagendisco']['tmp_name'];
por esto:
$nombreImagen=$_FILES['imagendisco']['name'];
despues para mostrar es imagen la cargas con la ruta de la carpeta mas el nombre guardado en la base de datos ;)

Salu2
0
Puntos
Por alber hace 20 meses
Administrador

Respuesta #2

Gracias, muy amable Alber.
¿Cómo sería para publicarlo?

<?php
include("conexion.php");
$consulta = mysql_query("SELECT * FROM discos");
while ($registro = mysql_fetch_array ($consulta)) {
echo "<img id='fotodeldisco' src='imagenesdiscos/scatainaraortega.jpg'>";
}
?>


¡Un saludo!
0
Puntos
Por Iaaki hace 20 meses
Principiante

Respuesta #3

Perdona quería poner:

<?php
include("conexion.php");
$consulta = mysql_query("SELECT * FROM discos");
while ($registro = mysql_fetch_array ($consulta)) {
echo "<img src=imagenesdiscos/'.<?php echo $registro["fotodisco"] ?>.' />";
}
?>


Pero un php dentro de otro etc. no creo que sea correcto. ¿Cómo sería para publicar imagen si tengo el nombre del archivo guardado en "fotodisco" de la base de datos y está en la carpeta "imagenesdiscos"?

¡Saludos!
0
Puntos
Por Iaaki hace 20 meses
Principiante

Respuesta #4

la verdad es que no se como tienes montado el proyecto pero prueba así a ver que tal:
<?php
include("conexion.php");
$consulta = mysql_query("SELECT * FROM discos");
while ($registro = mysql_fetch_array ($consulta)) { ?>

<img src="carpeta/<?php echo $registro["fotodisco"] ?>">

<?php } ?>
0
Puntos
Por alber hace 20 meses
Administrador

Respuesta #5

¿Sería así? ¿No debe tener un "echo"?

while ($registro = mysql_fetch_array ($consulta)) {
echo "<div id='areaarticulodisco'>";
echo "<div id='areafotodisco'>";
<img src="imagenesdiscos/<?php echo $registro["fotodisco"] ?>">
echo "</div>";


saludos.
0
Puntos
Por Iaaki hace 20 meses
Principiante

Respuesta #6

y para que meter tantos echos? separa el php del html y listo. en realidad lo que debes tener es un código lo mas limpio posible en mi opinión:
<?php
include("conexion.php");
$consulta = mysql_query("SELECT * FROM discos");
while ($registro = mysql_fetch_array ($consulta)) { ?>

<div id='areaarticulodisco'>
<div id='areafotodisco'>
<img src="imagenesdiscos/<?php echo $registro["fotodisco"] ?>">
</div>
</div>

<?php } ?>
solo es cuestión de que lo pruebes y compares ;)

salu2
0
Puntos
Por alber hace 20 meses
Administrador

Respuesta #7

Me da el siguiente error:
Parse error: syntax error, unexpected '<' in /Applications/XAMPP/xamppfiles/htdocs/jazzgune/discos.php on line 31
0
Puntos
Por Iaaki hace 20 meses
Principiante

Respuesta #8

claro te eh puesto el ejemplo basándome en la consulta que tenias y el problema lo sigues teniendo a la hora de consultar los datos eso es otro tema, acabo de testear tu código y me da el mismo error.

soluciona el tema de la consulta y despues usa el while como te eh comentado ;)
0
Puntos
Por alber hace 20 meses
Administrador

Relaccionados

Para comentar Inicia sesión o Registrate