Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: EdwardX en 28 Agosto 2016, 23:51 pm



Título: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: EdwardX en 28 Agosto 2016, 23:51 pm
Buenas,
¿Qué tal? Estoy intentando subir varios datos guardados en variables, la imagen sube a la carpeta local indicada perfectamente, pero a la base no sube ninguna de las variables: $titulodisco, $grupoartista, $anopublicacion, $sello, $titulostemas, $musicosdisco, $comentariodisco

¿Alguien le podría echar un vistazo?

¡Gracias!  :xD


Código
  1. <?php
  2. $conexion = mysql_connect("localhost", "jazzgune","xxxx");
  3. if(!isset($conexion)){
  4. echo "Error al conectar a la base de datos." . mysql_error();
  5. exit();
  6. }
  7.  
  8. $seleccionar_bd = mysql_select_db("jazzgune");
  9. if(!isset($seleccionar_bd)){
  10. echo "Error al seleccionar la base de datos." . mysql_error();
  11. exit();
  12. }
  13.  
  14. //DE FORMULARIO A VARIABLE//
  15. $titulodisco = $_POST["titulodisco"];
  16. $grupoartista = $_POST["grupoartista"];
  17. $anopublicacion = $_POST["anopublicacion"];
  18. $sello = $_POST["sello"];
  19. $titulostemas = $_POST["titulostemas"];
  20. $musicosdisco = $_POST["musicosdisco"];
  21. $comentariodisco = $_POST["comentariodisco"];
  22.  
  23.  
  24.  
  25. //SUBIDA DE IMAGEN//
  26. $carpeta = "imagenesdiscos/";
  27. opendir($carpeta);
  28. $destino=$carpeta.$_FILES['imagendisco']['name'];
  29. copy($_FILES['imagendisco']['tmp_name'],$destino);
  30. echo "Archivo subido exitosamente";
  31. $nombre=$_FILES['imagendisco']['name'];
  32. echo "<img src=\"/jazzgune/imagenesdiscos/$nombre\">";
  33.  
  34. //INSERTAR DE VARIABLE A TABLA DE BASE DE DATOS//
  35. $consulta = mysql_query("INSERT INTO discos(titulo,artista,ano,sello,temas, artistas,comentario,fotodisco) VALUES ('$titulodisco','$grupoartista','$anopublicacion','$sello','$titulostemas','$musicosdisco','$comentariodisco')");
  36.  
  37. if (!isset($consulta)){
  38. echo "Error al insertar los datos en la tabla. ". mysql_error();
  39. exit();
  40. }
  41.  
  42. else
  43. echo"Correcto";
  44. ?>


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: bengy en 29 Agosto 2016, 00:59 am
es necesario para ti subir las imagenes a la base de datos? o solo puedes subir la direccion de la imagen, solo la referencia.


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: #!drvy en 29 Agosto 2016, 07:04 am
En tu query le dices a mysql que inserte 8 parámetros pero solo le pasas 7. Es decir, nunca le pasas la foto que es la ultima variable.

Código
  1. INTO discos(titulo,artista,ano,sello,temas, artistas,comentario,fotodisco)

^ se cuentan 8 variables.

Código
  1. VALUES ('$titulodisco','$grupoartista','$anopublicacion','$sello','$titulostemas','$musicosdisco','$comentariodisco')

^ Solo le damos 7  :(


Saludos


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: EdwardX en 29 Agosto 2016, 14:09 pm
Gracias,

Lo que quiero y creo que se debe hacer, es subir la imagen a una carpeta local (ya lo he conseguido), y subir la ruta a la base de datos. ¿Se hace así? ¿Cómo sería? Ahora mismo a la base de datos no me llega ninguno de estos datos, pero la imagen llega a la carpeta local.

Saludos y muchas gracias por vuestras respuestas.  :rolleyes:


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: AlbertoBSD en 29 Agosto 2016, 15:35 pm
ya te respondieron!

Esta mal tu query..
Y si se hace asi, se guarda el archivo en X carpeta y el nombre del archivo en la base de datos.

Saludos


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: EdwardX en 29 Agosto 2016, 16:34 pm
Gracias AlbertoBSD! Revisaré el jquery como decís a ver qué se me ocurre para guardar la ruta en la base de datos. No domino php la verdad, pero voy aprendiendo. Gracias!  :xD


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: EdwardX en 29 Agosto 2016, 17:04 pm
Efectivamente los siete valores de las variables se han introducido perfectamente al igualar 7 a 7. Me queda pendiente la ruta de las imágenes  ;)

Saludos y gracias a todos!


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: EdwardX en 30 Agosto 2016, 20:33 pm
Buenas, tras largos ratos, no lo consigo,
Veo y veo videotutoriales sobre cómo subir rutas de imagen, pero algunos indican cómo subir archivo a la base de datos...(esto no quiero, creo que como me decís lo mejor es subir la imagen a una carpeta que tengo llamado "Imagenes discos", y la ruta a la base de datos.). Otros al formulario les añaden un "nombre" para el archivo...¿El usuario poner un nombre al archivo que debe subir? Eso queda raro...xD

¿Alguien me podría echar un cable? Creo que debería haber un código u orden que haga que del archivo, coja el nombre de archivo y lo guarde en la tabla de la base de datos que le he llamado discos, en la casilla fotodisco. ¿Cómo sería?

Lo que si me funciona es que la imagen se guarda en la carpeta.
Pero me falta:  :rolleyes:
-Guardar la ruta.
-Mostrar la imagen utilizando la ruta guardada.


¡Muchas gracias y perdonad que sea un novato...xD


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: AlbertoBSD en 31 Agosto 2016, 02:24 am
Hola por defecto los archivos se encuentran en un directorio temporal, por lo menos asi lo recuerdo yo.

Trata de ver si el archivo existe:

Código
  1. file_exists($_FILES['upfile']['tmp_name']);

Podrias agregar el codigo de tu formulario donde adjuntas el archivo, informar de cuanto pesa el archivo y adiconal ver si tienes autorizado el upload de archivos con php info

Saludos


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: EdwardX en 31 Agosto 2016, 23:40 pm
Buenas,
¿Qué tal? Primero gracias por el interés. Tal y como me habéis comentado y con razón, añado el código. He colocado 3 partes (no he puesto todo el html ya que sería muy largo para pegarlo aquí). Este que es el formulario es un archivo (publicardisco.php), y más abajo veréis el del archivo (verificarpublicardisco.php) y finalmente otro para imprimir resultado (discos.php) Como comenté, las imágenes si que se guardan en la carpeta local indicada, los datos del formulario también en la base de datos.

Lo que me falta que funcione y no consigo es:
-Guardar ruta de foto en base de datos
-Publicar la imagen de la carpeta local guardada



BASE DE DATOS: JAZZGUNE
TABLA: DISCOS

DATOS: titulodisco, grupoartista, anopublicacion, sello, titulostemas, musicosdisco, comentariodisco e imagendisco

1.-FORMULARIO:

Código
  1. /*FORMULARIO en HTML */
  2.         <form action="verificarpublicardisco.php" method="POST" enctype="multipart/form-data">
  3.         <h2>Publicar Disco</h2>
  4.         <input type="text" name="titulodisco" id="titulodisco" placeholder="Título del Disco"><br>
  5.         <input type="text" name="grupoartista" id="grupoartista" placeholder="Grupo o artista"><br>
  6.         <input type="text" name="anopublicacion" id="anopublicacion" placeholder="Año de la publicación"><br>
  7.         <input type="text" name="sello" id="sello" placeholder="Sello"><br>
  8.  
  9.         <textarea rows="5" cols="60" type="text" name="titulostemas" id="titulostemas" placeholder="Títulos de los temas del disco"></textarea><br>
  10.  
  11.         <textarea rows="5" cols="60" type="text" name="musicosdisco" id="musicosdisco" placeholder="Artistas que has formado parte del disco"></textarea><br>
  12.  
  13.         <textarea rows="5" cols="60" type="text" name="comentariodisco" id="comentariodisco" placeholder="Comentario"></textarea><br>
  14. <label>Foto de la portada del disco</label><br>
  15. <input type="file" name="imagendisco" id="imagendisco" placeholder="Imagen del disco"><br>
  16.         <input type="submit" name="btnGuardar" value="Publicar disco" id="enviar">
  17.  
  18.         </form>


