![]() |
[MySQL]: Bei INSERT doppelte Einträge verhindern-
Hallo, ich habe in php mir mein eigenes kleine Forum geschrieben. Wenn der user nun einen neuen Beitrag abschickt, bastelt sich ein PHP-Skript eine recht komplizierte Abfrage zusammen. Ok, dieser MySQL-Befehl ist zwar recht lang, aber eigentlich interessiert nur diese eine Zeile:
INSERT INTO `forum_inhalt` ( `id` , `topicid` , `autor` , `betreff` , `beitrag`, `html` ) VALUES ('',@topicid, '".$user."', '".$betreff."', '".$beitrag."', '".$html."'); In letzter Zeit ist es jedoch häufiger passiert, dass ein Beitrag gleich zwei oder drei mal gepostet wurde. Ich denke mal, dass das durch die Verwendung des "Zurück"-button kommt, wo das Skript dann ein zweites (drittes...) mal aufgerufen wird. Wie auch immer: Ich will jetzt verhindern, dass dies passiert. Ich meine mal irgendwo eine verdammt einfache Lösung gefunden zu haben: Man musste nur ein einziges Wort in die Abfrage hinzufügen. Weiß zufällig jemand was davon? Selbst wenn ncht, gibt es einen einfacheren Weg, als vorher eine SELECT-Anweisung durchlaufen zu lassen, die prüft, ob der beitrag schon existiert?? |
Re: [MySQL]: Bei INSERT doppelte Einträge verhindern-
du musst im prinzip nur ein feld deiner wahl auf "unique" stellen (in den feld-einstellungen der db)
dann kann der datensatz nur hinzugefügt werden, wenn er in dem unique feld auch ein uniquen wert drin stehen hat ( also nicht doppelt vor kommt ) ob du nun alle oder nur ein feld nimmst musst du überlegen |
Re: [MySQL]: Bei INSERT doppelte Einträge verhindern-
Zitat:
|
Re: [MySQL]: Bei INSERT doppelte Einträge verhindern-
ja aber er will doch das die datensätze erst garnicht in die db gelangen und das teil zumüllen
|
Re: [MySQL]: Bei INSERT doppelte Einträge verhindern-
Zitat:
|
Re: [MySQL]: Bei INSERT doppelte Einträge verhindern-
Zitat:
Ich glube aber, was UNIQUE betrifft habe ich insofern ein poblem, dass dann trotzdem der beitragscounter erhöht wird und generell alle anderen SQL-Befehle ausgeführt werden. Aber ich will ja, dass, wenn der Eintrag schon existiert einfach garnichts passiert. Es gibt ja von MySQL so eine schöne IF-Bedingung. Aber ich bekomme das zum verrecken nicht hin. Ich bin jetzt hier Seite einer Stunde am probieren. Aber ich bekomme immer ein Syntax-error. Ich habe mir das so vorgestellt: IF SELECT COUNT(*) =0 FROM `forum_inhalt` WHERE `autor`='[autor]', `betreff`='[betreff]' AND `beitrag`='[beitrag]' AND `html`='[html]' THEN [meine ganezn SQL, Befehle] else [SELECT 0] (um dem Skit den Feher mitzuteilen...) END Weil das nicht funzt, ahbe ich die Abfrage zu Testzwecken jetzt auf dieses Niveau heruntergeziegen: SET @var :=1; IF @var=1 THEN SELECT 'hallo' AS ergebnis; END; Ich habe da schon so einiges probiert, ht irgendemand von euch eine Ahnung, warum das nicht geht? Die ![]() |
AW: [MySQL]: Bei INSERT doppelte Einträge verhindern-
Hallo,
Wie wärs hiermit: SELECT beitrag FROM forum_inhalt WHERE id = '$id' LIMIT 1 Wenn das Ergebnis in einer String Variable von Delphi '' ist dann ist der Beitrag nicht eingetragen. Dann kannste dein : Insert into machen. Mfg Coffeecoder |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz