Nogmaals: MyISAM ondersteunt géén transactions en is ook verder een brakke database-engine. Wil je MySQL gebruiken, gebruik dan in elk geval innoDB en de meest recente versies van MySQL, 5.0 of 5.1
UNIQUE is een eigenschap van een kolom. Dat is niet iets wat de ene keer wel van toepassing is en de andere keer niet. Je gebruikt dit dus bij het aanmaken van de kolom of het wijzigen van de kolom. En niet bij het toevoegen van gegevens.
Opmerking: gebruik htmlentities() daar waar je het nodig hebt. En niet om nog een nieuw setje variabelen aan te maken, dat is volkomen overbodig. Vreet alleen maar geheugen.
<?php
echo htmlentities($row['onderwerp']);
?>
Vergeet die $output.
if(mysql_errno($sql) == 1062){ // let op de functie mysql_errno() !
echo 'Naam bestaat al.';
}
elseif (!$sql){
echo mysql_error();
}
else{
echo 'Naam toegevoegd.';
}
?>
Zie ook http://mysql.com/doc/refman/4.1/en/error-messages-server.html voor andere foutmeldingen.
<?php
$voerin = mysql_query($insert) or die(mysql_error());
if(mysql_errno($voerin) == 1062)
{
$melding2 = 'Precies ditzelfde bericht is al eerder gepost, dit kan geen toeval zijn.';
}
elseif($voerin)
{
$melding2 = 'Succesvol toegevoegd';
unset($_SESSION['contactform']);
}
else
{
$melding2 = 'Door een technische storing kon het bericht niet worden toegevoegd';
}
?>
maar als ik een dubbel bericht invoer krijg ik:
Duplicate entry 'Dit is een test om te kijken of alles werkt' for key 'bericht'