Subir varias imágenes con php y sql

Soy nuevo en PHP y estoy tratando de hacer un cargador de imágenes múltiples. Mi formulario se ve así:

Izberi datoteko:

Izberi Album:
<?php foreach ($albums as $album) { echo '', $album['name'] ,''; } ?>

Y en el lado php hice algo como:

 if (isset($_FILES['image'], $_POST['album_id'])) { $image_name = $_FILES['image']['name']; $image_size = $_FILES['image']['size']; $image_temp = $_FILES['image']['tmp_name']; $allowed_ext = array('jpg', 'jpeg', 'png', 'gif'); $a = explode('.', $image_name); $image_ext = strtolower(end($a)); $album_id = $_POST['album_id']; $errors = array(); if (empty($image_name) || empty($album_id)) { $errors[] = '

Nekaj manjka!

'; } else { if (in_array($image_ext, $allowed_ext) === false) { $errors[] = '

Izbrani tip datoteke ni dovoljen!

'; } if ($image_size > 2097152) { $errors[] = '

Izbrana datoteka je prevelika! Maksimalna velikost datoteke mora biti 2mb!

'; } } if (!empty($errors)) { foreach ($errors as $error) { echo $error; } } else { upload_image($image_temp, $image_ext, $album_id); header('Location: view_album.php?album_id='.$album_id); exit(); } }

Creé una función que coloca la imagen en la base de datos. Esta función se ve así:

 function upload_image($image_temp, $image_ext, $album_id) { $album_id = (int)$album_id; mysql_query("INSERT INTO `images` VALUES ('', '". $_SESSION['user_id'] ."', '$album_id', UNIX_TIMESTAMP(), '$image_ext')"); $image_id = mysql_insert_id(); $image_file = $image_id.'.'.$image_ext; move_uploaded_file($image_temp, 'galerija/'.$album_id.'/'.$image_file); create_thumb('galerija/'.$album_id.'/', $image_file, 'galerija/thumbs/'.$album_id.'/'); } 

Esto funciona bien para subir solo una imagen. Traté de crear un formulario para múltiples archivos de selección y puedo seleccionar más imágenes, pero en la base de datos solo se obtiene la primera imagen. Intenté poner foreach() en mi script pero no sé dónde y cómo debo ponerlo. Entonces, ¿cómo puedo cambiar mi script para poder subir más imágenes a mi base de datos? Simplemente no puedo resolverlo. ¡Cualquier ayuda sería genial!

A. PHP no sería capaz de ver tus múltiples archivos como ese

Reemplazar

   

Con

   

Para recorrer estos archivos necesitas algo como

 foreach ( $_FILES['image']['tmp_name'] as $key => $val ) { $fileName = $_FILES['image']['name'][$key]; $fileSize = $_FILES['image']['size'][$key]; $fileTemp = $_FILES['image']['tmp_name'][$key]; $fileExt = pathinfo($fileName, PATHINFO_EXTENSION); $fileExt = strtolower($fileExt); // Continue } 

puedes encontrar esto útil:

  

crea una carpeta en tu raíz usando ftp. lo nombró como “imágenes”. todas las imágenes serán cargadas a esta carpeta. cambiar el nombre del tipo de entrada según el tuyo.

feliz encoding !!

Cambia tu nombre = “imagen” a nombre = “imagen []”

ejemplo:

 

Usted recibió una imagen de una base de datos porque envió una sola imagen (no en un bucle foreach), falló:

 upload_image($image_temp, $image_ext, $album_id); 

Debería en formato HTML agregar una matriz de imágenes cargadas, como:

   

Y recibe un bucle de imágenes:

 if (isset($_POST["image"])) { $album_id = (int)$_POST['album_id']; foreach ($_FILES["image"] as $images) { $image_temp = $images['tmp_name']; $image_name = $images['name']; $allowed_ext = array('jpg', 'jpeg', 'png', 'gif'); $a = explode('.', $image_name); $image_ext = strtolower(end($a)); upload_image($image_temp, $image_ext, $album_id); } } 

Si no lo está var_dump($_FILES) con var_dump($_FILES) para verificar la matriz en un formulario HTML.

¡Observe que también es víctima de inyección de SQL! Lea en Stackoverflow sobre las inyecciones de SQL.