2.-GUARDAR DATOS DEL FORMULARIO EN BASE DE DATOS E IMAGEN EN CARPETA LOCAL:

Código
  1. /*ARCHIVO: verificardisco.php*/
  2.  
  3. <?php
  4. $conexion = mysql_connect("localhost", "jazzgune","xxxxxxxxx");
  5. if(!isset($conexion)){
  6. echo "Error al conectar a la base de datos." . mysql_error();
  7. exit();
  8. }
  9.  
  10. $seleccionar_bd = mysql_select_db("jazzgune");
  11. if(!isset($seleccionar_bd)){
  12. echo "Error al seleccionar la base de datos." . mysql_error();
  13. exit();
  14. }
  15.  
  16. //DE FORMULARIO A VARIABLE//
  17. $titulodisco = $_POST["titulodisco"];
  18. $grupoartista = $_POST["grupoartista"];
  19. $anopublicacion = $_POST["anopublicacion"];
  20. $sello = $_POST["sello"];
  21. $titulostemas = $_POST["titulostemas"];
  22. $musicosdisco = $_POST["musicosdisco"];
  23. $comentariodisco = $_POST["comentariodisco"];
  24.  
  25.  
  26.  
  27. //INSERTAR DE VARIABLE A TABLA DE BASE DE DATOS// */
  28. $consulta = mysql_query("INSERT INTO discos(titulo,artista,ano,sello,temas, artistas,comentario) VALUES ('$titulodisco','$grupoartista','$anopublicacion','$sello','$titulostemas','$musicosdisco','$comentariodisco')");
  29.  
  30. if (!isset($consulta)){
  31. echo "Error al insertar los datos en la tabla. ". mysql_error();
  32. exit();
  33. }
  34.  
  35. else
  36. echo"Correcto";
  37. ?>
  38.  


3.-PUBLICAR DATOS INCLUIDA LA FOTO GUARDADA EN LA CARPETA LOCAL:

Código
  1. include("conexion.php");
  2. $consulta = mysql_query("SELECT * FROM discos ORDER BY ano ASC");
  3.  
  4. while ($registro = mysql_fetch_array ($consulta)) {
  5. echo "<div id='areaarticulodisco'>";
  6. echo "<div id='areafotodisco'>";
  7. echo "<img id='fotodeldisco''>";
  8. echo "</div>";
  9. echo "<div id='detallesdisco'>";
  10. echo "<div id='titulodisco'>";
  11. echo "<a id='titulossecdiscos'>Título: </a>";
  12. echo $registro["titulo"];
  13. echo "</div>";
  14. echo "<div id='artistadisco'>";
  15. echo "<a id='titulossecdiscos'>Artista: </a>";
  16. echo $registro["artista"];
  17. echo "</div>";
  18. echo "<div id='anodisco'>";
  19. echo "<a id='titulossecdiscos'>Año: </a>";
  20. echo $registro["ano"];
  21. echo "</div>";
  22. echo "<div  id='sellodisco'>";
  23. echo "<a id='titulossecdiscos'>Sello: </a>";
  24. echo $registro["sello"];
  25. echo "</div>";
  26. echo "<div id='artistasdisco'>";
  27. echo "<a id='titulossecdiscos'>Músicos: </a>";
  28. echo $registro["artistas"];
  29. echo "</div>";
  30. echo "<div id='comentariodisco'>";
  31. echo "<a id='titulossecdiscos'>Comentario: </a>";
  32. echo $registro["comentario"];
  33. echo "</div>";
  34. echo "</div>";
  35. echo "</div>";


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: EdwardX en 2 Septiembre 2016, 22:34 pm
¿Demasiado complicado? Ya intentaré preguntar en otros foros a ver si alguien sabe. ¿Me recomendáis algún foro de php?

Saludos y gracias de todos modos. ; )


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: bengy en 3 Septiembre 2016, 03:26 am
no pude leer todo el post, pero donde esta la variable del directorio?



Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: EdwardX en 3 Septiembre 2016, 12:45 pm
¡Gracias una vez más por la respuesta!
¿Te refieres a esto?
$carpeta = "imagenesdiscos/";

