Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Guardar el nombre de las imagenes en una BD

Estas en el tema de Guardar el nombre de las imagenes en una BD en el foro de PHP en Foros del Web. Hola a todos... Me podrian ayudar con esto ? Tengo un formulario en html con 3 inputs para cargar fotos, funciona perfecto pero ahora quiero ...
  #1 (permalink)  
Antiguo 14/04/2017, 11:35
Avatar de thedenis  
Fecha de Ingreso: mayo-2013
Mensajes: 42
Antigüedad: 11 años, 7 meses
Puntos: 1
Exclamación Guardar el nombre de las imagenes en una BD

Hola a todos...

Me podrian ayudar con esto ?

Tengo un formulario en html con 3 inputs para cargar fotos, funciona perfecto pero ahora quiero guardar los nombres de las imagenes subidas en una bd (cuando subo estas imagenes son renombradas sin perder su extension) y mi peticion es si me podrian ayudar con el codigo para insertarlas en una "fila" de mi tabla "Jugador", ya he intentado guardarlas pero no se como extraer los nuevos nombres para despues guardarlas, no se como almacenarlas en un variable

PD: las imagenes pueden ser jpg , png o diferentes extensiones, y tiene que guardar con su extension


TABLA JUGADOR
---------------------------------------------------------
| id | nombre | apellidos | foto1 | foto2 | foto3 |
--------------------------------------------------------
1 | juan | perez |ac.jpg| xd.png| asd.gif|
--------------------------------------------------------

CODIGO PHP

Código:
<?php

	include ('conexion.php');


function generarCodigo($longitud) {
 $key = '';
 $pattern = '1234567890abcdefghijklmnopqrstuvwxyz';
 $max = strlen($pattern)-1;
 for($i=0;$i < $longitud;$i++) $key .= $pattern{mt_rand(0,$max)};
 return $key;
}



$valid_formats = array("jpg", "png","JPG","jpeg","JPEG","PNG","gif");
$max_file_size = 1024*1000; //100 kb
$path = "images/"; // Upload directory
$count = 0;

		$letragenerada = generarCodigo(6);
		$random=rand(1,10);


if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){
	// Loop $_FILES to exeicute all files
	foreach ($_FILES['userImage']['name'] as $f => $name) {    


		

		$ext = pathinfo($_FILES['userImage']['name'][$f], PATHINFO_EXTENSION);

		$lid= $letragenerada."".$random.".".$ext;
		

	    if ($_FILES['userImage']['error'][$f] == 4) {
	        continue; // Skip file if any error found
	    }	       
	    if ($_FILES['userImage']['error'][$f] == 0) {	           
	        if ($_FILES['userImage']['size'][$f] > $max_file_size) {
	            $message[] = "$name is too large!.";
	            continue; // Skip large files
	        }
			elseif( ! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats) ){
				$message[] = "$name is not a valid format";
				continue; // Skip invalid file formats
			}
	        else{ // No error found! Move uploaded files 

	            if(move_uploaded_file($_FILES["userImage"]["tmp_name"][$f], $path.$lid))


	            $count++; // Number of successfully uploaded file
	         




	        }


	    }


	}


// Supongo que aqui estaria el codigo para insertar ??
}


?>
  #2 (permalink)  
Antiguo 14/04/2017, 14:05
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.139
Antigüedad: 13 años, 9 meses
Puntos: 171
Respuesta: Guardar el nombre de las imagenes en una BD

El array de nombres de imagen lo tienes aqui:

Código PHP:
Ver original
  1. $_FILES['userImage']['name'];
Código PHP:
Ver original
  1. //puedes ocuparlo con variable a string asi:
  2. $nombres_imagenes = implode(",",$_FILES['userImage']['name']);
  3.  
  4. //ahora almacenas la variable con el SQL:
  5. $sql = "INSERT INTO {tabla} (imagenes) VALUES (".nombres_imagenes.")";
  6. //demas codigo de query
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 14/04/2017, 15:36
Avatar de thedenis  
Fecha de Ingreso: mayo-2013
Mensajes: 42
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Guardar el nombre de las imagenes en una BD

