Insertar variables en la dirección de un hipervínculo

Hola a todos,

Estoy comenzando a trabajar con php y trato de poner en práctica y ampliar mis escasos conocimientos que, básicamente, se reducen al tutorial de PHP de CCTW, jejeje.

Estoy intentando crear una web en la que pueda subir archivos y que, además, me muestre una lista con los archivos subidos. Hasta ahí bien, he conseguido hacerlo todo (no sin esfuerzo y quebraderos de cabeza, jejeje), pero ahora quiero añadir una funcionalidad nueva a esta lista. Quiero asignar al nombre de cada archivo un hipervínculo a dicho archivo, para que los usuarios de la web puedan descargar desde esta lista los archivos con sólo clickar sobre su nombre.

Vamos por partes. El código que tengo en la página es el siguiente:

<?
//definimos el directorio donde se guadan los archivos
$path = "./files/";
//abrimos el directorio
$dir = opendir($path);
//guardamos los archivos en un arreglo
$img_total=0;
while ($elemento = readdir($dir))
{
if (strlen($elemento)>3)
{
$img_array[$img_total]=$elemento;
}

$img_total++;
}

for ($i=0;$i<$img_total; $i++)
{
$imagen = $img_array[$i];
$num = $i+1;
$pathimagen=$path.$imagen;
if ($columna==1)
echo "<tr>"; // para empezar una nueva linea
echo "<td align='center'>";
echo "<br>".$imagen."</a>";
echo "</td>";
if ($columna == $img_col)
{ 
$columna=1;
echo "</tr>";
}
else
{
$columna++;
}
}
?>

Para intentar asignar el vínculo al archivo, he pensado que dicha dirección va a depender directamente del nombre del archivo, que depende a su vez de la variable $imagen. Como estos archivos están alojados en la carpeta ./files, pensé que era suficiente con usar un echo en el que enlazara el texto con la dirección ./files/".imagen." . Supongo que es una catetada, ya que me da error. Digamos que mi código ha quedado de la siguiente manera:

<?
//definimos el directorio donde se guadan los archivos
$path = "./files/";
//abrimos el directorio
$dir = opendir($path);
//guardamos los archivos en un arreglo
$img_total=0;
while ($elemento = readdir($dir))
{
if (strlen($elemento)>3)
{
$img_array[$img_total]=$elemento;
}

$img_total++;
}

for ($i=0;$i<$img_total; $i++)
{
$imagen = $img_array[$i];
$num = $i+1;
$pathimagen=$path.$imagen;
if ($columna==1)
echo "<tr>"; // para empezar una nueva linea
echo "<td align='center'>";
echo "<br>"<a href="files/"$imagen">".$imagen."</a>";
echo "</td>";
if ($columna == $img_col)
{ 
$columna=1;
echo "</tr>";
}
else
{
$columna++;
}
}
?>

Agradecería a quien pudiera echarme una mano en esto. Disculpad mi ignorancia!
Es simple, pones comillas donde no debes, y no pones los puntos:
echo "<br><a href="files/".$imagen.">".$imagen."</a>";

Remplazando esa linea en
echo "<tr>"; // para empezar una nueva linea
echo "<td align='center'>";
echo "<br>"<a href="files/"$imagen">".$imagen."</a>";
echo "</td>"; 

Todo debería funcionar
Gracias por tu pronta respuesta!

He probado a realizar los cambios que me indicas, pero el Dreamweaver me sigue indicando un error de sintaxis en la línea 29 (donde se encuentra esta instrucción).

Pese a ello, lo he subido a mi servidor para ver si funcionaba, pero me daba el siguiente mensaje de error:

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /mnt/weba/40/92/51547192/htdocs/pruebas/subir/files/index2.php on line 29

entiendo que esto significa que falta un punto o punto y coma por algún sitio, pero no sé exactamente cuál es el problema :confused:
Pensando se me ocurre: ¿Puede ser una incompatibilidad con las comillas del código A href? Por ejemplo, si yo usara este código, <a href="files/index.htm">, tiene dos pares de comillas. Puede que eso confunda a la sentencia echo?

Vamos, es hablar por hablar,...... jejeje
Hay la hosti*, se me olvidó corregirlo del todo:
echo "<br><a href='files/".$imagen."'>".$imagen."</a>";

Ahora si :P
Gracias, va perfecto!!!

Con la ayuda del tutorial también llegué a otra solución, la incluyo aquí por si sirve a alguien (aunque es más liosa):

incluir barras \ delante de todas las comillas que no pertenecieran al echo, quedando así

echo "<br><a href=\"files/$imagen\">".$imagen."</a>";

De nuevo mil gracias por tu ayuda!!! [:)]
Hola:

Además de la última solución, lo siguiente también funciona:

echo "<br /><a href='files/$imagen'>$imagen</a>";

Si se utilizan comillas dobles al comenzar una línea PHP, todas las variables incluidas dentro de las comillas se evaluarán (se utilizará el contenido de las variables). Para no preocuparse de escapar las comillas (poner una backslash (\) antes de las comillas se llama escapar un caracter), se utilizan comillas simples en el href: href='url'.

Saludos.