Ik heb een form, die gegevens (oa mailadres) in een tabel plaatst.
Mijn vraag is nu, hoe kan ik nazien of een mail adres al reeds niet in de dbase aanwezig is?
Dan mag de insert niet uitgevoerd worden.
Met dank
Hoi,

Schrijf je de gegevens weg dmv een automatisch gegeneerd id in je tabel?
Ik heb namelijk ook zoiets gehad met het drukken op de F5-knop van je browser en heb, met mijn beperkte kennis van php, het volgende gedaan.


<?php
if ($companyid!=$companyid_refresh
{include_once ('../important/error.html');}
else
{
//----------------------------------------------------------------------
// wegschrijven van company gegevens naar de tabel crm_company
//----------------------------------------------------------------------
	 $res_ins_company=mysql_db_query("$db","$sql_ins_company",$mysql_id);
}
?>


Komt er eigenlijk op nee dat ik eerst met een query kijken of hetgeen ik wil toevoegen al bestaat, zo ja, geef dan een error weer, zo nee, schrijf hem dan weg in de db.

Zoals ik al zei ben ik geen held in php, maar het werkt wel voor mij :-D

Wim
Je kan in je database toch een UNIQUE-veld aanmaken?
Dan krijg je vanzelf een foutmelding als er een dubbel emailadres (of wat dan ook) wordt toegevoegd.

Dat is sneller, simpeler én betrouwbaarder.
Wim Selles schreef op 12.10.2008 10:03

<?php
if ($companyid!=$companyid_refresh
{include_once ('../important/error.html');}
else
{
//----------------------------------------------------------------------
// wegschrijven van company gegevens naar de tabel crm_company
//----------------------------------------------------------------------
	 $res_ins_company=mysql_db_query("$db","$sql_ins_company",$mysql_id);
}
?>

Zoals ik al zei ben ik geen held in php, maar het werkt wel voor mij :-D

Dat klopt. Het is slecht.
Leer PHP Beginners handleiding maar eens door, ook denk ik dat je wat hebt aan SQL Beginners handleiding

Ik denk dat het probleem verholpen kan worden door een unique key
Je kunt de foutmelding vervolgens weer afvangen en weergeven dat het adres al in de database staat.
Dat is allemaal onnodig als je op de insert pagina's gewoon een header("Location: ;"); plaatst en 0,0 output geeft (voor de n00bs, anders komen daar weer vragen over). Dan kan de gebruiker wel F5 doen maar dan is ie nog steeds op de pagina waar die naar toe wordt gestuurd. Als de gebruiker een pagina terug gaat komt ie op de pagina voor het inserten, dus hij kan nooit de zelfde formdata twee keer inserten (behalve bij het nog een keer typen en nog een keer submitten).
UNIQUE op het veld in de DB is de allerbeste oplossing

met UNIQUE op het veld in de DB
dat doet het inderdaad, maar hoe kan ik dan : Duplicate entry '[email protected]' for key 2

vervangen door begrijpbare taal, of tekst ?
met een if else, maar hoe?

met dank
Je zou kunnen doen:


INSERT IGNORE INTO tabel VALUES(1,2,3);


Maar misschien is het beter om naar het error nummer te kijken.

Reageren