Cita:
Iniciado por petit89 Ver Mensaje
El array de nombres de imagen lo tienes aqui:

Código PHP:
Ver original
  1. $_FILES['userImage']['name'];
Código PHP:
Ver original
  1. //puedes ocuparlo con variable a string asi:
  2. $nombres_imagenes = implode(",",$_FILES['userImage']['name']);
  3.  
  4. //ahora almacenas la variable con el SQL:
  5. $sql = "INSERT INTO {tabla} (imagenes) VALUES (".nombres_imagenes.")";
  6. //demas codigo de query

seria perfecto porque funciona con los mismos nombres, pero lo que yo busco es poner los nuevos nombres generados... como recuperaria ese array con los nuevos nombres ??? tu codigo si me sirve, sino buscara guardar con nuevo nombre la imagen
  #4 (permalink)  
Antiguo 14/04/2017, 15:55
 
Fecha de Ingreso: septiembre-2015
Mensajes: 142
Antigüedad: 9 años, 3 meses
Puntos: 13
Respuesta: Guardar el nombre de las imagenes en una BD

es básicamente lo mismo.
Código PHP:
Ver original
  1. move_uploaded_file($_FILES["userImage"]["tmp_name"][$f], $path.$lid))

$path : directorio.
$lid : nombre( que generas )

puedes simplemente si se mueve un archivo insertas en la DB y ya.
  #5 (permalink)  
Antiguo 14/04/2017, 16:15
Avatar de thedenis  
Fecha de Ingreso: mayo-2013
Mensajes: 42
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Guardar el nombre de las imagenes en una BD

Cita:
Iniciado por sonystar_17 Ver Mensaje
es básicamente lo mismo.
Código PHP:
Ver original
  1. move_uploaded_file($_FILES["userImage"]["tmp_name"][$f], $path.$lid))

$path : directorio.
$lid : nombre( que generas )

puedes simplemente si se mueve un archivo insertas en la DB y ya.
Cita:
Iniciado por petit89 Ver Mensaje
El array de nombres de imagen lo tienes aqui:

Código PHP:
Ver original
  1. $_FILES['userImage']['name'];
Código PHP:
Ver original
  1. //puedes ocuparlo con variable a string asi:
  2. $nombres_imagenes = implode(",",$_FILES['userImage']['name']);
  3.  
  4. //ahora almacenas la variable con el SQL:
  5. $sql = "INSERT INTO {tabla} (imagenes) VALUES (".nombres_imagenes.")";
  6. //demas codigo de query


Hasta el momento lo tengo asi :


Código:
<?php

	include ('conexion.php');


function generarCodigo($longitud) {
 $key = '';
 $pattern = '1234567890abcdefghijklmnopqrstuvwxyz';
 $max = strlen($pattern)-1;
 for($i=0;$i < $longitud;$i++) $key .= $pattern{mt_rand(0,$max)};
 return $key;
}



$valid_formats = array("jpg", "png","JPG","jpeg","JPEG","PNG","gif");
$max_file_size = 1024*1000; //100 kb
$path = "images/"; // Upload directory
$count = 0;

		$letragenerada = generarCodigo(6);
		$random=rand(1,10);


if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){
	// Loop $_FILES to exeicute all files
	foreach ($_FILES['userImage']['name'] as $f => $name) {    


		

		$ext = pathinfo($_FILES['userImage']['name'][$f], PATHINFO_EXTENSION);

		$lid= $letragenerada."".$random.".".$ext;
		

	    if ($_FILES['userImage']['error'][$f] == 4) {
	        continue; // Skip file if any error found
	    }	       
	    if ($_FILES['userImage']['error'][$f] == 0) {	           
	        if ($_FILES['userImage']['size'][$f] > $max_file_size) {
	            $message[] = "$name is too large!.";
	            continue; // Skip large files
	        }
			elseif( ! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats) ){
				$message[] = "$name is not a valid format";
				continue; // Skip invalid file formats
			}
	        else{ // No error found! Move uploaded files 

	            if(move_uploaded_file($_FILES["userImage"]["tmp_name"][$f], $path.$lid))


	            $count++; // Number of successfully uploaded file
	         




	        }


	    }


	}


