Pues .. lento? si/no .. depende .. Lo que son "18" registro no es nada para Mysql xD ..
Cuando tu haces en ASP lo que estabas poniendo internamente haces 10 consultas a tu BD .. lo que pasa que no lo ves tan claro como cuando trabajas con PHP y Mysql ..
Desde PHP via mysql_query() se ejecuta una instrucción por llamada a la función ... Por ende . no podrías hacer por ejemplo el SQL concatenado de tus inserts usando como delimitador un ; (punto y coma) .. pues Mysql solo ejecutaría la primera instrucción Insert ..
Lo que tiens que es usar Arrays en la definición de tu formulario .. algo tipo
Código PHP:
<form ....>
<input type="text" name="fecha[]">
<input type="text" name="foto[]">
<input type="text" name="iduser[]">
</form>
para que al recibirlos en el script que haga el proceso en tu BD puedas usar un bucle como el que has puesto:
(definir arrays [] se toma como indice inicio el 0 .. puedes cambiarlo si quieres a 1 y numerarlos secuencialmente ..) he de ahí el $i=0 del bucle for ..)
Código PHP:
for ($i=0; $i<=18; $i++)
{
$sql="INSERT INTO archivos (fecha, nombre, iduser,idseccion) VALUES ('$fecha[$i]', '$foto[$i]', '$iduser[$i]', '4')";
$result=mysql_query($sql);
}
Si cuentas via count() el total de un array de los que tienes en el formulario (ejemplo fotos[] ..) puedes hacer un formulario completamente dinamico sea 1 o N registros en tu formulario ...
Tambien el iduser .. no sé como lo estaras tratando .. pero Mysql tiene sus campos Autonumericos para que sea Mysql quien otorgue el iduser correlativo segun hagas INSERT's a tu tabla ...
Un saludo,