Código de PHP - Guardar y mostrar una imagen de una base de datos MySQL

Imágen de perfil

Guardar y mostrar una imagen de una base de datos MySQLgráfica de visualizaciones


PHP

Actualizado el 2 de Diciembre del 2014 por Administrador (718 códigos) (Publicado el 11 de Febrero del 2002)
457.699 visualizaciones desde el 11 de Febrero del 2002
Código para guardar y mostrar una imagen desde PHP en una base de datos MySQL. (Actualizado a PHP5).

Se han desarrollado tres versiones que hacen lo mismo utilizando diferentes conectores de MySQL:
mysql_
mysqli_
mysqli orientado a objetos

Requerimientos

Para poder utilizar este código, necesitáis disponer de una base de datos denominada 'imagen', con una tabla denominada 'imagephp'.
Se precisan dos archivos que se muestra en el código: imagen_agregar.php y imagen_mostrar.php

Versión 1 - mysql_
estrellaestrellaestrellaestrellaestrella(52)

Actualizado el 2 de Diciembre del 2014 (Publicado el 11 de Febrero del 2002)gráfica de visualizaciones de la versión: Versión 1 - mysql_
145.094 visualizaciones desde el 11 de Febrero del 2002

Version 2 - mysqli_
estrellaestrellaestrellaestrellaestrella(3)

Publicado el 2 de Diciembre del 2014gráfica de visualizaciones de la versión: Version 2 - mysqli_
10.860 visualizaciones desde el 2 de Diciembre del 2014

Version 3 - mysqli orientado a objetos
estrellaestrellaestrellaestrellaestrella(65)

Publicado el 2 de Diciembre del 2014gráfica de visualizaciones de la versión: Version 3 - mysqli orientado a objetos
301.746 visualizaciones desde el 2 de Diciembre del 2014
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

Esta nueva versión utiliza mysqli orientado a objetos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
########## imagen_agregar.php ##########
# http://www.lawebdelprogramador.com
 
/*
La base de datos utilizada para el ejemplo se llama imagenes

CREATE TABLE IF NOT EXISTS `imagephp` (
  `id` smallint(6) NOT NULL auto_increment,
  `anchura` smallint(6) NOT NULL,
  `altura` smallint(6) NOT NULL,
  `tipo` char(15) NOT NULL,
  `imagen` mediumblob NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM;
*/
?>
<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <style>
    .error {font-weight: bold; color:red;}
    .mensaje {color:#030;}
    .listadoImagenes img {float:left;border:1px solid #ccc; padding:2px;margin:2px;}
    </style>
</head>
 
<body>
 
<?php
# Conectamos con MySQL
$mysqli=new mysqli("localhost","root","123456","imagen");
if (mysqli_connect_errno()) {
    die("Error al conectar: ".mysqli_connect_error());
}
 
// Los posible valores que puedes obtener de la imagen son:
//echo "<BR>".$_FILES["userfile"]["name"];      //nombre del archivo
//echo "<BR>".$_FILES["userfile"]["type"];      //tipo
//echo "<BR>".$_FILES["userfile"]["tmp_name"];  //nombre del archivo de la imagen temporal
//echo "<BR>".$_FILES["userfile"]["size"];      //tamaño
 
# Comprovamos que se haya subido un fichero
if (is_uploaded_file($_FILES["userfile"]["tmp_name"]))
{
    # verificamos el formato de la imagen
    if ($_FILES["userfile"]["type"]=="image/jpeg" || $_FILES["userfile"]["type"]=="image/pjpeg" || $_FILES["userfile"]["type"]=="image/gif" || $_FILES["userfile"]["type"]=="image/bmp" || $_FILES["userfile"]["type"]=="image/png")
    {
        # Cogemos la anchura y altura de la imagen
        $info=getimagesize($_FILES["userfile"]["tmp_name"]);
        //echo "<BR>".$info[0]; //anchura
        //echo "<BR>".$info[1]; //altura
        //echo "<BR>".$info[2]; //1-GIF, 2-JPG, 3-PNG
        //echo "<BR>".$info[3]; //cadena de texto para el tag <img
 
        # Escapa caracteres especiales
        $imagenEscapes=$mysqli->real_escape_string(file_get_contents($_FILES["userfile"]["tmp_name"]));
 
        # Agregamos la imagen a la base de datos
        $sql="INSERT INTO `imagephp` (anchura,altura,tipo,imagen) VALUES (".$info[0].",".$info[1].",'".$_FILES["userfile"]["type"]."','".$imagenEscapes."')";
        $mysqli->query($sql);
 
        # Cogemos el identificador con que se ha guardado
        $id=$mysqli->insert_id;
 
        # Mostramos la imagen agregada
        echo "<div class='mensaje'>Imagen agregada con el id ".$id."</div>";
    }else{
        echo "<div class='error'>Error: El formato de archivo tiene que ser JPG, GIF, BMP o PNG.</div>";
    }
}
?>
 
<h2>Selecciona una imagen</h2>
<form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]?>" method="POST">
    <input name="userfile" type="file">
    <p><input type="submit" value="Guardar Imagen">
</form>
 
<h2>Listado de las imagenes añadidas a la base de datos</h2>
<div class="listadoImagenes">
    <?php
    $result=$mysqli->query("SELECT * FROM imagephp ORDER BY id DESC");
    if($result)
    {
        while($row=$result->fetch_array(MYSQLI_ASSOC))
        {
            echo "<img src='imagen_mostrar.php?id=".$row["id"]."' width='".$row["anchura"]."' height='".$row["aaltura"]."'>";
        }
    }
    ?>
</div>
</body>
</html>
 
 
 
 
 
 
 
 
 
 
 
<?php
########## imagen_mostrar.php ##########
# debe recibir el id de la imagen a mostrar
# http://www.lawebdelprogramador.com
 
# Conectamos con MySQL
$mysqli=new mysqli("localhost","root","123456","imagen");
if (mysqli_connect_errno()) {
    die("Error al conectar: ".mysqli_connect_error());
}
 
# Buscamos la imagen a mostrar
$result=$mysqli->query("SELECT * FROM `imagephp` WHERE id=".$_GET["id"]);
$row=$result->fetch_array(MYSQLI_ASSOC);
 
# Mostramos la imagen
header("Content-type:".$row["tipo"]);
echo $row["imagen"];
?>



Comentarios sobre la versión: Version 3 - mysqli orientado a objetos (65)

parricide
11 de Diciembre del 2014
estrellaestrellaestrellaestrellaestrella
Caballeros , usé con relativo exito el tutorial, solo se me presentó un problema, a la hora de guardar la imagen, guarda los daos de la imagen pero no la imagen, el error que muestra es en
Fatal error: Call to undefined method ########::mysqli_real_escape_string()
agradezco cualquier aclaracion.
Responder
jahrex
11 de Diciembre del 2014
estrellaestrellaestrellaestrellaestrella
el codigo trabaja muy bien, solo que al publicarlo en mi server me manda un mensage que no se como quitar, el mensage es el sig."Notice: Undefined index: userfile in C:\xampp\htdocs\galery.php on line 44", no se si me puedan ayudar. de antemno gracias, ya se como gusrdar imagenes en una base de datos jeje.
Responder
Mauricio Sebastián
10 de Enero del 2016
estrellaestrellaestrellaestrellaestrella
Estimado
con arroba para ocultar el error por ejemplo $variable muestra el error y para ocultar seria así
@$variable.
Saludos
Responder
Mildred
15 de Julio del 2021
estrellaestrellaestrellaestrellaestrella
Hola. Muchas gracias, ahora sí, perfecto !!!
Responder
emerson ariel
12 de Marzo del 2016
estrellaestrellaestrellaestrellaestrella
se antepone a las variables @, ejemplo @$variable, o se declara las variables con algun valor
Responder
javier santacruz
26 de Mayo del 2017
estrellaestrellaestrellaestrellaestrella
Hola a todos, por comentar el userfile, es un ejemplo del dato que debe tener de la tabla imagen cierto? o eso creo, por que este dato no tiene relación con con la bd, y el dato seria imagen?, gracias por la ayuda de ate mano?
Responder
javier santacruz
26 de Mayo del 2017
estrellaestrellaestrellaestrellaestrella
disculpen logre resolver ese dato, pero no muestra las imagenes el codigo esta tal como lo copie escepto que coloque los datos de conexión a la db, muestra un campo con un borde y un icono pero no esta las imagenes que guarde, como podria resolverlo?


cordial saludo.
Responder
10 de Abril del 2020
estrellaestrellaestrellaestrellaestrella
quedaría de la siguiente forma : if (is_uploaded_file(@$_FILES["userfile"]["tmp_name"]))
Responder
Harry13
12 de Diciembre del 2014
estrellaestrellaestrellaestrellaestrella
jahrex , fijate en la linea del codigo
ya que estas abriendo el archivo galery.php con la direccion del servidor local "C:\xampp\htdocs\galery.php"
Responder
edgardo
12 de Febrero del 2015
estrellaestrellaestrellaestrellaestrella
Estimado. Como puedes hacer para asegurarte que no exista en la BD una imagen con el mismo nombre?
Muchas gracias
Responder
Tomy
19 de Febrero del 2015
estrellaestrellaestrellaestrellaestrella
Edgardo creo que puedes solucionarlo usando unique, funciona perfecto.
Responder
EDUBIN TORRES
12 de Marzo del 2015
estrellaestrellaestrellaestrellaestrella
me sale el siguiente error, copie el codigo tal y como aparese en la fuente:

Fatal error: Call to a member function fetch_array() on a non-object in C:\AppServ\www\subir_imagenes\imagen_mostrar.php on line 14
Me pueden ayudar...
utilizo servidor apache appserver
Responder
juan ariel
9 de Abril del 2015
estrellaestrellaestrellaestrellaestrella
Muchas gracias me sirvio de 10 !!!
Responder
hexequiel
14 de Abril del 2015
estrellaestrellaestrellaestrellaestrella
Hola perfecto el codigo me funciono perfecto al subir la imag, pero tengo un problema al querer mostrar el archivo solo me sale el cuadro de la imagen pero no veo la imagen
Responder
17 de Septiembre del 2015
estrellaestrellaestrellaestrellaestrella
me pasa igual, pudiste arreglar este problema?
Responder
mibarra
20 de Junio del 2015
estrellaestrellaestrellaestrellaestrella
Me sale el siguiente error en la parte de imagen_mostrar.php

Fatal error: Call to a member function fetch_array() on a non-object in /home/u361249534/public_html/scripts/imagen_mostrar.php on line 14

Me ayudas?
Espero tu pronta respuesta.
Responder
mescajece
3 de Julio del 2015
estrellaestrellaestrellaestrellaestrella
Estimado esta excelente el codigo solo tengo la duda de los datos que utilizas para la bd son estos (anchura,altura,tipo,imagen) y cual es el type que trabajas con cada uno para que te funcione correcto, saludos.
Responder
Jose Humberto
7 de Julio del 2015
estrellaestrellaestrellaestrellaestrella
POR FAVOR SI ME PUEDEYUDAR POR QUEME SALE ESTE ERROR
Fatal error: Call to a member function fetch_array() on a non-object in /data/webs/sites/s/e/serviactividades/web/subirimagen.php on line 119
Responder
javier santacruz
26 de Mayo del 2017
estrellaestrellaestrellaestrellaestrella
Hola jose humberto, tal parece que solo sucede con appserv, yo utilizo wamp y xamp, y esto no me pasa,
lo que si es que la imagen no se muestra inmediatamente en la misma pagina , pero con el php mostrar si.
Responder
Omar
18 de Julio del 2015
estrellaestrellaestrellaestrellaestrella
Muy Buena, gracias por compartir, te deseos exitos!!!
Responder
samirino
31 de Julio del 2015
estrellaestrellaestrellaestrellaestrella
Para visualizar las imágenes, debes poner el código PHP, del archivo "imagen_mostra.php", antes del "<!DOCTYPE html>" , o simplemente puede ser un archivo "PHP" sin "HTML".
Responder
samirino
2 de Agosto del 2015
estrellaestrellaestrellaestrellaestrella
En la linea 44, donde está escrito esto :
if (is_uploaded_file($_FILES["userfile"]["tmp_name"]))

para que no aparezca en la ejecución este mensaje: "Notice: Undefined index: userfile..."
se puede escribir así:
if (isset($_FILES["userfile"]["tmp_name"]) and (is_uploaded_file($_FILES["userfile"]["tmp_name"])))
Responder
alexis
28 de Marzo del 2016
estrellaestrellaestrellaestrellaestrella
hola funciono, pero la duda solo por saber es xq antes si mostraba ese msj de error, y poniendo esa línea que dices se arregla? gracias por el aporte
Responder
Walter
21 de Septiembre del 2015
estrellaestrellaestrellaestrellaestrella
Reemplazar echo "<img src='imagen_mostrar.php?id=".$row["id"]."' width='".$row["anchura"]."' height='".$row["aaltura"]."'>";

por

echo "<img src='imagen_mostrar.php?id=".$row["id"]."' width='".$row["anchura"]."' height='".$row["altura"]."'>";
Responder
Francisco
20 de Octubre del 2015
estrellaestrellaestrellaestrellaestrella
Muchas gracias por tu aportación.

No lo he probado pero necesito hacer un ejercicio como el ejemplo que pones.
Responder
juan
24 de Octubre del 2015
estrellaestrellaestrellaestrellaestrella
Hla seria tan amable alguien de ayudarme con este error Notice: Undefined index: imagen in C:\xampp\htdocs\AplicacionWeb\formulario\imagen_agregar.php on line 18
Responder
Imágen de perfil
25 de Octubre del 2015
estrellaestrellaestrellaestrellaestrella
Hola Juan, cual es tu linea 18?
Responder
carlos
24 de Octubre del 2015
estrellaestrellaestrellaestrellaestrella
como hago para que se muestre mi imagen
Responder
Imágen de perfil
25 de Octubre del 2015
estrellaestrellaestrellaestrellaestrella
Hola Carlos, si la imagen se te ha guardado correctamente en la base de datos, se te tiene que mostrar. Las imagenes se muestran en la linea 88
Responder
lalo
26 de Octubre del 2015
estrellaestrellaestrellaestrellaestrella
ya me corre con la base pero la imagene aparece en blanco por que me urge¡¡¡
espero alguna respuesta
Responder
facundo
19 de Noviembre del 2015
estrellaestrellaestrellaestrellaestrella
Cuando lo hago me sale un cartel que dice que no tengo los recursos para entrar a la carpeta donde se ubica la imagen... que tengo que hacer?
Responder
Lorena
27 de Noviembre del 2015
estrellaestrellaestrellaestrellaestrella
como se debe llamar la carpeta donde se guardan las imagenes ... porque solo se ve que las guarda pero no me muestra la imagnen como tal
Responder
Raimundo Antonio
7 de Febrero del 2016
estrellaestrellaestrellaestrellaestrella
Amigos dónde guardo las imágenes y si pueden ser pdf, está muy bueno el tutorial lo voy a probar, saludos.
Responder
LluisE
17 de Febrero del 2016
estrellaestrellaestrellaestrellaestrella
El codigo funciono muy bien, muchas gracias.
Responder
Alguien
4 de Marzo del 2016
estrellaestrellaestrellaestrellaestrella
(LINEA 119)
$row=$result->fetch_array(MYSQLI_ASSOC);
(ERROR)
Fatal error: Call to a member function fetch_array() on a non-object in /home/u964603497/public_html/beta/mod/subeimagenes.php on line 119
Responder
alexis
28 de Marzo del 2016
estrellaestrellaestrellaestrellaestrella
hola, me funciona bien el código, el único problema q dice "Undefined index: userfile in ....." según vi userfile es el input de cuadro de búsqueda de la imagen, aun asi guarda la imagen y hace todo bien, pero como se hace para q arreglar eso y que no aparesca ese msj de error?
se agradese el aporte
Responder
jose luis andrade
29 de Mayo del 2016
estrellaestrellaestrellaestrellaestrella
hola, excelente el código, solo tengo una duda no se si lo sepas... la cuestión es esta: lo implemente para la parte de imprimir un ticket uso el plugin printArea de jquery lo muestro en una div para visualizarla pero a la hora de imprimirla ya no la muestra y no se si es porque el plugin lee el codigo y no lo que esta sobre la pantalla espero y puedas ayudarme, saludos.
Responder
15 de Junio del 2016
estrellaestrellaestrellaestrellaestrella
el codigo esta muy bien pero cuando subo la imagen no me muestra nada solo sale el marco y un archivito pero no sebe la imagen ayuda gracias
Responder
yohanna
14 de Julio del 2016
estrellaestrellaestrellaestrellaestrella
El código me funciona parcialmente.... me guarda la imagen en la base de datos pero no se muestra.. solo aparece el marco con el iconito de imagen pero no se muestra.. y el archivo imagen_mostrar.php me lanza el siguiente mensaje: Fatal error: Call to a member function fetch_array() on a non-object in C:\AppServ\www\imagenes\imagen_mostrar.php on line 11
mi linea 11 dice: $row=$result->fetch_array(MYSQL_ASSOC);
que pasa aqui? ;3 alguien que me ayude please.. gracias. :)
Responder
crhistian torres
15 de Julio del 2016
estrellaestrellaestrellaestrellaestrella
tenia varios errores una es la base de datos al momento de pedirla en php y la otra es al mostrar la imagen en anchura tenias doble a el codigo quedaria asi
// index.php

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<style>
.error {font-weight: bold; color:red;}
.mensaje {color:#030;}
.listadoImagenes img {float:left;border:1px solid #ccc; padding:2px;margin:2px;}
</style>
</head>

<body>

<?php
# Conectamos con MySQL
$mysqli=new mysqli("localhost","root","","imagenes");
if (mysqli_connect_errno()) {
die("Error al conectar: ".mysqli_connect_error());
}

// Los posible valores que puedes obtener de la imagen son:
//echo "<BR>".$_FILES["userfile"]["name"]; //nombre del archivo
//echo "<BR>".$_FILES["userfile"]["type"]; //tipo
//echo "<BR>".$_FILES["userfile"]["tmp_name"]; //nombre del archivo de la imagen temporal
//echo "<BR>".$_FILES["userfile"]["size"]; //tamaño

# Comprovamos que se haya subido un fichero
if (is_uploaded_file($_FILES["userfile"]["tmp_name"]))
{
# verificamos el formato de la imagen
if ($_FILES["userfile"]["type"]=="image/jpeg" || $_FILES["userfile"]["type"]=="image/pjpeg" || $_FILES["userfile"]["type"]=="image/gif" || $_FILES["userfile"]["type"]=="image/bmp" || $_FILES["userfile"]["type"]=="image/png")
{
# Cogemos la anchura y altura de la imagen
$info=getimagesize($_FILES["userfile"]["tmp_name"]);
//echo "<BR>".$info[0]; //anchura
//echo "<BR>".$info[1]; //altura
//echo "<BR>".$info[2]; //1-GIF, 2-JPG, 3-PNG
//echo "<BR>".$info[3]; //cadena de texto para el tag <img

# Escapa caracteres especiales
$imagenEscapes=$mysqli->real_escape_string(file_get_contents($_FILES["userfile"]["tmp_name"]));

# Agregamos la imagen a la base de datos
$sql="INSERT INTO `imagephp` (anchura,altura,tipo,imagen) VALUES (".$info[0].",".$info[1].",'".$_FILES["userfile"]["type"]."','".$imagenEscapes."')";
$mysqli->query($sql);

# Cogemos el identificador con que se ha guardado
$id=$mysqli->insert_id;

# Mostramos la imagen agregada
echo "<div class='mensaje'>Imagen agregada con el id ".$id."</div>";
}else{
echo "<div class='error'>Error: El formato de archivo tiene que ser JPG, GIF, BMP o PNG.</div>";
}
}
?>

<h2>Selecciona una imagen</h2>
<form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]?>" method="POST">
<input name="userfile" type="file">
<p><input type="submit" value="Guardar Imagen">
</form>

<h2>Listado de las imagenes añadidas a la base de datos</h2>
<div class="listadoImagenes">
<?php
$result=$mysqli->query("SELECT * FROM imagephp ORDER BY id DESC");
if($result)
{
while($row=$result->fetch_array(MYSQLI_ASSOC))
{
echo "<img src='imagen_mostrar.php?id=".$row["id"]."' width='".$row["anchura"]."' height='".$row["abs(number)ltura"]."'>";
}
}
?>
</div>
</body>
</html>

//imagen_mostrar.php

# Conectamos con MySQL
$mysqli=new mysqli("localhost","root","","imagenes");
if (mysqli_connect_errno()) {
die("Error al conectar: ".mysqli_connect_error());
}

# Buscamos la imagen a mostrar
$result=$mysqli->query("SELECT * FROM `imagephp` WHERE id=".$_GET["id"]);
$row=$result->fetch_array(MYSQLI_ASSOC);

# Mostramos la imagen
header("Content-type:".$row["tipo"]);
echo $row["imagen"];
?>

ya saben que la base de datos se llama imagenes y la tabla es:

CREATE TABLE IF NOT EXISTS `imagephp` (
`id` smallint(6) NOT NULL auto_increment,
`anchura` smallint(6) NOT NULL,
`altura` smallint(6) NOT NULL,
`tipo` char(15) NOT NULL,
`imagen` mediumblob NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
Responder
luis ubaldo
23 de Julio del 2016
estrellaestrellaestrellaestrellaestrella
Hola, una consulta.
Yo ya tengo implemtado todo lo mencionado pero lo que quiero hacer ahora es descargar la imagen de la base y guardar en un archivo por ejemplo en la carpeta "imagen/yo.jpg"
No se como dar la orden del nombre y el lugar donde quiero que se grabe.
Responder
Imágen de perfil
24 de Julio del 2016
estrellaestrellaestrellaestrellaestrella
Aquí tienes el código que lo hace:
http://www.lawebdelprogramador.com/codigo/PHP/2029-Crear-imagenes-desde-base-de-datos-Mysql.html
Responder
Martin
15 de Agosto del 2016
estrellaestrellaestrellaestrellaestrella
Que tal me pueden ayudar con un update, para modificar el nombre o el archivo que acabas de cargar a la base de datos por favor, no logro hacer que muestre los datos actualizados en el formulario correspondiente! Gracias
Responder
ISRAEL MENDEZ
16 de Agosto del 2016
estrellaestrellaestrellaestrellaestrella
QUE TAL AMIGO YO TAMBIEN TENIA ESE ERROR DE Duplicate entry '0' for key 'PRIMARY' MI ERROR FUE QUE AL CREAR LA TABLA EN LA BASE DE DATOS, NO HABIA PUESTO LA OPCION DE AUTO INCREMENTAR AUTOMATICAMENTE POR ESO ME MARCABA ESE ERROR, UNA VEZ QUE ACTIVES ESA OPCION JALA PERFECTAMENTE SALUDOS
Responder
anthony
26 de Agosto del 2016
estrellaestrellaestrellaestrellaestrella
muy bueno tu codigo perfectamente lo que buscaba para mostrar y guardar una imagen en la base de datos... gracias por tu ayuda...
Responder
Alex
31 de Agosto del 2016
estrellaestrellaestrellaestrellaestrella
Para tod@s aquellos que no les muestra las imágenes en la parte de abajo es porque no están separando los dos archivos, si leen en la parte de arriba dice que se crean dos archivos imagen_agregar.php y imagen_mostrar.php si solo copian y pegan todo en un mismo archivo no les va a funcionar bien, ademas el código tiene un error en la variable altura dice aaltura se le tiene que quitar una "a" y para que no les aparezcan los Notice solo agreguen un @ la variable que jala ese index por ejemplo debería quedar así @$_FILES y listo con eso desaparece todos los problemas que tiene ese código y funciona perfecto.
Responder
Fidel Ibañez
3 de Enero del 2017
estrellaestrellaestrellaestrellaestrella
Codigo con funciones corto y simple
<html><body>
<form method='post' enctype='multipart/form-data'>
Explorar y seleccionar el archivo <input type='file' name='archivo' class='boton' required title='Debe seleccionar un archivo para poder proceder'>
<input name='grimagen' type='submit' value='Grabar'> </form>
<?php if(isset($_POST['grimagen'])) { $dt1 = $_FILES['archivo'] ['tmp_name'];
$dt2 = base64_encode(file_get_contents($dt1));
$segrabo = grbimagen($dt2) ; // graba imagen
if ($segrabo==1) { echo "grabacion correcta"; } else { echo "error en grabacion"; }
verultimafoto() ; // muestra la ultima imagen jpg
//-- estructura de la tabla
/*-- CREATE TABLE IF NOT EXISTS `TABLA` ( `IMG` mediumblob NOT NULL) ENGINE=InnoDB ; */
// funcion para conectar a la dbf
/* function conexion($bd) { $hos = "localhost"; $use = "basedatos"; $pas = "clave";
switch ($bd) { // tabla a usar
case 1: $dat = "TABLA"; break;
case 2: $dat = "TABLA1"; break;
case 3: $dat = "TABLA2"; break;
case 4: $dat = "PCOOP3"; break; }
$con = mysqli_connect($hos, $use, $pas, $dat);
if (mysqli_connect_errno()) { echo "Imposible conectarse a la base de datos: " . mysqli_connect_error(); }
else { return $con; } }
// graba la imagen en el campo blob
function grbimagen($dt2){
$sql = "INSERT INTO TABLA( IMG) VALUES ($dt2)";
$cn = conexion(1) ; $res = mysqli_query($cn, $sql); mysqli_close($cn); $tot = mysqli_num_rows($res);
if (!$res) { echo "Horror ". $sql; return 0; } else { echo " <span class='rojo'> Se grabo con exito la Receta </span>"; return 1; } }
// muestra la ultima imagen jpg
function verultimafoto() {
$sql = "SELECT IMG from RECETAS WHERE 1 order by ID desc LIMIT 1";
$cn = conexion(1) ; $res = mysqli_query($cn, $sql); mysqli_close($cn);
$f = mysqli_fetch_assoc($res);
$dt2= $f['IMG'] ;
echo "<img width='300' src='data:image/jpeg;base64,$dt2' />" ; }
?>
</body></html>
Responder
Imágen de perfil
9 de Febrero del 2017
estrellaestrellaestrellaestrellaestrella
Jovenes Con el permiso de Todos, he modificado un poco en codigo, ya que habia problemas al mostrar las imagenes, usando la misma base de datos y tabla antes mencionada reduje el codigo y agregue una pagina para la visualizacion, espero se entienda y no haber sido grosero con el desarrollador original

codigo para la pagina "subir.php"

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<style>
.error {font-weight: bold; color:red;}
.mensaje {color:#030;}
.listadoImagenes img {float:left;border:1px solid #ccc; padding:2px;margin:2px;}
</style>
</head>

<body>

<?php
# Conectamos con MySQL
$mysqli=new mysqli("localhost","root","","imagenes");
if (mysqli_connect_errno()) {
die("Error al conectar: ".mysqli_connect_error());
}

// Los posible valores que puedes obtener de la imagen son:
//echo "<BR>".$_FILES["userfile"]["name"]; //nombre del archivo
//echo "<BR>".$_FILES["userfile"]["type"]; //tipo
//echo "<BR>".$_FILES["userfile"]["tmp_name"]; //nombre del archivo de la imagen temporal
//echo "<BR>".$_FILES["userfile"]["size"]; //tamaño

# Comprovamos que se haya subido un fichero
if (is_uploaded_file(@$_FILES["userfile"]["tmp_name"]))
{
# verificamos el formato de la imagen
if ($_FILES["userfile"]["type"]=="image/jpeg" || $_FILES["userfile"]["type"]=="image/pjpeg" || $_FILES["userfile"]["type"]=="image/gif" || $_FILES["userfile"]["type"]=="image/bmp" || $_FILES["userfile"]["type"]=="image/png"|| $_FILES["userfile"]["type"]=="image/tif")
{
# Cogemos la anchura y altura de la imagen
$info=getimagesize($_FILES["userfile"]["tmp_name"]);
//echo "<BR>".$info[0]; //anchura
//echo "<BR>".$info[1]; //altura
//echo "<BR>".$info[2]; //1-GIF, 2-JPG, 3-PNG
//echo "<BR>".$info[3]; //cadena de texto para el tag <img

# Escapa caracteres especiales
$imagenEscapes=$mysqli->real_escape_string(file_get_contents($_FILES["userfile"]["tmp_name"]));

# Agregamos la imagen a la base de datos
$sql="INSERT INTO `imagephp` (anchura,altura,tipo,imagen) VALUES (".$info[0].",".$info[1].",'".$_FILES["userfile"]["type"]."','".$imagenEscapes."')";
$mysqli->query($sql);

# Cogemos el identificador con que se ha guardado
$id=$mysqli->insert_id;

# Mostramos la imagen agregada
echo "<div class='mensaje'>Imagen agregada con el id ".$id."</div>";
echo " <meta http-equiv='Refresh' content='0 ;url=mostrar.php'> ";


}else{
echo "<div class='error'>Error: El formato de archivo tiene que ser JPG, GIF, BMP o PNG.</div>";
}
}
?>

<h2>Selecciona una imagen</h2>
<form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]?>" method="POST">
<input name="userfile" type="file">
<p><input type="submit" value="Guardar Imagen">
</form>


</div>
</body>
</html>

//------------------------CODIGO PARA LA PAGINA "mostrar.php" ----------------------//


<!-- Provided by MyFreeTemplates.com -->
<html>

<head>
<title>View Pic </title>
<link href="contactos.css" rel="stylesheet" type="text/css" />
</head>
<body style="background:#333333">
<br>
<hr color=ff3300 size= '5'>

<?php
$server = 'localhost';
$username = 'root';
$password = '';
$database = 'imagenes';
$conexion = @new mysqli($server, $username, $password, $database);
#------------------------------------------------------OWNERS END---------------------------------------------

$sql="SELECT* from imagephp;";



$result = $conexion->query($sql); //usamos la conexion para dar un resultado a la variable

if ($result->num_rows > 0) //si la variable tiene al menos 1 fila entonces seguimos con el codigo
{
echo "<CENTER><font color='white'>Show Image</font></CENTER>";
echo "<CENTER>";
echo "<TABLE BORDER=1 WIDTH=500>";
echo "<tr><td width=\"14%\" BGCOLOR=\"GRAY\"><font SIZE=2 face=\"verdana\"><CENTER> ID </CENTER></font></td>";
echo "<td width=\"14%\" BGCOLOR=\"GRAY\"><font SIZE=2 face=\"verdana\"><CENTER>ALTURA</CENTER></font></td>";
echo "<td width=\"14%\" BGCOLOR=\"GRAY\"><font SIZE=2 face=\"verdana\"><CENTER>ANCHURA</CENTER></font></td>";
echo "<td width=\"14%\" BGCOLOR=\"GRAY\"><font SIZE=2 face=\"verdana\"><CENTER>IMAGEN</CENTER></font></td></tr>";


while ($row = $result->fetch_array(MYSQLI_ASSOC))
{

echo "<tr><td width=\"14%\" BGCOLOR=\"WHITE\"><font SIZE=2 face=\"verdana\"><center>".$row["id"] . "</center></font></td>";
echo "<td width=\"14%\" BGCOLOR=\"WHITE\"><font SIZE=2 face=\"verdana\"><center>".$row["altura"] . "</center></font></td>";
echo "<td width=\"14%\" BGCOLOR=\"WHITE\"><font SIZE=2 face=\"verdana\"><center>".$row["anchura"] . "</center></font></td>";
echo "<td width=\"14%\" BGCOLOR=\"white\"><font face=\"verdana\"><CENTER><img WIDTH='50' HEIGHT='50' src='data:imagen/jpeg;base64,".base64_encode($row["imagen"]). "' /> </CENTER></font></td></tr>";
}
echo "</TABLE>";
echo "</CENTER>";
echo "<br />";
}
else
{
echo "<CENTER><font color='white'>No hubo resultados</font></CENTER>";
}



if(isset($_POST['HOME']))
{
header ("Location: MENU.PHP");
}
$conexion->close(); //cerramos la conexión

?>

<form id="miform" name="miform" method="post" action="subir.php">
<br>

<CENTER>
<input type="submit" value="HOME" name="HOME">
</CENTER>
</form>
</body>
</html>



Analicenlo y prubenlo

Saludos Team
Responder
Jose Antonio
12 de Noviembre del 2017
estrellaestrellaestrellaestrellaestrella
Amigo está muy bueno pero sería posible en vez de que aparezca esa tabla apareciera la imagen en su tamaño normal ahí mismo sólo la imagen sin la tabla. Saludos.
Responder
Jose Silva
28 de Mayo del 2019
estrellaestrellaestrellaestrellaestrella
Mil gracias Frut, excelente el código
Responder
6 de Junio del 2017
estrellaestrellaestrellaestrellaestrella
hola buenos dias

tengo 2 tablas una de producto y una de imagenes

quiero sacar la imagen correspondiente para cada producto pero se me repite la primera imagen en todos.
les dejo el codigo de la llamada

php

$maxRows_productos = 4;
$pageNum_productos = 0;
if (isset($_GET['pageNum_productos'])) {
$pageNum_productos = $_GET['pageNum_productos'];
}
$startRow_productos = $pageNum_productos * $maxRows_productos;


$query_productos = "SELECT * FROM tblproductos WHERE tblproductos.intOferta = 1";
$query_limit_productos = sprintf("%s LIMIT %d, %d", $query_productos, $startRow_productos, $maxRows_productos);
$productos = mysqli_query($conex, $query_limit_productos) or die(mysqli_error($conex));
$row_productos = mysqli_fetch_assoc($productos);

if (isset($_GET['totalRows_productos'])) {
$totalRows_productos = $_GET['totalRows_productos'];
} else {
$all_productos = mysqli_query($conex,$query_productos);
$totalRows_productos = mysqli_num_rows($all_productos);
}
$totalPages_productos = ceil($totalRows_productos/$maxRows_productos)-1;



$query_imagenes = "SELECT * FROM tblImagenes WHERE tblImagenes.intProductos = ".$row_productos['idProducto']."";
$imagenes = mysqli_query($conex, $query_imagenes) or die(mysqli_error());
$row_imagenes = mysqli_fetch_assoc($imagenes);
$totalRows_imagenes = mysqli_num_rows($imagenes);


body

esto esta dentro de un (do - while)

<div class="image"><a href="productodes.php?producto=<?php echo $row_productos['idProducto']; ?>"><img src='/imagenes/productos/<?php echo $row_imagenes['strImagen'];?>' height='120px'></a></div>

<div class="name"><a href="productodes.php?producto=<?php echo $row_productos['idProducto']; ?>"><?php echo $row_productos['strNombre']; ?></a></div>
<div class="price"> $<?php echo $row_productos['dblPrecio']; ?> </div>

agradecido por toda la ayuda prestada
Responder
Jose Adrian
24 de Junio del 2017
estrellaestrellaestrellaestrellaestrella
Hola yo estoy haciendo un blog, y como administrador creo articulos en los cuales puedo subir imagenes pero es opcional subir la imagen. Existe alguna forma para que a la hora de mostrar los daros del articulo distinga entre los articulos con imagens y los que no, yo queria usar un if para que cuando se cumpla la condicion muestre la imagen de lo contraro no visualize la imagen pero no se me da muy bien los if ademas todavia no tengo mucha experiencia, alguien podria ayudarme
Responder
Alex
4 de Octubre del 2017
estrellaestrellaestrellaestrellaestrella
Lo que podrías hacer es preguntar si(if) el articulo tiene imagen o no, colocando los datos y comparando si tienen contenido que inserten solamente lo que vienen.
Responder
17 de Octubre del 2017
estrellaestrellaestrellaestrellaestrella
Hola a TODOS, alguien me podria ayudar, mi caso es el SIGUIENTE:

tengo una tabla llamada Fierros, en donde El id de Fierro es Autoincrementable, tengo otra variable llamada FiguraFierro(esta es la imagen que debo obtener) de la cual solo quiero su URL para almacenarlo en dicha variable, y que despues la pueda visualizar, ALGUIEN me ayuda??
Responder
José Antonio
12 de Noviembre del 2017
estrellaestrellaestrellaestrellaestrella
Excelente muy bueno ese código tengo dos consultas quisiera saber si las imágenes se pueden visulizar en una ventana nueva que no sea donde está el formulario y cual sería el código para visualizar imagen pdf, saludos y felicitaciones.
Responder
lelsy
3 de Febrero del 2018
estrellaestrellaestrellaestrellaestrella
tenia una duda como hacer en php que me imprima la foto de perfil en el formulario
Responder
Jhoander
16 de Febrero del 2018
estrellaestrellaestrellaestrellaestrella
Excelente, solo un error, en la linea echo "<img src='imagen_mostrar.php?id=".$row["id"]."' width='".$row["anchura"]."' height='".$row["aaltura"]."'>";
hay que corregir la palabra $row["aaltura"]. por $row["altura"]. que es el nombre en la tabla. :)
Responder
27 de Febrero del 2018
estrellaestrellaestrellaestrellaestrella
Excelente aportación, una consulta como podría adjuntar archivos PDF
Responder
David Pedra
28 de Marzo del 2018
estrellaestrellaestrellaestrellaestrella
Muy bien explicado el código , Gracias! Funciono de primera
Responder
Luis Necesito ayuda :v
3 de Abril del 2018
estrellaestrellaestrellaestrellaestrella
Un saludo cordial a tod@s !! He estado observando, viendo los codigos porque me urge hacer un sistema web que contenga diferentes tablas para guardar imagenes independientes a cada tabla, incluido a esto tambien un login de usuario, el cual ya tengo realizado. Me urge es hacer un panel donde yo pueda editar,actualizar y observar las imagenes con sus respectivas descripciones bien sea;FECHA/NOMBRE/LUGAR/ que cuando las quiera visualizar cada una de la lista me salgan de manera organizada independientemente con sus respectivas descripciones y una opcion a descargar la imagen al pc.
Responder
Luis Necesito ayuda :v
3 de Abril del 2018
estrellaestrellaestrellaestrellaestrella
Alguien que me ayude en esto, soy nuevo se lo agradezco.
Responder
17 de Octubre del 2019
estrellaestrellaestrellaestrellaestrella
Buenos días, He creado un formulario para la carga de datos en la base de datos, incluidos dos campos de carga de archivos. el código que sube el archivo, pero sube el mismo para ambos campos de carga, quisiera que fuese cada archivo en su campo. Y además que esta carga no fuese obligatoria, ya que puede que se tenga que cargar solo un archivo en un campo y en el otro no o en ninguno de los dos. Los campos de carga se llaman $anexo y $anexoInter El código para cargar los archivos
$id_insert = $id_contrpen;

if($_FILES["archivo"]["error"]>0){
echo "Error al cargar archivo";
} else {

$permitidos = array("application/msexcel","application/msword","application/pdf","image/gif","image/png","image/jpeg");
$limite_kb = 8000;

if(in_array($_FILES["archivo"]["type"], $permitidos) && $_FILES["archivo"]["size"] <= $limite_kb * 1024){
$ruta = 'files/'.$id_insert.'/';
$archivo = $ruta.$_FILES["archivo"]["name"][0];$archivo = $ruta.$_FILES["archivo"]["name"][1];

if(!file_exists($ruta)){
mkdir($ruta);
}

if(!file_exists($archivo)){
$resultado = @move_uploaded_file($_FILES["archivo"]["tmp_name"], $archivo);
if($resultado){
echo "Archivo Guardado";
} else {
echo "Error al guardar archivo";
}
} else {
echo "Archivo ya existe";
}

} else {
echo "Archivo no permitido o excede el tamanio";
}
}
?>

Me pueden ayudar por favor?
Responder
Beltran Brito
1 de Abril del 2020
estrellaestrellaestrellaestrellaestrella
Gracias, me estaba volviendo loco, y con este codigo pude reslover, yo tenia tiempo sin programar y me toco actualizar de php 5.4 al 7.4. me funciono de maravilla!!
Responder
Bolas de acero
18 de Diciembre del 2020
estrellaestrellaestrellaestrellaestrella
ta buen me gusto
Responder
Imágen de perfil
5 de Julio del 2022
estrellaestrellaestrellaestrellaestrella
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<div class="register">
        <?php
     	//http://AprendeAprogramarEnPHPYA.com -- Básico --
	    $con = mysql_connect ("sql213.epizy.com","epiz_31980107","l20DHKEhYd");
	    if (!$con){die ("ERROR AL CONECTAR CON LA BASE DE DATOS ".mysql_error());}
	    $db = mysql_select_db("epiz_31980107_certificaciones",$con);
	    if (!$db) {die ("ERROR AL SELECCIONAR DB ".mysql_error());}
 
 
	 //ojo: con la sentencia sql, que es la que
	 //utilizamos para la consulta a mas de una tabla
 
	  $sql = ("SELECT empleado.NoReloj,certificaciones.Certificacion,certificaciones.Fecha_Cert,certificaciones.Fecha_Ven
	                FROM empleado, certificaciones WHERE empleado.NoReloj='".$_REQUEST['matricula']."' AND certificaciones.empleado_id ='".$_REQUEST['matricula']."'");
 
	 //realizamos la consulta
	 $consulta2= ("SELECT * FROM empleado WHERE empleado.NoReloj='" .$_REQUEST['matricula']."'");
     $consuimg= ("SELECT Imagen FROM empleado WHERE empleado.NoReloj='" .$_REQUEST['matricula']."'");
	 $result2=mysql_query($consulta2);
	 $result = mysql_query($sql,$con);
     $resimg = mysql_query($consuimg,$con);
 
 
	 if(mysql_num_rows($result2)>0){
 
		if($datos=mysql_fetch_row($result2)){
			$matricula2=$datos[0];
			$nombre2=$datos[2];
			$apellido1=$datos[3];
			$apellido2=$datos[4];
			$fecha=$datos[5];
			$area=$datos[6];
		}
     }
     while($row = mysql_fetch_assoc($resimg)){
      ?>
     <img src="data:image/png;base64,<?=base64_encode($row['Imagen'])?>" align="right" />
      <?php
     }
 
      ?>

Buen dia me podrian ayudar a encontrar mi error
Mediante un numero en concreto que se buscada desde un input solicito esos datos de 2 tablas diferentes consigo todos los datos solicitados excepto la imagen solo me aparece el cuadro con una imagen rota

De antemano gracias
Responder

Comentar la versión: Version 3 - mysqli orientado a objetos

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s70