AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [MySQL]: Bei INSERT doppelte Einträge verhindern-

[MySQL]: Bei INSERT doppelte Einträge verhindern-

Offene Frage von "Coffeecoder"
Ein Thema von yankee · begonnen am 26. Dez 2004 · letzter Beitrag vom 9. Mai 2011
Antwort Antwort
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#1

[MySQL]: Bei INSERT doppelte Einträge verhindern-

  Alt 26. Dez 2004, 00:11
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??
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#2

Re: [MySQL]: Bei INSERT doppelte Einträge verhindern-

  Alt 26. Dez 2004, 00:52
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
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#3

Re: [MySQL]: Bei INSERT doppelte Einträge verhindern-

  Alt 26. Dez 2004, 01:01
Zitat von yankee:
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??
das was du mit dem einzigen wort meinst, geht bei select. heisst distinct, und verhindert, dass doppelte abfragenresultate angezeigt werden.
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#4

Re: [MySQL]: Bei INSERT doppelte Einträge verhindern-

  Alt 26. Dez 2004, 01:06
ja aber er will doch das die datensätze erst garnicht in die db gelangen und das teil zumüllen
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#5

Re: [MySQL]: Bei INSERT doppelte Einträge verhindern-

  Alt 26. Dez 2004, 01:26
Zitat von supermuckl:
ja aber er will doch das die datensätze erst garnicht in die db gelangen und das teil zumüllen
sag ich doch ^^. bzw hab ich nich gesagt, aber gemeint. man beachte meinen satz "das was du meinst, geht bei select". das war nich die direkte lösung des problems, sondern der hinweis, dass das wort, was er sucht, nich bei einem insert into existiert
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#6

Re: [MySQL]: Bei INSERT doppelte Einträge verhindern-

  Alt 26. Dez 2004, 09:58
Zitat von phXql:
das was du mit dem einzigen wort meinst, geht bei select. heisst distinct, und verhindert, dass doppelte abfragenresultate angezeigt werden.
Ja, ich glaube daran dachte ich...
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
MySQL-Dokumentation Ist da ja leider nicht gerade genauer (die könnnten ja wenigstens mal ein Beispiel bringen...)
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Benutzerbild von Coffeecoder
Coffeecoder

Registriert seit: 27. Apr 2011
242 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: [MySQL]: Bei INSERT doppelte Einträge verhindern-

  Alt 9. Mai 2011, 09:07
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
Coffeecoder
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz