Comunidad de diseño web y desarrollo en internet online

Ayuda con mostrar imágenes de mysql en php

Citar            
MensajeEscrito el 28 Jun 2015 05:34 am
Tengo un problema, soy un poco nuevo en esto de php y mysql, tengo que mostrar una foto y varios registros en tablas usando php, y lo unico que no me sale es lo de la foto, no se como hacerle, me podrian ayudar?
[img]http://l4c.me/fotos/BBHathcock/ingresarhtml/sizes/o[/img]
Con ese archivo html guardo la foto en la base de datos
[img]http://l4c.me/fotos/BBHathcock/ingresarphp/sizes/o[/img]
Este es para guardar tambien es el php que actua por POST

[img]http://l4c.me/fotos/BBHathcock/mostrarphp/sizes/o[/img]
y este es el que se supone deveria mostra la imagen pero no se ve, solo se ve un icono raro donde deveria ir la imagen, podrian decirme en que estoy mal y tratar de explicarme un poco? :/

Por BBHathcock

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Jun 2015 12:26 pm
Bueno, algunas cositas en los códigos que has mostrando son, como decir, curiosas.

Pero lo importante es que no estás tomando ninguna imagen que te envía el formulario HTML.

Los archivos subidos al servidor no se referencian con $_POST en PHP sino con $_FILES

Deberías leer esto también: Gestión de Carga de Archivos

Finalmente un consejo: No almacenes los archivos como campos en la base de datos, guárdate el nombre del archivo solamente, el archivo lo guardas en un lugar predecible del servidor web para que luego puedas poner la ruta en el código HTML.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 30 Jun 2015 07:10 pm

DriverOp escribió:

Bueno, algunas cositas en los códigos que has mostrando son, como decir, curiosas.

Pero lo importante es que no estás tomando ninguna imagen que te envía el formulario HTML.

Los archivos subidos al servidor no se referencian con $_POST en PHP sino con $_FILES

Deberías leer esto también: Gestión de Carga de Archivos

Finalmente un consejo: No almacenes los archivos como campos en la base de datos, guárdate el nombre del archivo solamente, el archivo lo guardas en un lugar predecible del servidor web para que luego puedas poner la ruta en el código HTML.


Hola, gracias pro tu respuesta.
ya hice unos cambios pero me sigue apareciendo un icono de imagen rota, donde deveria aparecer la imagen

Código HTML :

<html>
<head>
<title>Registrarse</title>
</head>
<body>
   <center>
   <table border=2>
   <tr>
   <td> ================== </td>
   <td>       Registro     </td>
   <td> ================== </td>
   </tr>        </table>
   <br>    <br>    <br>
      <h1> Ingrese los datos </h1>
      <br>       <br>       <br>
   <form action='tingresar.php'method="POST" enctype"multipart/form-data">
   Nombre:<input type="text" REQUIRED name='nombre'>
   <br>            <br>            <br>
   Edad:<input type="text" REQUIRED name='edad'>
   <br>            <br>            <br>
   Localidad:<input type="text" REQUIRED name='localidad'>
   <br>            <br>            <br>
   Fecha:<input type="text" REQUIRED name='fecha'>
   <br>            <br>            <br>
   Recompenza:<input type="text" REQUIRED name='recompenza'>
   <br>            <br>            <br>
   Foto: <input type="file" REQUIRED name="imagen">
   <br>            <br>            <br>
      <input type="submit" value='Aseptar'>
      <input type="reset" value='Borrar'>
      </form>
      <tr>
      <form action="regresar.php" method="post">
      <p><input type="submit"value="Regresar al menu principal" /></p>
      </form>
      </tr>
   <table border=2>
      <tr>
         <td> ============== </td>
         <td> Registro de Personas Perdidas </td>
         <td> ============== </td>
      </tr>
   </table>
   </center>
</body>
</html>

Ese es el formulario html donde se deve guardar la imagen

Código PHP :

<?php
   $conexion=mysql_connect("localhost","test","test","test");
   if(!$conexion)
      {
      die('<br> No se puede conectar:' . mysql_error());
      }
   else {
   echo "<br> ";
        }
      $nombre = $_POST['nombre'];
      $edad = $_POST['edad'];
      $localidad = $_POST['localidad'];
      $fecha = $_POST['fecha'];
      $recompenza = $_POST['recompenza'];
      $imagen = addslashes(file_get_contents($_FILES['imagen']['tmp_name']));
   mysql_select_db("test",$conexion);
   mysql_query("insert into perdidos(nombre,edad,localidad,fecha,recompenza,imagen) values('$nombre','$edad','$localidad','$fecha','$recompenza','$imagen')",$conexion);
   if(!$conexion)
      {
      die('<br> No se registro correctamente:' . mysql_error());
      }
      else {
      header("Location: tinicio2.html");
           }
?>

ese es el php del formulario, que actua con el post del html

Código PHP :

