Goedemiddag,

Ik heb momenteel het volgende script:

<? if (trim($_POST['checkbox'])) { include("config.php");

$naam = mysql_escape_string($_POST['name']);
$email = mysql_escape_string($_POST['email']);
$ip = mysql_escape_string($_SERVER["REMOTE_ADDR"]);



$add_all = "INSERT INTO wiml_maillist VALUES ('','','$naam','$email','$ip', '".time()."','2')";
mysql_query($add_all, $db) or die (mysql_error());
mysql_close($db); ?>

<form name="form" method="POST" >
<input name="form" type="hidden" value="" />
<table>
<tr>
<td width="195">Naam: <i>*</i></td>
<td width="401"> <input type="tekst"name="name" id="email2">
</td></tr>
<tr>
<td>E-mail adres: <i>*</i></td>
<td><input type="tekst"name="email" id="email2"></td>
</tr>
<td>Nieuwsbrief ontvangen?</td>
<td>
<input name="checkbox" type="checkbox" value="checkbox" />

</td>
<tr><td>
<input type="submit" name="Submit2" value="Versturen" onclick="" id="button" /></td></tr>
</table>

Alles gaat goed, dat wil zeggen dat hij het mits de checkbox is aangevinkt hij alle data in de database zet.
Enkel als $email al in de database voorkomt krijg ik:
Duplicate entry '[email protected]' for key 2

Is het ook mogelijk dat hij deze foutmelding negeert en gewoon doorgaat met het script.. of een andere manier om het te omzeilen?

Misschien met een if ofzo?
iemand? alvast bedankt
hmm als ik die weghaal dan doet hij mijn andere php validaties niet meer zoals:

<?if (isset($_POST['name']) && trim($_POST['name']) == '') { ?>
<div class="contactblock"> <?
print 'U heeft geen naam ingevuld.'?> <a href='javascript:history.go(-1)'>Ga terug.</a></div><? ;}
trouwens als ik:
<?mysql_query($add_all, $db) or die (mysql_error()); ?>

verander in

<?mysql_query($add_all, $db)
if(mysql_errorno() == 1062) echo 'Sorry, maar jij probeert te dupliceren';
else if(mysql_errorno()) echo 'Er is een andere fout opgetreden'; ?>

dan krijg ik:

Parse error: syntax error, unexpected T_IF in /home/p670/domains/ipodsoftware.nl/public_html/contact.php on line 103

Gelieve Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.

Ja, je bent een ; vergeten...

Nee, maar in dit geval is het gaat in dit geval enkel om een UNIQUE in dat geval ga ook liever voor een REPLACE. Maar je zou het ook in PHP kunnen afvangen en daar de errors negeren die jou even niet welgevallig zijn.

Oh ja, we willen natuurlijk allemaal dat onze mooie cascadende foreign keys doorvallen en ineens alle data weg is? REPLACE is een ramp, vergeet alsjeblieft dat het überhaupt bestaat.
heb het opgelost jongens met de oplossing van Jan Willem van der Veer

hartelijk dank
Oh ja, we willen natuurlijk allemaal dat onze mooie cascadende foreign keys doorvallen en ineens alle data weg is? REPLACE is een ramp, vergeet alsjeblieft dat het überhaupt bestaat.
Ik heb niet voor niets gezegd dat als je foutloos wilt werken dat je dan in elk geval niet voor MySQL moet kiezen. Daarnaast zou ik in dit geval ook nooit een FK/PK-relatie opzetten, gezien je best wel wilt dat mensen zichzelf uitschrijven, maar die nieuwsbrief moeten ze lekker apart uitschrijven ;)

Maar ja: je zou natuurlijk altijd kunnen gaan voor ON DUPLICATE UPDATE kolom_met_oude_waarde=kolom_met_oude_waarde;
Het moet zo zijn:

if(mysql_errno() == 1062)

i.p.v.

if(mysql_errorno() == 1062)

Reageren