Na das ist doch schon mal ein Anfang, $db->query() gibt also false zurück.
Ersetze die 39. Zeile mitecho "<font color='#00FF00'>Ein Problem ist aufgetreten ($db->error)</font>";
Mensch, das war auch kein Fix, sondern das sagt dir, was falsch ist.
Ich denke mal, du hast id als primary key und auto_increment definiert - wenn du bei einem INSERT versuchst, die id als ‘’ einzufügen, evaluiert das zu 0 und da die ID 0 schon vorhanden ist, tritt der Fehler auf. Einfach id aus der Query löschen.
Papperlapap, ID ist nen Index und der ist eben nicht Auto_increment gesetzt, deswegen der Doublicated Entry for 0.
Setzt man das Ding nämlich als Index und Auto_Increment, kannst da auch im Query übergeben was du willst, er übernimmt automatisch den nächsten Freien Index und fertig ist.
Man lässt es nur der übersichtlichlichkeit und der besseren lesbarkeit vom Code weg. Ansonsten ist das egal, hat auf die Ausführbarkeit vom Script jedenfalls gar keinen Einfluss.