New question

Question:

Date: 30-01-2020 06:07:23 (In Spanish)

Como subir múltiples archivos en PHP y guardarlos en una base de datos con PDO[Unresolved]

Hola amigos, estoy desarrollando un formulario que contiene un input de tipo "FILE", resulta que quiero subir múltiples archivos al servidor, pero mi problema llega cuando intento subir los archivos a la base de datos que debido a un error en la consulta de SQL en el campo de la base de datos no me coloca la ruta de la imagen, si no que me colocar "Array",

Código de HTML, input type file:
<input type="file" name="product_foto" multiple>


Código de PHP:
// Procesamiento y alamacenamiento de las foto del producto
    $imagesName = $images['name'];
    $imagesType = $images['type'];

    if($imagesType == "image/jpg" || $imagesType == "image/jpeg" || $imagesType == "image/png" || $imagesType == "image/git" || $imagesType == "image/gif" || $imagesType == ""){


        if(!is_dir('./product_fotos')){
            mkdir('./product_fotos', 0777);
        }

        move_uploaded_file($images['tmp_name'], './product_fotos/'.$imagesName);

    }else{
        $errors .= 'Las fotos o una de las fotos que has introducido tiene un formato que no es valido <br/>';
    }


Consulta SQL PDO
// No hay problemas y pasa por nuestro filtro, dejalo registrar el producto
    if(empty($errors)){
        $statement = $conexion->prepare('INSERT INTO product (id, user_id, title, description, moneda, price, video, miniatura, images, category, state, create_at) VALUES(
            null, :id, :title, :description, :moneda, :price, :video, :miniaturaName, :imagesName, :category, null, NOW())'
        );
        $statement->execute(array(
            ':id' => $id,
            ':title' => $title,
            ':description' => $description,
            ':moneda' => $moneda,
            ':price' => $price,
            ':video' => $video,
            ':miniaturaName' => $miniaturaName,
            ':imagesName' => $imagesName,
            ':category' => $category
        ));

        $success = 'Felicidades, has registrado tu producto con exito';
    }


Nota: He quitado los cambias que ya había hecho y he dejado el proyecto como si es para subir solo una imagen, pero en verdad la misión es subir múltiples imágenes a la base de datos con una consulta PDO

Si me ayudan se los estaré agradeciendo en el alma. Un cordial saludo y buen código.
Tags: MySQL - PHP - PHP PDO - Upload Files Votes: 0 - Answers: 2 - Views: 11 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 05-02-2020 13:42:55 Hola Braylin
    En principio no estarias subiendo los archivos a la base de datos, sino que almacenas los archivos en una carpeta específica. En la base de datos almacenarias los nombres de los archivos para referenciarlos al registro que se esta insertando.

    Aclarado esto.
    Te paso un codigo de ejemplo que solo me remitiré a la subida de archivos a una carpeta.

    index.php Formulario para cargar múltiples archivos

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset=utf-8>
    <title>Cargar múltiples archivos con PHP</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://code.jquery.com/jquery-3.2.1.min.js" ></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" ></script>
    <style type="text/css">
    * {
    	font-family:Segoe, "Segoe UI", "DejaVu Sans", "Trebuchet MS", Verdana, sans-serif
    }
    .main {
    	margin:auto;
    	border:1px solid #7C7A7A;
    	width:70%;
    	text-align:left;
    	padding:30px;
    	background:#85c587
    }
    input[type=submit] {
    	background:#6ca16e;
    	width:100%;
    	padding:5px 15px;
    	background:#ccc;
    	cursor:pointer;
    	font-size:16px;
    }
    input[type=text] {
    	width:40%;
    	padding:5px 15px;
    	height:25px;
    	font-size:16px;
    }
    .form-control {
    	padding: 0px 0px;
    }
    </style>
    </head>
    <body bgcolor="#bed7c0">
    <br>
    <div class="main">
      <h1>Cargar múltiples archivos PHP</h1>
      <div class="panel panel-primary">
        <div class="panel-body">
          <form name="MiForm" id="MiForm" method="post" action="cargar.php" enctype="multipart/form-data">
            <h4 class="text-center">Cargar Múltiple Archivos</h4>
            <div class="form-group">
              <label class="col-sm-2 control-label">Archivos</label>
              <div class="col-sm-8">
                <input type="file" class="form-control" id="miarchivo[]" name="miarchivo[]" multiple="">
              </div>
              <button type="submit" class="btn btn-primary">Cargar Multiple</button>
            </div>
          </form>
        </div>
      </div>
    </div>
    </body>
    </html>
    



    cargar.php Obtiene los archivos del formulario y los almacena en la carpeta archivos/'

    <?php
    // recorremos el array
    	foreach($_FILES["miarchivo"]['tmp_name'] as $key => $tmp_name)
    	{
    		//condicional si el fuchero existe
    		if($_FILES["miarchivo"]["name"][$key]) {
    			// Nombres de archivos de temporales
    			$archivonombre = $_FILES["miarchivo"]["name"][$key]; 
    			$fuente = $_FILES["miarchivo"]["tmp_name"][$key]; 
    			
    			$carpeta = 'archivos/'; //Declaramos el nombre de la carpeta que guardara los archivos
    			
    			if(!file_exists($carpeta)){
    				mkdir($carpeta, 0777) or die("Hubo un error al crear el directorio de almacenamiento");	
    			}
    			
    			$dir=opendir($carpeta);
    			$target_path = $carpeta.'/'.$archivonombre; //indicamos la ruta de destino de los archivos
    			
    	
    			if(move_uploaded_file($fuente, $target_path)) {	
    				echo "El Archivo <b> $archivonombre </b>se han cargado de forma correcta.<br>";
    				} else {	
    				echo "Se ha producido un error, por favor revise los archivos e intentelo de nuevo.<br>";
    			}
    			closedir($dir); //Cerramos la conexion con la carpeta destino
    		}
    	}
    


    Espero que te sea útil como para que puedas hacer tus pruebas y adaptarlo a tus propósitos

    Saludos
      Votes: 2 - Link answer
     
  • Date: 06-02-2020 13:06:15 Muy bien Walter, voy a hacer la prueba. cualquier cosa le aviso   Votes: 0 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In