Pues yo hice eso una vez. Ponía un upload, y al mismo tiempo se añadía un registro a la BD, y luego en la página principal ponía un script SQL para que mostrara los últimos archivos agregados

. Aqui te lo pongo:
Bueno, primero creas la Tabla
CREATE TABLE archivos (
id int(10) auto_increment NOT NULL,
nombre varchar(100) NOT NULL,
url varchar(255) NOT NULL,
PRIMARY KEY (id)
)
Ahora el archivo para subir.
subir.php<?php
if (isset($enviar)){
if($archivo_size <= 100000){
$extensiones = explode(".",$archivo_name);
$e = count($extensiones) - 1;
if(($extensiones[$e] == "jpg") OR ($extensiones[$e] == "jpeg") OR ($extensiones[$e] == "gif") OR ($extensiones[$e] == "png") OR ($extensiones[$e] == "bmp")){
include ("conexion.php"); //arhivo de conexión
$url = "http://www.lasmalotas.com/archivos/$archivo_name";
mysql_query ("SELECT * FROM archivos");
mysql_query ("INSERT INTO archivos (nombre,url) VALUES ('$archivo_name','$url')",$conexion);
echo "Archivo subido exitosamente";
}
else {
echo "Solo archivos con extensión .jpg, .gif, .bmp o .png";
}
else {
echo "El archivo no debe ser mayor de 100 KB.";
}
else {
?>
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="archivo"> Selecciona un archivo. (Solo .jpg (.jpeg), .gif, .bmp o .png<br>
<input name="enviar" type="submit">
<?php
}
?>
Y luego el index, donde serán mostrado los 3 últimos archivos.
<table>
<tr><td>Últimos archivos subidos</td></tr>
<?php
include ("conexion.php");
$sql = "SELECT * FROM archivos ORDER BY id DESC LIMIT 0,3";
$resp = mysql_query ($sql);
while ($row = mysql_fetch_array ($resp)) {
echo "<tr><td>";
echo "<a href=".$row ["url"].">Nombre archivo: ".$row ["nombre"]."<br></a>";
echo "</td></tr>";
}
?>
</table>
Creo que algo asi estaría bien

. Ahhh si, en el arcvhivo de subidas puse para que fuera jpg, jpeg, bmp, gif o png, asique ya sabes, esta listo

.
Ojalá que te resulte, y por supuesto, te sirva

.
Salu2!