Is er een simpele manier bekend om te controleren of je niet exact dezelfde informatie in db rij wilt zetten die er al in staat.

Mvg,

Erik
@Koen

De hoeveelheid data valt hier (als het goed is) te verwaarlozen.. Het gaat om een foutafhandelingsscript.. maar een bepaalde fout hoeft maar 1 keer voor te komen, omdat dan de fout al bekend is.
Maar toch is de MySQL oplossing de beste, minder kans op fouten.

@Erik

Misschien ook wel leuk om er een Admin bij te maken, waarbij je status op "wordt aan gewerkt" kan zetten, en dat ook terug kan geven aan de gebruiker.. En eventueel een status opgelost, of gewoon de rij deleten uit je error log tabel.
PurpleMadness schreef op 17.06.2006 19:56
[quote=Eris schreef op 17.06.2006 19:21]PurpleMadness waarom zou je het willen. Het is trager het vraagt een query extra enz..

Ja, maar voor de mensen die niet weten hoe ze de andere manier moeten doen enz. ;)
en zo 'trager' is het niet hoor, het is minder dan 1/10 van een seconde verschil, wat doen mensen hier daar toch moeilijk over.. =/[/quote]Voor mensen die niet weten hoe ze dit moeten maken, is het misschien een leuke uitdaging om het te leren. Zo moeilijk is het niet.

En in die 1/10 van een seconde kan het helemaal fout gaan. Jij controleert of iets al bestaat, antwoord is nee, ondertussen vindt er een INSERT plaats (door een ander script/gebruiker) en vervolgens ga jij op basis van jouw controle nogmaals een INSERT uitvoeren. Resultaat: corrupte database.

En als er iets is dat je ten koste van alles wilt vermijden, dan is dat wel een corrupte database. Wanneer je de data niet meer kunt vertrouwen, ben je reddeloos verloren.
Frank schreef op 17.06.2006 19:43
De combinatie van kolommen is ook unique te maken. 2x exact hetzelfde bericht door dezelfde persoon op dezelfde datum, is dan niet mogelijk.


wat bedoel je met de combinatie van kolommen UNIQUE maken?
en hoe voer je de controle uit?

Mvg,

Erik

ALTER TABLE jouw_tabelletje ADD UNIQUE(kolom1) 


Een query zal geweigerd worden als de waarde voor kolom1 al in de tabel staat.

of bijv:


ALTER TABLE jouw_tabelletje ADD UNIQUE(kolom1,kolom2)


Je kunt gewoon een insert of update uitvoeren, als het fout gaat kun je met mysql_errno() de foutcode ophalen en hierop actie ondernemen. De foutcode voor een UNIQUE-overtreding is volgens mij 1062.

<?php
$qryInsert = "INSERT INTO t (kol1,kol2,kol) VALUES( 1, 2, 3)";

if( !mysql_query( $qryInsert, $rConn ) )
{
if( mysql_errno( ) == 1062 )
{
echo 'Waarde bestaat al....';
}
}
?>
oke he bedankt.

dus al ik heb:

titel.
bericht.

en ik run deze query:

ALTER TABLE jouw_tabelletje ADD UNIQUE(titel,bericht).

dan moet er een foutmelding komen als er een dubbele melding wordt gepost.

oke thnx :)
Juist. Met die ALTER TABLE-statement maak je een wijziging in je tabelstructuur. Er wordt een index gecreƫerd op alle combinaties van titel en bericht, deze moeten uniek zijn.

Als er al dubbele gegevens in je database staan zal de ALTER-statement mislukken en zul je eerst die gegevens aan moeten passen.

Reageren