[ Foro de PHP ]

Aceso a datos con PHP

07-Nov-2017 10:22
Pedro Coloma Lloret (+1)
1 Respuestas

Para el montaje de una web estoy trabajando sobre un cms (Yeesoft) que se basa en un plugin del framework Yii2. Este cms cuenta con un panel de control y cuando los usuarios suben una imagen a través de ese panel de control se añade en la tabla media de la base de datos un nuevo registro donde se guarda la id del álbum (album_id), la id de la imagen (id) el nombre del archivo (filename) y la ubicación (url).

Cuando intento montar un álbum sobre un carrusel que he diseñado no consigo acceder a las imágenes. En stack overflow encontré este fragmento de código pero tampoco consigo hacer que funcione bien. Creo que es porque no le defino correctamente la ubicación en la base de datos. Además necesito extraer todo el álbum no solo una imagen.
<body>
<img src="getImage.php?id=1"/>
</body>
Then getImage.php is

<?php

 $id = $_GET['id'];
 // do some validation here to ensure id is safe

 $link = mysql_connect("localhost", "root", "");
 mysql_select_db("dvddb");
 $sql = "SELECT dvdimage FROM dvd WHERE id=$id";
 $result = mysql_query("$sql");
 $row = mysql_fetch_assoc($result);
 mysql_close($link);

 header("Content-type: image/jpeg");
 echo $row['dvdimage'];
?>


08-Nov-2017 19:24
Nacho Cabanes (+32)

Me temo que estás mezclando dos cosas distintas: el código que has sacado de Stack Overflow está pensado para mostrar una imagen, por eso ese "header".

Pero en tu base de datos no tienes "los bytes" de la imagen, sino detalles como el nombre del archivo y la ubicación. No indicas si la ubicación contiene toda la ruta, incluyendo nombre, o si has de concatenar ambos, pero, a priori, a mí me parece que sería más razonable algo como:

 
<body> 
<?php 
 
 $id = $_GET['id']; 
if (is_numeric($id))
{
 
 $link = mysql_connect("localhost", "root", ""); 
 mysql_select_db("dvddb"); 
 $sql = "SELECT url FROM dvd WHERE id=$id"; 
 $result = mysql_query("$sql"); 
 $row = mysql_fetch_assoc($result); 
 mysql_close($link); 
 
 echo "<img src=\"". $row['url'];  .\""/> 
}
?>
</body>
 


 






Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...