$imagenes = implode(",",$_FILES['userImage']['name']);
$array = explode(",", $imagenes);




					$Sql="insert into jugador (imagen1,imagen2,imagen3) values(
							'".$array[0]."',
							'".$array[1]."',
							'".$array[2]."')";
					
					
					
					mysql_query($Sql);


}


?>
Funciona pero sin el nuevo nombre generado, solo con el nombre original del archivo

@sonystar_17

como pongo esto, en que linea ??

move_uploaded_file($_FILES["userImage"]["tmp_name"][$f], $path.$lid))

Última edición por thedenis; 14/04/2017 a las 16:31
  #6 (permalink)  
Antiguo 14/04/2017, 16:47
 
Fecha de Ingreso: septiembre-2015
Mensajes: 142
Antigüedad: 9 años, 3 meses
Puntos: 13
Respuesta: Guardar el nombre de las imagenes en una BD

has un array con el nombre que generas bro.

Código PHP:
Ver original
  1. $imagenes[] = $lid;

una cosa que noto es que tu quieres generar nombres al azar de las imágenes no ?
para eso $random=rand(1,10); y la función generarCodigo();
pero no deberías llamarles dentro del loop ? para que te genere una cadena al azar por cada imagen.

suerte.
  #7 (permalink)  
Antiguo 14/04/2017, 16:56
Avatar de thedenis  
Fecha de Ingreso: mayo-2013
Mensajes: 42
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Guardar el nombre de las imagenes en una BD

Cita:
Iniciado por sonystar_17 Ver Mensaje
has un array con el nombre que generas bro.

Código PHP:
Ver original
  1. $imagenes[] = $lid;

una cosa que noto es que tu quieres generar nombres al azar de las imágenes no ?
para eso $random=rand(1,10); y la función generarCodigo();
pero no deberías llamarles dentro del loop ? para que te genere una cadena al azar por cada imagen.

suerte.
gracias por lo del nombre, no lo habia notado pero ya lo solucione con esto dentro del ciclo


Código:
--------ESTO ESTA DENTRO DEL CICLO-------

	  $randomtres=(rand(1,1)+$count);

--------------------------------------------------

	$lid= $letragenerada."".$random.'_'.$randomtres.".".$ext;


Pero esto :

Código:
$imagenes[] = $lid;
en que linea lo pongo ? lo reemplaze por esto:

Código:
//$imagenes = implode(",",$_FILES['userImage']['name']);
y me tiro error

Warning: explode() expects parameter 2 to be string, array given in
  #8 (permalink)  
Antiguo 14/04/2017, 17:06
 
Fecha de Ingreso: septiembre-2015
Mensajes: 142
Antigüedad: 9 años, 3 meses
Puntos: 13
Respuesta: Guardar el nombre de las imagenes en una BD

Código PHP:
Ver original
  1. if(move_uploaded_file($_FILES["userImage"]["tmp_name"][$f], $path.$lid))
  2.  
  3.  
  4.                 $count++; // Number of successfully uploaded file
  5.                 $imagenes[] = $lid;






y ya donde tienes lo otro :


Código PHP:
Ver original
  1. $Sql="insert into jugador (imagen1,imagen2,imagen3) values(
  2.                             '".$imagenes[0]."',
  3.                             '".$imagenes[1]."',
  4.                             '".$imagenes[2]."')";
  5.                    
  6.                    
  7.                    
  8.                     mysql_query($Sql);
;
  #9 (permalink)  
