Subir 2 imagenes con php

  • Autor Autor hastati
  • Fecha de inicio Fecha de inicio
hastati

hastati

Delta
bueno si subo una imagen con el siguiente script que les mostrare funciona bien pero al editarlo para que suba 2, utilizando arrays, me sube las dos fotos pero me muestra todos los errores de las imagenes que hay dentro del script y tambien no se realiza la consulta en la base de datos, espero me puedan ayudar, aqui les dejo el codigo:

PHP:
for ($i = 0; $i <= 2; $i++) {
$target_dir = "../uploads/";
$j = 1;
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"][$i]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"][$i]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"][$i] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"][$i], $target_file)) {
$parte1="";
$parte1.= "http://demo.com";
$parte1.= substr($target_file, 2);

       
// Inserta el nuevo usuario a la base de datos.  
        if ($insert_stmt = $mysqli->prepare("INSERT INTO categorias (imagen$j) VALUES (?)")) {
            $insert_stmt->bind_param('s', $parte1);
            // Ejecuta la consulta preparada.
            if (! $insert_stmt->execute()) {
                header('Location: ../error.php?err=Registration failure: INSERT');
            }
        }
$j = $j + 1;
} else {
        echo "Sorry, there was an error uploading your file.";
    }
}
}
header('Location: ../añadir.php');

- - - Actualizado - - -

okay ya resolvi lo de la insercion en la base de datos, ya lo hace el error era que la tabla no era categorias si no otra, pero aun me sigue tirando todos los errores y no me renvia a el header, alguien que me pueda ayudar?

- - - Actualizado - - -
[MENTION=9679]cicklow[/MENTION] crees poder echarme una mano?

- - - Actualizado - - -

ahora mi problema es que las imagenes se suben en diferentes id en la base de datos, no en el mismo :c
 
Última edición:
El tema de disitnos ID... a que te refieres, si tienes autoincrement se crearan disintos id... si son 2 imagenes para cada categoria, teines que asignarle un id a cada imagen y guardar ese id junto a las imagenes...

arriba del for colocar:
PHP:
$ID = uniqid();

y la consulta mysql seria:
PHP:
INSERT INTO categorias (imagen$j) VALUES ($parte1,$ID);
 
El tema de disitnos ID... a que te refieres, si tienes autoincrement se crearan disintos id... si son 2 imagenes para cada categoria, teines que asignarle un id a cada imagen y guardar ese id junto a las imagenes...

arriba del for colocar:
PHP:
$ID = uniqid();

y la consulta mysql seria:
PHP:
INSERT INTO categorias (imagen$j) VALUES ($parte1,$ID);

mira asi esta la base de datos:

id | titulo |imagen1 |imagen2 |categoria |HD |Opcion1 |Opcion2 |Opcion3
1 | NULL |http://demo.com/uploads/cloud_public.png |NULL |NULL |NULL |NULL |NULL |NULL
2 |NULL |http://demo.com/uploads/cloud_private.png |NULL| NULL |NULL |NULL |NULL NULL

y yo quiero que al subir me quede la base de datos asi:

id | titulo |imagen1 |imagen2 |categoria |HD |Opcion1 |Opcion2 |Opcion3
1 | NULL |http://demo.com/uploads/cloud_public.png |http://demo.com/uploads/cloud_private.png |NULL |NULL |NULL |NULL |NULL

a eso me refiero con los id, saludos.
 
mira asi esta la base de datos:

id | titulo |imagen1 |imagen2 |categoria |HD |Opcion1 |Opcion2 |Opcion3
1 | NULL |http://demo.com/uploads/cloud_public.png |NULL |NULL |NULL |NULL |NULL |NULL
2 |NULL |http://demo.com/uploads/cloud_private.png |NULL| NULL |NULL |NULL |NULL NULL

y yo quiero que al subir me quede la base de datos asi:

id | titulo |imagen1 |imagen2 |categoria |HD |Opcion1 |Opcion2 |Opcion3
1 | NULL |http://demo.com/uploads/cloud_public.png |http://demo.com/uploads/cloud_private.png |NULL |NULL |NULL |NULL |NULL

a eso me refiero con los id, saludos.

cambia esto:
PHP:
// Inserta el nuevo usuario a la base de datos.  
        if ($insert_stmt = $mysqli->prepare("INSERT INTO categorias (imagen$j) VALUES (?)")) {
            $insert_stmt->bind_param('s', $parte1);
            // Ejecuta la consulta preparada.
            if (! $insert_stmt->execute()) {
                header('Location: ../error.php?err=Registration failure: INSERT');
            }
        }
por
PHP:
$IMAGEN[] = $parte1;
y antes de
PHP:
header('Location: ../añadir.php');
PHP:
$mysqli->query("INSERT INTO categorias (imagen1,imagen2) VALUES('".$IMAGEN[0]."','".$IMAGEN[1]."');";
 
cambia esto:
PHP:
// Inserta el nuevo usuario a la base de datos.  
        if ($insert_stmt = $mysqli->prepare("INSERT INTO categorias (imagen$j) VALUES (?)")) {
            $insert_stmt->bind_param('s', $parte1);
            // Ejecuta la consulta preparada.
            if (! $insert_stmt->execute()) {
                header('Location: ../error.php?err=Registration failure: INSERT');
            }
        }
por
PHP:
$IMAGEN[] = $parte1;
y antes de
PHP:
header('Location: ../añadir.php');
PHP:
$mysqli->query("INSERT INTO categorias (imagen1,imagen2) VALUES('".$IMAGEN[0]."','".$IMAGEN[1]."');";

excelente ya funciono ya sube las dos imagenes a la base de datos con el mismo id, ahora mi pregunta es porque me muestra todos los errores y no me redirige al header mira esto es lo que me sale:

Sorry, file already exists.Sorry, only JPG, JPEG, PNG & GIF files are allowed.Sorry, your file was not uploaded.

mas si se suben las fotos y se publican en la base de datos.

por cierto muchas gracias por la ayuda
 
excelente ya funciono ya sube las dos imagenes a la base de datos con el mismo id, ahora mi pregunta es porque me muestra todos los errores y no me redirige al header mira esto es lo que me sale:

Sorry, file already exists.Sorry, only JPG, JPEG, PNG & GIF files are allowed.Sorry, your file was not uploaded.

mas si se suben las fotos y se publican en la base de datos.

por cierto muchas gracias por la ayuda

porque se esta ejecutando 3 veces y no 2...
tienes:
PHP:
for ($i = 0; $i <= 2; $i++) {
eso seria 0 1 2... y en realidad tiene que ser
PHP:
for ($i = 0; $i < 2; $i++) {
0 1 (2 objetos del array)

Al pasar 3 veces, la 3° no tiene nada y por eso te aparecen los errores en pantalla...
 

Temas similares

juanmanuel
Respuestas
7
Visitas
266
UserAlfa
UserAlfa
alejandro1507
Respuestas
9
Visitas
351
alejandro1507
alejandro1507
WWWW
Respuestas
12
Visitas
639
josemsg75
josemsg75
Atrás
Arriba