[Ayuda] Subir varias imagenes al servidor y a la BD con php

  • Autor Autor Caobita
  • Fecha de inicio Fecha de inicio
Caobita

Caobita

Beta
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Buenas, tengo este pequeño script que lo que hace es subir varias imágenes al servidor y a la vez inserta en la base de datos el nombre de la imagen.

El "problema" que tengo es que, al subir (por ejemplo) 3 imágenes, a la hora de insertarlas en la base de datos, lo que hace es crear 3 filas e inserta el nombre de la imagen en su campo correspondiente.

Lo que yo quiero que haga es que inserte los 3 nombres de las imágenes en la misma fila pero en campos o columnas diferentes (imagen1, imagen2, imagen3).

¿Cómo puedo hacerlo?

Os dejo el script y el formulario:

PHP:
<?
include("conectar.php");

//aqui van las imagenes (Carpeta o ruta que usaras)
$path = "http://localhost.es/img/";

//Hacemos un poco de código verificando que se recibieron las imagenes
if(isset($_FILES['file_array'])){

    //almacenamos las propiedades de las imagenes
    $name_array = $_FILES['file_array']['name'];
    $tmp_name_array = $_FILES['file_array']['tmp_name'];
    $type_array = $_FILES['file_array']['type'];
    $size_array = $_FILES['file_array']['size'];
    $error_array = $_FILES['file_array']['error'];

    //recorremos el array de imagenes para subirlas al simultaneo
    for($i = 0; $i < count($tmp_name_array); $i++){
        if(move_uploaded_file($tmp_name_array[$i], "img/".$name_array[$i])){

            //guardamos en la base de datos el nombre
            $act = "INSERT INTO productos (foto1) values ('$name_array[$i]')";
            if(@mysql_query($act)){echo "<img src='".$path.$name_array[$i]."'> Se ha subido exitosamente.<br>";

        }
        else
        {
            //si ocurrio algun problema entonces
            echo "move_uploaded_file function failed for ".$name_array[$i]."<br>";
        }
    }
}}
?>

HTML:
<form action="" method="post" enctype="multipart/form-data">

<p align="center">Foto 1:</p>

<input name="file_array[]" type="file" id="foto1"  >

<p align="center">Foto 2:</p>

<input name="file_array[]" type="file" id="foto2"  >

<p align="center">Foto 3:</p>

<input name="file_array[]" type="file" id="foto3"  >

<input name="enviar" type="submit" value="Guardar" />

</form>

Un saludo, gracias de antemano.
 
Insertar CODE, HTML o PHP:
INSERT INTO productos (foto1) values ('$name_array[$i]');
Ahi le estas diciendo obviamente que las inserte en una sola columna de la fila

Insertar CODE, HTML o PHP:
INSERT INTO productos (foto1,foto2,foto3) values ('imagen1','imagen2','imagen3')";

Eso es todo. Si la tabla no está estructurada de esa manera puedes borrar y volverla a crear como se debe o simplemente haces un alter table para añadir las columnas necesarias.

Saludos
 
[MENTION=49061]ismadobe[/MENTION] Hola, gracias por tu respuesta, yo también pensé hacerlo de esa forma, pero a la hora de adaptarlo a este script me lio un poco ya que el valor es '$name_array[$i]'... ¿Cómo serían los otros valores?
 
Última edición:
[MENTION=49061]ismadobe[/MENTION] Hola, gracias por tu respuesta, yo también pensé hacerlo de esa forma, pero a la hora de adaptarlo a este script me lio un poco ya que el valor es '$name_array[$i]'... ¿Cómo serían los otros valores?

$name_array[0], $name_array[1] y $name_array[2] sin necesidad del for. Con el for simplemente mueves cada uno de los archivos
 
$name_array[0], $name_array[1] y $name_array[2] sin necesidad del for. Con el for simplemente mueves cada uno de los archivos

Bien, ya he conseguido hacer que el nombre de cada imagen se inserte en el campo correspondiente de la BD en la misma fila, pero tengo un problema y es que se duplica/repite 3 veces en la BD...

Te pongo esta imagen para que lo entiendas, se repite 3 veces los mismos datos:

AAAAAAAAAAAAAA.webp

- - - Actualizado - - -

¿Alguien que me pueda ayudar, por favor?
 
Última edición:
Atrás
Arriba