La imagen se guarda en la carpeta, pero no se como publicarla utilizando ruta guardada en base de datos.

El objetivo del proyecto es el siguiete:

1)Un formulario que permita a los usuarios publicar en una web discos de jazz locales introduciendo los siguientes valores:
-Título del disco
-Año de publicación
-Sello discográfico
-Títulos de los temas (de las canciones)
-Nombres de los músicos que han formado parte del disco
-Comentario sobre el disco
-Imagen de la portada del disco de tamaño: 500px X 500px
(Este último es el que me da problemas)

2)En una sección llamada Discos se verás todos los discos publicados por la gente.


Éxitos y Fracasos:

Éxitos: Todos los datos de texto se introducen en la base de datos perfectamente y se publican. La imagen de la carátula se sube al directorio.
Fracasos: No consigo que se publiquen las carátulas de los discos subidos en el formulario. Se suben a la carpeta local, y nada más... ¡Socorro! ; )


¿A alguien se le ocurre cómo hacerlo?

¡Muchas gracias a todos!


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: #!drvy en 3 Septiembre 2016, 20:51 pm
Por favor, no hagas doble post. Este es el sitio adecuado para tu pregunta puesto que estas utilizando PHP.

Tu problema es de lo mas simple. Como te dije en el principio, ignorabas la octava variable que le pasabas a la query y por eso no se subía nada, para solucionarlo, en vez de darle a la query esa variable decidiste quitarla del set. Obviamente si la quitas nunca la subirás.

Tu problema es la lógica que le aplicas. Ya no es por decir nada pero esto es un caso muy simple al que no le estas prestando atención.

Código
  1. $carpeta = 'imagenesdiscos/';
  2. $destino = $carpeta.$_FILES['imagendisco']['name'];
  3.  
  4. if(copy($_FILES['imagendisco']['tmp_name'],$destino)){
  5.    $nombreImagen=$_FILES['imagendisco']['name'];  
  6. }
  7.  
  8. $consulta = mysql_query("INSERT INTO discos(titulo,artista,ano,sello,temas, artistas,comentario,fotodisco) VALUES ('$titulodisco','$grupoartista','$anopublicacion','$sello','$titulostemas','$musicosdisco','$comentariodisco', '$nombreImagen')");
  9.  
  10. if($consulta){
  11.    echo "Error al insertar los datos en la tabla. ". mysql_error();
  12. } else {
  13.    echo "Correcto."
  14. }


Abrir un iterador de directorio es inutil en este caso y menos como lo estas haciendo.
http://www.php.net/opendir

Alteras el uso de comillas dobles y simples sin sentido alguno y el tabbing parece inconsistente. A mi lo que me parece es que has intentado copiar código de por ahí y no te sale lo que querías... pero que tampoco te has esforzado mucho en deducir porque..

Saludos


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: EdwardX en 3 Septiembre 2016, 21:07 pm
¡Muchas gracias #!drvy!
Efectivamente soy un novato. Revisaré e intentaré comprender el código. A ver si lo consigo... Parte del código como bien deducez lo he ido añadiendo mirando y copiando por aquí y por allá, ya que soy aprendiz. Algunas cosas comprendiendo y otras que todavía no. Aunque hasta hace poco me he dedicado más al diseño que al backend, me interesa mucho y trato de aprender php y bases de datos poco a poco. Espero no dar mucho la lata. xD