Antiguo 14/04/2017, 17:55
Avatar de thedenis  
Fecha de Ingreso: mayo-2013
Mensajes: 42
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Guardar el nombre de las imagenes en una BD

Cita:
Iniciado por sonystar_17 Ver Mensaje
Código PHP:
Ver original
  1. if(move_uploaded_file($_FILES["userImage"]["tmp_name"][$f], $path.$lid))
  2.  
  3.  
  4.                 $count++; // Number of successfully uploaded file
  5.                 $imagenes[] = $lid;






y ya donde tienes lo otro :


Código PHP:
Ver original
  1. $Sql="insert into jugador (imagen1,imagen2,imagen3) values(
  2.                             '".$imagenes[0]."',
  3.                             '".$imagenes[1]."',
  4.                             '".$imagenes[2]."')";
  5.                    
  6.                    
  7.                    
  8.                     mysql_query($Sql);
;


Gracias mi bro !! pero me falta un detallito cuando guardo solo 1 o 2 imagenes me tira un error pero si cargo las 3 imagenes funcionan perfecto, sera porque la variable viene vacia ? como haria para solucionar eso el ultimo paso para acabar con esto espero que me puedas ayudar...

Ejm cargue solo 1 imagen y me tiro estos 2 errores pero si guarda en la bd

Undefined offset: 1 in...
Undefined offset: 2 in...
  #10 (permalink)  
Antiguo 14/04/2017, 20:18
 
Fecha de Ingreso: septiembre-2015
Mensajes: 142
Antigüedad: 9 años, 3 meses
Puntos: 13
Respuesta: Guardar el nombre de las imagenes en una BD

has algo así :
agrega un contador que inicie desde 1.

Código PHP:
Ver original
  1. $valid_formats = array("jpg", "png","JPG","jpeg","JPEG","PNG","gif");
  2. $max_file_size = 1024*1000; //100 kb
  3. $path = "images/"; // Upload directory
  4. $count = 0;
  5. $z = 1;


luego en :

Código PHP:
Ver original
  1. if(move_uploaded_file($_FILES["userImage"]["tmp_name"][$f], $path.$lid))
  2.  
  3.  
  4.                 $count++; // Number of successfully uploaded file
  5.                 $imagenes[] = $lid;
  6.                 $cadena[] = "imagen$z";
  7.                 $z++;



y ya acá :


Código PHP:
Ver original
  1. $nombres_imagenes = implode(",",$imagenes);
  2. $new_cadena= implode(",",$cadena);
  3.  
  4. $Sql= "insert into jugador (".$new_cadena.") values(".$nombres_imagenes.")";
  #11 (permalink)  
Antiguo 15/04/2017, 09:32
Avatar de thedenis  
Fecha de Ingreso: mayo-2013
Mensajes: 42
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Guardar el nombre de las imagenes en una BD

Cita:
Iniciado por sonystar_17 Ver Mensaje
has algo así :
agrega un contador que inicie desde 1.

Código PHP:
Ver original
  1. $valid_formats = array("jpg", "png","JPG","jpeg","JPEG","PNG","gif");
  2. $max_file_size = 1024*1000; //100 kb
  3. $path = "images/"; // Upload directory
  4. $count = 0;
  5. $z = 1;


luego en :

Código PHP:
Ver original
  1. if(move_uploaded_file($_FILES["userImage"]["tmp_name"][$f], $path.$lid))
  2.  
  3.  
  4.                 $count++; // Number of successfully uploaded file
  5.                 $imagenes[] = $lid;
  6.                 $cadena[] = "imagen$z";
  7.                 $z++;



y ya acá :


Código PHP:
Ver original
  1. $nombres_imagenes = implode(",",$imagenes);
  2. $new_cadena= implode(",",$cadena);
  3.  
  4. $Sql= "insert into jugador (".$new_cadena.") values(".$nombres_imagenes.")";

Gracias mi bro !! me ayudaste a resolverlo... saludos !!! que tengas buen dia.

Etiquetas: imagenes, myslq
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:49.