Nun ja du musst mal selber debuggen lernen. Das vorliegende Problem ist extrem simpel, da kommt man sofort dahinter, aber bei komplexeren Problemen ist das nicht mehr so einfach.
Du hättest dir zum Beispiel mal vor dem Speichern mit var_dump($_POST) anzeigen lassen können , was dir überhaupt an POST-Tupeln übermittelt wird. Dann wäre dir aufgefallen, dass from fehlt, und du hättest gewusst, der Fehler muss im Formular sein. Genauer, wahrscheinlich beim Feld für from, da andere Felder ja funktionieren. Dann hättest du dir das Feld angeschaut:
<tr><td>Geschrieben von:</td><td> <input name="headline" type="text" /></td></tr>
Und dir wäre hoffentlich aufgefallen: Oops, das Feld hat ja das name-Attribut "headline" anstatt "from". Fehler gefunden.
Also merke dir var_dump(), damit kannst du dir auch komplexe Variablen wie z.B. Arrays ausgeben lassen.
Zweiter Fehler:
Überlege dir, was Y-m-d sein soll? Ein mathematischer Term, eine Berechnung? Die Konstante Y minus der Konstanten m minus der Konstante d? Das ist, was dort steht. Strings müssen immer entsprechend gekennzeichnet werden. Google nach "php date", das erste was du findest ist: [Link: Registrierung erforderlich]
Dort steht:
string date ( string $format [, int $timestamp = time() ] )
"string $format", das Format wird also als String angegeben. Daher muss es heißen:
Merke: [Link: Registrierung erforderlich] ist deine Referenz für PHP-Befehle, Keywords, etc. Bei dem Link oben findest du auch gleich die Bedeutungen der Zeichen im Format-String.
Übrigens: Es macht viel Spaß und hat einen hohen Lerneffekt, eine Art Mini-Framework/CMS selber zu schreiben. Heutzutage ist das aber außer aus den beiden genannten Gründen nicht mehr sinnvoll. Nutze vorgefertigte Frameworks wie Laravel, Symfony etc. oder vorgefertigte Open Source-CMS wie Wordpress, Joomla usw. wenn du eine Website entwickeln willst, die wirklich öffentlich einsehbar ist / genutzt werden soll.