<html>
   <body>
   <center>
   <head><title>Buscar</title></head>
      <table border=2>
      <tr>
      <td> =================== </td>
      <td>    Buscar Personas Perdidas   </td>
      <td> =================== </td>
      </tr>        </table>
      <br><h1> Seleccione las personas sobre las cuales se desea ver los datos </h1>
         <h3> o bien utilise la opcion de busqueda por ID </h3>
   <?php
   $conexion = mysql_connect("localhost","test","test","test");
   if(!$conexion)
   {
   die('No se puede conectar: ' .mysql_error());
   }
   else
   {
   echo " ";
   }
   mysql_select_db("test",$conexion);
   $peticion=mysql_query('select * from perdidos');

   while($fila=mysql_fetch_array($peticion))
   {    ?>
   <form action="buscar2.php" method="post">
   <table border=1 cellspacing="3" cellpadding="5">
      <tr>
         <td width="118px"> ID </td>
         <td width="118px"> Nombre </td>
         <td width="118px"> Edad </td>
         <td width="118px"> Localidad </td>
         <td width="118px"> Fecha </td>
         <td width="118px"> Recompenza </td>
         <td width="118px"> Foto </td>
      </tr>
      <tr>
         <td width="80px"> <?php echo $fila['id']; ?> </td>
         <td width="80px"> <?php echo $fila['nombre']; ?> </td>
         <td width="80px"> <?php echo $fila['edad']; ?> </td>
         <td width="80px"> <?php echo $fila['localidad']; ?> </td>
         <td width="80px"> <?php echo $fila['fecha']; ?> </td><br>
         <td width="80px"> <?php echo $fila['recompenza']; ?> </td><br>
         <td width="80px"> <img height="100px" src="data:image/jpg;base64,<?php echo base64_encode($fila['imagen']); ?>"/>
         <td width="10px"><input type="checkbox" name="id[]"value="<?php echo $fila['id'];?>"/></td>
      </tr>
   <?php }      ?>
   </table>
   <br>                  <br>
   <input type="submit" value="  Aseptar  "/>
   </form>
   <br>
   <h1> Ingresa tu id </h1>
   <form action='tbuscar.php'method="POST">
   ID:<input type="text"name='id'>
   <br>            <br>            <br>
      <input type="submit" value="Aseptar">
      <input type="reset" value="Borrar">
      </form>
   <table border=2>
      <form action="regresar.php" method="post">
      <p><input type="submit"value="Regresar al menu principal" /></p>
      </form>
      <tr>
         <td> ============== </td>
         <td> Buscador de Personas Perdidas </td>
         <td> ============== </td>
      </tr>
   </table>
   </center>
   </body>
</html>


y este es el que deveria mostrar la imagen, pero no la muestra, donde deveria ir la imagen sale el icono de una imagen rota

Por BBHathcock

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 01 Jul 2015 12:09 pm

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 16 Jul 2015 06:59 pm
Hola BBHathcock,

En la base de datos te recomiendo que guardes solo el nombre de la imágen, un campo tipo varchar (strImagen).

Luego en el formulario de inserción agregas un campo de texto con el nombre del campo de la BD (strImagen) y un boton, con una función en javascript:

Esto sería el botón:

<input type="button" name="button" value="Subir Imagen" onclick="javascript:subirimagen();"/>

Y escribes la función de javascript como tal:

<script>
function subirimagen()
{
self.name ='opener'
remote = open('gestionimagen.php', 'remote', 'width=400, height=150, location=no, scrollbars=yes, menubars=no, toolbars=no, resizable=yes, fullscreen=no, status=yes');
remote.focus();
}
</script>


Este código lo que hace es que al clicar en el botón de subir imagen, se abra una nueva ventana.

Creas el archivo "gestionimagen.php", y tendrás únicamente este código:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="../styles/ventana_subirimagen.css">
<title>Subir Imagen</title>
</head>
<body>

</body>
</html>



Entre las etiquetas de "body" pones el siguiente código:

<?php if ((isset($_POST["enviado"])) && ($_POST["enviado"] == "form1")) {
$nombre_archivo = $_FILES['userfile']['name'];
echo $nombre_archivo;

move_uploaded_file($_FILES['userfile']['tmp_name'], "../carpeta/".$nombre_archivo);

?>
<script>
opener.document.form1.strImagen.value="<?php echo $nombre_archivo; ?>";
self.close();
</script>
<?php
}
else
{?>

<form action="gestionimagen.php" method="post" enctype="multipart/form-data" id="form1">

<p>
<input name="userfile" type="file" class="campo_form"/>
</p>
<p>
<input type="submit" name="button" id="button" value="Subir Imagen" />
</p>
<input type="hidden" name="enviado" value="form1" />
</form>


Esto lo que hace es que en la base de datos guardara el nombre del archivo y en la carpeta que has asignado en move_uploaded_file se guardará el archivo como tal.

Ahora solo te falta llamar a dicha imagen, desde la parte de la web que quieras que se visualice, agregas una imagen desde la carpeta que has dicho que se guarden, por ejemplo "carpeta" y tendrás el siguiente código:

<img src="carpeta/nombre_archivo.jpg">

Para sacar la imagen de la BD borra nombre_archivo.jpg y escribes el siguiente código en PHP:

<?php echo $Consulta['strImagen"]; ?>

En la variable $Consulta, has de poner el nombre de tu variable.

Espero que te sirva,
Saludos

Por Logo84

3 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.