mostrar comentarios por fecha

Hola he incluido en mi web (www.itv-facil.com/empresa.html) un apartado de comentarios.
El problema es que se muestran en la parte superior los más antiguos.
Quisiera que al publicar un comentario apareciese el primero, ordenados por fecha.
Espero que podáis ayudarme, gracias.

El codigo que he incluido en el html es:

<div id="comen">
<a href="com.html" target="popup" onClick="window.open(this.href, this.target, 'width=328,height=600'); return false;"><b>VER COMENTARIOS</b></a>
<form method="post" action="comentar.php">
Escribe tu nombre:<input type="text" name="nombre" size="15"></textarea>
<textarea cols="60" rows="3" name="comentario">Escribe tu comentario</textarea><br>
<input type="submit" value="Publicar" style="border: 1px solid black" style="font-weight: 700; font-size: 10pt;">
</form>
<?php include("com.html"); ?>
</div>

El codigo php es:

<?php

$nombre =$_POST ['nombre'];

$comentario =$_POST ['comentario'];

$grabar = fopen("com.html" , "a");

fwrite ($grabar , "<p>$nombre :</p>");

fwrite ($grabar , "<p>$comentario</p>");

fwrite ($grabar , "Enviado el " . date('d/m/Y H:i'));

fclose($grabar);

include ("empresa.html")

?>

Gracias de antemano.
Hola:

Es algo difícil hacerlo guardando los comentarios en un archivo. Además de ser más lento leer los comentarios desde un archivo, no hay una forma "nativa" de comparar las fechas en PHP.

La forma sencilla de hacerlo sería guardando el último comentario publicado al comienzo del archivo (una especie de cola LIFO - Last In, First Out), pero esto será aún más lento:

  $grabar = file_get_contents( 'com.html' );
  $post = "
    <p>$nombre</p>
    <p>$comentario</p>
    <p><span class='date'>Enviado el " . date( 'd/m/Y H:i' ) . "</span></p>
  ";
  $bytes = file_put_contents( 'com.html', $post . $grabar )
  if( $bytes !== false ) {
    // El comentario se guardó, aunque no sabrás si se guardó completo.
    // Para saber si se guardó completo tendrías que comparar el tamaño en bytes de $post
    // contra el tamaño que devuelve file_put_contents(); ($bytes)
    include( 'empresa.html' );
  } else {
    // Ocurrió un error al guardar el comentario.
  }

Te aconsejo que cambies la forma de guardar/mostrar los comentarios. En lugar de usar un archivo, utiliza una base de datos. Sería mucho más simple y rápido para guardar y leer los comentarios.

Saludos.
Para dejarlo guardando los comentarios en el archivo, ¿como tengo que incluir el Last In, First Out
en que linea va?
Jajaja, perdón. Reemplaza lo que yo puse en tu script desde $grabar = fopen("com.html" , "a"); hasta include('empresa.html');. En el else {} de lo que yo puse debes poner un mensaje indicando que no se puedo guardar el comentario, de lo contrario no sabrás porque no hay más comentarios si en algún momento ocurre un error.

Tu publicación anterior quedaría así (sólo el código php):

<?php
  $nombre = $_POST['nombre'];
  $comentario = $_POST['comentario'];
  $grabar = file_get_contents( 'com.html' );
  $post = "
    <p>$nombre</p>
    <p>$comentario</p>
    <p><span class='date'>Enviado el " . date( 'd/m/Y H:i' ) . "</span></p>
  ";
  $bytes = file_put_contents( 'com.html', $post . $grabar )
  if( $bytes !== false ) {
    // El comentario se guardó, aunque no sabrás si se guardó completo.
    // Para saber si se guardó completo tendrías que comparar el tamaño en bytes de $post
    // contra el tamaño que devuelve file_put_contents(); ($bytes)
    include( 'empresa.html' );
  } else {
    // Ocurrió un error al guardar el comentario.
    echo "<p>Ocurri&oacute; un error al guardar el comentario.</p>";
  }
?>