Hola,
Bien, el ID podria ser la posicion de la noticia en el fichero. Para saber la poscion debes jugar con $total, $inicio y el bucle:
Código PHP:
$id=$total-$inicio-1; // REVISAR. No se si esta bien. Seria la posicion de la primera noticia a mostrar
/* y esto es como vos lo tenias */
foreach($datos as $elementos) {
$elementos = trim($elementos);
$parte = explode("|", $elementos);
// comentamos los campos que no queremos mostrar
// luego si quieres los borras
//$fecha = $parte[0];
//$nombre = $parte[1];
//$email = $parte[2];
$titulo = $parte[3];
//$noticia = $parte[4];
echo "<b><a href='ver_noticia.php?id=".$id."'> . $titulo ."</a></b>" . "<hr color=#800000 align=center width=80% size=1 noshade>" . "<BR>"."<BR>";
$id--; // decrementamos el id porque vamos hacia atras en el fichero
}
Y ver_noticia.php seria algo aso:
Código PHP:
$id=$_GET['id'];
$datos = file('noticias.dat'); // Llamamos a la base de datos noticias.dat.
$noticia=$datos[$id]; // cogemos la noticia de la posicion id
$noticia = trim($noticia);
$parte = explode("|", $noticia);
$fecha = $parte[0];
$nombre = $parte[1];
$email = $parte[2];
$titulo = $parte[3];
$noticia = $parte[4];
echo "<b>" . $titulo . "</b>" . "<BR>" . $noticia . "<BR>" . "<BR>" ." Escrita por " . "<b>" . "<a href=mailto:$email>$nombre</a>" . "</b>" . " el " . "<b>" . $fecha . "</b>" . "<hr color=#800000 align=center width=80% size=1 noshade>" . "<BR>"."<BR>";
Quizas debes revisar la formula para calcular el $id inicial (donde pone REVISAR). La ultima noticia ingresada (la primera que aparece si no le pasas inicio a la pagina) deberia ser igual al numero de noticias menos 1. Y el id de la primera noticia ingresada debe ser 0.
Espero haber sido de ayuda.