Saludos y gracias. ; )


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: EdwardX en 4 Septiembre 2016, 10:52 am
Me da el siguiente error: "Error al insertar los datos en la tabla."  :xD

¿Es correcto esto? Esto de que tenga 2 destinos no lo entiendo bien. ¿Es uno para la imagen física y lo otro para el temporal?
Código
  1. $fotodisco = $_FILES["imagendisco"]['tmp_name'];





Código
  1. //CONEXION//
  2. <?php
  3. $conexion = mysql_connect("localhost", "jazzgune","XXXXXX");
  4. if(!isset($conexion)){
  5. echo "Error al conectar a la base de datos." . mysql_error();
  6. exit();
  7. }
  8. //SELECCION DE BASE DE DATOS//
  9. $seleccionar_bd = mysql_select_db("jazzgune");
  10. if(!isset($seleccionar_bd)){
  11. echo "Error al seleccionar la base de datos." . mysql_error();
  12. exit();
  13. }
  14.  
  15. //DE FORMULARIO A VARIABLE//
  16. $titulodisco = $_POST["titulodisco"];
  17. $grupoartista = $_POST["grupoartista"];
  18. $anopublicacion = $_POST["anopublicacion"];
  19. $sello = $_POST["sello"];
  20. $titulostemas = $_POST["titulostemas"];
  21. $musicosdisco = $_POST["musicosdisco"];
  22. $comentariodisco = $_POST["comentariodisco"];
  23. $fotodisco = $_FILES["imagendisco"]['tmp_name'];
  24.  
  25.  
  26.  
  27.  
  28. //INSERTAR DE VARIABLE A TABLA DE BASE DE DATOS//
  29.    $carpeta = 'imagenesdiscos/';
  30.    $destino = $carpeta.$_FILES['imagendisco']['name'];
  31.  
  32.    if(copy($_FILES['imagendisco']['tmp_name'],$destino)){
  33.        $nombreImagen=$_FILES['imagendisco']['tmp_name'];  
  34.    }
  35.  
  36. //DE 8 ELEMENTOS A 8 ELEMENTOS...//
  37.    $consulta = mysql_query("INSERT INTO discos(titulo,artista,ano,sello,temas, artistas,comentario,fotodisco) VALUES ('$titulodisco','$grupoartista','$anopublicacion','$sello','$titulostemas','$musicosdisco','$comentariodisco','$nombreImagen')");
  38.  
  39.    if($consulta){
  40.        echo "Error al insertar los datos en la tabla. ". mysql_error();
  41.    } else {
  42.        echo "Correcto.";
  43.    }
  44.  
  45. ?>


¡Un saludo y gracias!  ;-)


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: EdwardX en 4 Septiembre 2016, 13:44 pm
¡Ya sube el nombre del archivo a la base de datos y la imagen a la carpeta indicada! Parece que la cosa avanza... xD
Pero sale el error aunque funcione...
"Error al insertar los datos en la tabla. "

¡Saludos!


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: EdwardX en 4 Septiembre 2016, 15:56 pm
Tengo dudas de cómo se debería poner la sintaxis en el caso de tener:
php +html + php + html + php
(Como lo indicado en negrita)


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

?>


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: bengy en 4 Septiembre 2016, 15:59 pm
deberia ser asi

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


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: #!drvy en 4 Septiembre 2016, 21:56 pm
Efectivamente, se me escapo un ! delante de $consulta. Pero tampoco te molestaste en mirar el código :/

Saludos


Título: Re: La imagen se sube a la carpeta pero no sube nada a la base de datos
Publicado por: EdwardX en 4 Septiembre 2016, 22:13 pm
Perdona #!drvy esque no domino php.

Saludos y gracias. ; )