Subir 2 imagenes con php

hastati Seguir

Delta
Verificación en dos pasos desactivada
Desde
1 May 2014
Mensajes
554
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:

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
967
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);
 

hastati

Delta
Verificación en dos pasos desactivada
Desde
1 May 2014
Mensajes
554
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.
 

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
967
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]."');";
 

hastati

Delta
Verificación en dos pasos desactivada
Desde
1 May 2014
Mensajes
554
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
 

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
967
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...
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba