Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] error al insertar a base de datos

Estas en el tema de error al insertar a base de datos en el foro de PHP en Foros del Web. necesito de su ayuda, al dar clic el boton guardar si guarda la imagen en la carpeta pero no guarda la informacion en la base ...
  #1 (permalink)  
Antiguo 01/06/2018, 18:31
 
Fecha de Ingreso: abril-2016
Mensajes: 29
Antigüedad: 2 años, 6 meses
Puntos: 0
error al insertar a base de datos

necesito de su ayuda, al dar clic el boton guardar si guarda la imagen en la carpeta pero no guarda la informacion en la base de datos
la base de datos se llama galeria, la tabla se llama productos, los campos que tienen la tabla son: id, titulo, imagen, descripcion, fecha

subir.view.php
Código HTML:
Ver original
  1.     <meta charset="UTF-8">
  2.     <meta name="viewport" content="width=device-width, user-scalable=no,
  3.     initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  4. <link href="https://fonts.googleapis.com/css?family=Slabo+27px" rel="stylesheet">
  5. <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous">
  6. <link rel="stylesheet" href="css/estilos.css">
  7. </head>
  8.     <header>
  9.     <div class="contenedor">
  10.         <h1 class="titulo">Subir Foto</h1>
  11.     </div>
  12.     </header>
  13.  
  14.     <div class="contenedor">
  15.         <form class="formulario" method="POST" enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
  16.             <label for="foto">Selecciona tu foto</label>
  17.             <input type="file" id="foto" name="image">
  18.  
  19.             <label for="titulo">Titulo de la foto</label>
  20.             <input type="text" id="titulo" name="title">
  21.  
  22.             <label for="texto">Descripción:</label>
  23.             <textarea name="description" id="texto" placeholder="Ingresa una descripción"></textarea>
  24.  
  25.             <?php if (isset($error)): ?>
  26.                 <p class="error"><?php echo $error; ?></p>
  27.             <?php endif ?>
  28.  
  29.             <input type="submit" class="submit" value="Guardar">
  30.  
  31.         </form>
  32.     </div>
  33. </body>
  34. </html>

funciones.php
Código PHP:
Ver original
  1. <?php
  2.  
  3. function conexion($db, $usuario, $pass){
  4.     try {
  5.         $conexion = new PDO("mysql:host=localhost;dbname=$db", $usuario, $pass);
  6.         return $conexion;
  7.     } catch (PDOException $e) {
  8.         return false;
  9.     }
  10. }
  11.  
  12. ?>

subir.php
Código PHP:
Ver original
  1. <?php
  2.  
  3. require 'funciones.php';
  4. $conexion = conexion('galeria', 'root', '');
  5.  
  6. if (!$conexion) {
  7.     die();
  8. }
  9.  
  10. if ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_FILES)) {
  11.     $check = @getimagesize($_FILES['image']['tmp_name']);
  12.     if ($check !== false) {
  13.         $carpeta_destino = 'fotos/';
  14.         $archivo_subido = $carpeta_destino . $_FILES['image']['name'];
  15.         move_uploaded_file($_FILES['image']['tmp_name'], $archivo_subido);
  16.  
  17.         $statement = $conexion->prepare('
  18.             INSERT INTO productos (id, titulo, imagen, descripcion)
  19.             VALUES (:title, :image, :description)
  20.         ');
  21.  
  22.         $statement->execute(array(
  23.             ':title' => $_POST['titulo'],
  24.             ':image' => $_FILES['imagen']['name'],
  25.             ':description' => $_POST['descripcion']
  26.         ));
  27.  
  28.         header('Location: index.php');
  29.     } else {
  30.         $error = "El archivo no es una imagen o el archivo es muy pesado";
  31.     }
  32. }
  33.  
  34. require 'views/subir.view.php';
  35.  
  36. ?>
  #2 (permalink)  
Antiguo 01/06/2018, 20:08
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 991
Antigüedad: 7 años, 7 meses
Puntos: 146
Respuesta: error al insertar a base de datos

el error es??? te muestra algun texto de error?
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 02/06/2018, 08:20
 
Fecha de Ingreso: abril-2016
Mensajes: 29
Antigüedad: 2 años, 6 meses
Puntos: 0
Respuesta: error al insertar a base de datos

no muestra ningun error, nada mas no lo guarda en la base de datos
  #4 (permalink)  
Antiguo 02/06/2018, 19:10
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 316
Antigüedad: 9 años, 8 meses
Puntos: 27
Respuesta: error al insertar a base de datos

en el insert no usas el campo fecha, agrega tambien a tu campo fecha para probar
__________________
Asunción Paraguay
Licenciado - Desarrollador Web - Gerente Desarrollo TI (BEPSA)
Espacio Geek - Comunidad Tecnologica
  #5 (permalink)  
Antiguo 02/06/2018, 21:38
Avatar de Alexis88
Objetivista
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.414
Antigüedad: 6 años, 11 meses
Puntos: 926
Respuesta: error al insertar a base de datos

Coloca la ejecución del guardado en una condición e imprime un mensaje para saber qué sucede. También puedes imprimir lo que devuelva PDO::errorInfo(). Por último, puedes imprimir la consulta SQL con los valores a guardar, de tal forma que puedas probarla en el manejador de bases de datos que uses y así halles el origen del problema.

Para todo esto, primero será necesario que desactives la redirección posterior al guardado. Puedes colocar dicha línea como comentario:

Código PHP:
Ver original
  1. //header('Location: index.php');

__________________
«Laissez faire et laissez passer, le monde va de lui même»
  #6 (permalink)  
Antiguo 03/06/2018, 14:42
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.387
Antigüedad: 3 años, 3 meses
Puntos: 253
Respuesta: error al insertar a base de datos

puede empezar por omitir la id en la preparación de la query ya que le indicas de 4 campos cuando en realidad le estas pasando 3 valores, y si tu id es autoincremental no es necesaria declararla
__________________
[email protected]
HITCEL
  #7 (permalink)  
Antiguo 04/06/2018, 09:11
 
Fecha de Ingreso: abril-2016
Mensajes: 29
Antigüedad: 2 años, 6 meses
Puntos: 0
Respuesta: error al insertar a base de datos

Cita:
Iniciado por Alexis88 Ver Mensaje
Coloca la ejecución del guardado en una condición e imprime un mensaje para saber qué sucede. También puedes imprimir lo que devuelva [URL="http://php.net/manual/es/pdo.errorinfo.php"][inline]PDO::errorInfo()[/inline][/URL]. Por último, puedes imprimir la consulta SQL con los valores a guardar, de tal forma que puedas probarla en el manejador de bases de datos que uses y así halles el origen del problema.

Para todo esto, primero será necesario que desactives la redirección posterior al guardado. Puedes colocar dicha línea como comentario:

Código PHP:
Ver original
  1. //header('Location: index.php');

intente lo de imprimir el mensaje y me aparecieron estos errores
Notice: Undefined index: titulo in C:\xampp\htdocs\Galeria\subir.php on line 23

Notice: Undefined index: imagen in C:\xampp\htdocs\Galeria\subir.php on line 24

Notice: Undefined index: descripcion in C:\xampp\htdocs\Galeria\subir.php on line 25


ya los corregi y ya lo guardo en la base de datos



La zona horaria es GMT -6. Ahora son las 18:55.