Ergebnis 1 bis 4 von 4

Thema: Doppelte Einträge in der Datenbank verhindern / Schöne Fehlermeldung

  1. #1
    Contao-Nutzer Avatar von hjansen
    Registriert seit
    05.07.2009.
    Ort
    Krefeld
    Beiträge
    20

    Standard Doppelte Einträge in der Datenbank verhindern / Schöne Fehlermeldung

    Hallo zusammen.

    Ich habe eine TL Extension geschrieben die soweit auch schon funktioniert.

    Jetzt habe ich ein Feld dessen Inhalt nicht mehrfach in vorkommen darf.

    Ich habe im Datenbankmodell daher einach einen UNIQUE index auf das Feld gesetzt. Im Backend wird damit zwar erfolreich verhindert das ich einen doppelten Eintrag anlegen aber es erscheint unter dem Feld immer die SQL Fehlermeldung:

    Query error: Duplicate entry 'de' for key 2 (UPDATE tl_domain_whois SET tld='de' WHERE id='9')

    Gibt es dafür eine bessere Methode ? Ich würde mir wünschen das dort einfach eine Fehlermeldung auftaucht wie z.B. "Fehler: Es existiert bereits ein Datensatz mit dieser Domainendung"

    Das Datenbankmodell sieht so aus:

    CREATE TABLE `tl_domain_whois` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `tstamp` int(10) unsigned NOT NULL default '0'
    `tld` varchar(64) NOT NULL,
    `server` varchar(255) NOT NULL,
    `string` varchar(255) NOT NULL,
    `favourite` char(1) NOT NULL default 'N'
    PRIMARY KEY (`id`),
    UNIQUE `tld` (`tld`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    Damit habe ich übrigends auch noch das Problem das wenn ich in der Erweiterungsverwaltung auf "Datenbank prüfen/aktualisieren klicke" er immer wieder die folgenden SQL Statements ausführen will obwohl ich an der Tabelle nichts geändert habe:

    ALTER TABLE `tl_domain_whois` CHANGE `tld` `tld` varchar(64) NOT NULL;
    ALTER TABLE `tl_domain_whois` CHANGE `server` `server` varchar(255) NOT NULL;
    ALTER TABLE `tl_domain_whois` CHANGE `string` `string` varchar(255) NOT NULL;
    ALTER TABLE `tl_domain_whois` DROP INDEX `tld`, ADD UNIQUE `tld` (`tld`);

    Ist das normal ? Oder habe ich irgendwo was vergessen ? Ein löschen und neu anlegen der Tabelle hat leider auch nichts gebracht.

    Gruß

    Holger
    Geändert von hjansen (05.07.2009 um 18:06 Uhr)

  2. #2
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.614
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo Holger,

    Offenbar hast Du .de als Default im DCA eingetragen. Wenn dann also versucht wird die Datenbank zu schreiben, kommt diese Fehlermeldung (Nur die Datenbank weis, dass dieser Eintrag nicht doppelt sein darf).

    Richtig wäre, wenn TL vor dem Speichern abprüft, ob was doppelt ist. Das machst Du in der Definition der Fields durch die Evaluation
    'eval' => array('unique'=>true)
    siehe Doku: http://de.contaowiki.org/DevelopmentEvaluation

    --
    Für das Problem mit der database.sql gibt es ein Tutorial von BugBuster:
    http://www.typolight.glen-langer.de/...-erzeugen.html

  3. #3
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Oh, Danke.
    Als erstes, immer default Angaben im Create Statement angeben, Ausnahme beim Blob und Text Feldtyp.
    Und dann mach mal:
    Code:
    UNIQUE KEY `tld` (`tld`)
    Ich bin grad dabei alle Varianten (NULL, NOT NULL, und die häufigsten Feldtypen) in eine Tabelle zu bringen um daraus dann mal ein Mini Tutorial zu machen.

    Nachtrag:
    Hatte Nina schon angefangen, habs mal mit meinen Erfahrungen ergänzt:
    Tipps zur SQL Dump Syntax in TYPOlight
    Geändert von BugBuster (07.07.2009 um 22:05 Uhr) Grund: Link
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  4. #4
    Contao-Nutzer Avatar von hjansen
    Registriert seit
    05.07.2009.
    Ort
    Krefeld
    Beiträge
    20

    Standard

    Super, danke das wars ! Jetzt funktioniert das so wie ich mir das vorgestellt habe.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Doppelte Breadcrumb Einträge
    Von Didl im Forum Layout / Templates / Holy Grail
    Antworten: 1
    Letzter Beitrag: 09.06.2011, 08:44
  2. doppelte Einträge im Nachrichtenleser
    Von okni im Forum Nachrichten/Events/FAQ
    Antworten: 1
    Letzter Beitrag: 25.02.2010, 23:22
  3. Datenbank prüfen/aktualisieren - Einträge verschwinden nicht
    Von operatorone im Forum Sonstiges zu Contao
    Antworten: 4
    Letzter Beitrag: 28.11.2009, 22:02
  4. Doppelte E-Mail Adressen verhindern?
    Von mojo_b im Forum Off Topic
    Antworten: 2
    Letzter Beitrag: 24.11.2009, 11:58

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •