Listo, ya encontre la solución para llenar la tabla con las imágenes de la
base de datos.
La solución esta en utilizar decode con base64 y embeberlo con el tag <img
/> también con base64 tal como se define en la variable $consultault
<!DOCTYPE html>
<head>
<title>Orbis</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
li {listt-style: none;}
</style>
</head>
<body>
<h2>Acceso al comedor</h2>
<ul>
<form name="insert" action="index.php" method="POST"  >
Tarjeta :</li><li><input type="text" name="tarjeta" autofocus />
<input type="submit" />
</form>
</ul>
<?php
$db = pg_connect("host=localhost port=5432 dbname=orbis user=nahum
password=xxxxx");
$query = "INSERT INTO acceso (tarjeta) VALUES  ('$_POST[tarjeta]')";
$result = pg_query($query);

$consultault = "select id, nombre, '<img src=\"data:image/jpeg;base64,' ||
encode(foto, 'base64') || '\"name=\"Imagen1\" align=\"left\" width=\"86\"
height=\"99\" border=\"0\" />' as foto from ultimos";
$resultado = pg_query($consultault);

$i = 0;
$tabla='<table id="ultimos"><tr>';
while ($i < pg_num_fields($resultado))
{
    $fieldName = pg_field_name($resultado, $i);
    $tabla=$tabla. '<th>' . $fieldName . '</th>';
    $i = $i + 1;
}
$tabla=$tabla. '</tr>';
$i = 0;
while ($row = pg_fetch_row($resultado))
{
    $tabla=$tabla. '<tr>';
    $count = count($row);
    $y = 0;
    while ($y < $count)
    {
        $c_row = current($row);
        $tabla=$tabla. '<td>' . $c_row . '</td>';
        next($row);
        $y = $y + 1;
    }
    $tabla=$tabla. '</tr>';
    $i = $i + 1;
}

$tabla=$tabla.'</table>';

echo $tabla;
pg_free_result($resultado);
?>
</body>
</html>


El 19 de octubre de 2016, 21:42, Mauricio Baeza<el...@tuta.io> escribió:

> 19. Oct 2016 20:46 by nahumcas...@gmail.com:
>
>
> Hola a tod@s
>
> Tengo un problema al leer imágenes desde la base de datos en php.
> OS: Centos 7
> Postgresql: 9.6
> PHP: 5.4.16
>
> Antes usaba oid y esas cosas en postgresql 7 @ del año 2003, pero ahora
> tengo la necesidad de guardar imágenes en la base de datos en postgresql
> 9.6.
> Esta es mi tabla.
>                 Tabla «public.personal»
>     Columna    |          Tipo          | Modificadores
> ---------------+------------------------+---------------
>  id            | integer                | not null
>  nombre        | character varying(255) |
>  horario       | character varying(200) |
>  puesto        | character varying(255) |
>  ingreso       | date                   |
>  departamento  | character varying(255) |
>  clasificacion | character varying(255) |
>  tarjeta       | character varying(50)  |
>  foto          | bytea                  |
> Índices:
>     "pk_orbis" PRIMARY KEY, btree (id)
>     "tarjeta_unica" UNIQUE CONSTRAINT, btree (tarjeta)
> Referenciada por:
>     TABLE "acceso" CONSTRAINT "fk_tarjeta_personal" FOREIGN KEY (tarjeta)
> REFERENCES personal(tarjeta) ON UPDATE CASCADE ON DELETE RESTRICT
>
> Las imágenes las guardo en un bytea
> y las puedo obtener como sigue
> \copy (select encode(foto, 'hex') from personal where id = 193) to
> '/home/nahum/Escritorio/imagen.hex';
> y luego
> xxd -p -r imagen.hex > imagen.jpg
> desde bash
> La imágen se ve bien.
>
> Pero el siguiente código no funciona.
> <?php
>   // Conectar a la base de datos
>   $dbconn = pg_connect("host=localhost port=5432 dbname=personal
> user=nahum password=xxxx");
>
>   // Obtener los datos
> $res = pg_query("SELECT foto FROM personal WHERE id=193;");
> $row = pg_fetch_row($res);
>
>  // Convertir a binario?
> $image = pg_unescape_bytea($row[0]);
> header("Content-type: image/jpeg");
> echo $image;
> pg_close($dbconn);
> ?>
>
> El problema es que no obtengo ninguna imágen, solo: "No se puede mostrar
> la imágen por que contiene errores"
> ¿Se puede emular xdd -p -r en postgres o en php?
>
> Saludos y gracias.
> Nahum.
>
>
>
> Prueba si esto funciona: http://zetcode.com/db/postgresqlphp/images
>
>
> Saludos
>
>
>
>
>


-- 
*Nahum Castro González*
Blvd. Perdigón 214, Brisas del Lago.
CP 37207
León, Guanajuato, México
Tel (477)1950304
Cel (477)1274694

Responder a