La idea es simple y si debe funcionar, otra cosa es que lo estés haciendo mal, Bien, este es el código que debes usar:
Código:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Documento sin título</title>
</head>
<body>
<? require('config.php');
$conecta = mysql_query("SELECT * FROM mensajes ORDER BY id ASC");
while($row = mysql_fetch_array($conecta)){
echo $row['nick'];
echo $row['mensaje'];
echo "<hr>";
}
mysql_free_result($conecta);
?>
<hr>
<form name="form1" method="post" action="index.php">
<p>
<label><strong>Nick</strong>
<input type="text" name="nick" id="nick">
</label>
</p>
<p>
<label><strong>E-Mail</strong>
<input type="text" name="email" id="email">
</label>
</p>
<p>
<label><strong>Mensaje</strong>
<textarea name="mensaje" id="mensaje" cols="45" rows="5">
</textarea>
</label>
</p>
<p>
<label><strong>Enviar</strong>
<input type="submit" name="enviar" id="enviar" value="Enviar">
</label>
</p>
</form>
<?
if (isset($_POST["nick"])) {
$nick=$_POST['nick'];
$email=$_POST['email'];
$mensaje=$_POST['mensaje'];
mysql_query("INSERT INTO mensajes(nick, email, mensaje)
VALUES('$nick', '$email', '$mensaje')", $conecta);
mysql_close($conecta);
}
?>
</body>
</html>
Mi código es algo distinto, es cierto que no es necesario colocar isset($_POST["campo"]) pero yo lo hago así, o sea, coloco el campo por costumbre y además para el caso de que haya más de un form enviándose a la misma página, pues se distingue que form es por el campo. Bien, espero que te sirva.