Autor |
Nachricht |
Nimroy
Community Manager Threadersteller
Dabei seit: 26.05.2004
Ort: zwischen Köln und D'dorf
Alter: 45
Geschlecht:
|
Verfasst Di 04.07.2006 09:03
Titel Zu viele Einträge in Datenbanktabelle verhindern |
|
|
Servus!
Mühsam nährt sich das Eichhörnchen. Aber ich hab auch schon ne Menge gelernt und wühl mich weiter durch mein Datenbank-Projekt. Aber so ganz ohne eure Hilfe gehts dann doch wieder nicht.
Folgendes Problem plagt mich:
Ich hab ein Formular, aus diesem werden die eingetargenen Daten in eine DB-Tabelle eingetragen. Das Formular erstellt eine Namensliste, wobei jeder Name im Formular eine eigene Zeile enthält. Also quasi sagen wir mal 3 Zeilen, und in jeder Zeile stehen 2 Input-felder. Die Anzahl Zeilen kommt aus ner anderen Aktion ist mehr oder weniger fix.
Eingetragen wird halt so das übliche - ne ID, Name und mailadresse und nen Zugehörigkeitsindex. ID und Index werden dabei nicht manuel sondern automatisch gesetzt. Klappt auch alles und wenn das in Der DB gelandet ist, sieht die Tabelle so aus:
Code: |
ID Name Mail Gruppe
1 Tick tick@disney.com 1
2 Trick trick@disney.com 1
3 Track track@disney.com 1 |
Geht der User nach dem Eintragen per Back-Button seines Browsers wieder auf die Formular-Seite und trägt erneut was ein, werden die neuen einträge aber dummerweise hinten dran gehangen. So dass ich dann letztendlich mehr Leute mit dem Gruppen-Schlüssel 1 habe, als ich eigentlich wollte.
Jemand mich verstanden und ne Idee, wie ich das abfangen kann?
|
|
|
|
|
tacker
Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht:
|
Verfasst Di 04.07.2006 09:55
Titel
|
|
|
Dafür gibts auf Datenbank-Ebene UNIQUE.
Code: | CREATE TABLE `table` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` text NOT NULL,
`mail` text NOT NULL,
`group` int(10) unsigned NOT NULL default '0',
UNIQUE KEY `id` (`id`),
UNIQUE KEY `mail_group` (`mail`,`group`),
); |
Hier darf es extakt einmal die gleiche Kombination aus "mail" und "group" geben.
|
|
|
|
|
Anzeige
|
|
|
Nimroy
Community Manager Threadersteller
Dabei seit: 26.05.2004
Ort: zwischen Köln und D'dorf
Alter: 45
Geschlecht:
|
Verfasst Di 04.07.2006 10:33
Titel
|
|
|
Aber kann ich das in meinem Fall anwenden? Gruppe ist ein Fremdschlüssel.
Und außer diesem Schlüssel gibts ja nix, was ich in verbindung setzen könnte, um das Unique zu machen. Okay, ich könnte noch den Namen dazusetzen, um zu verhindern, dass der gleiche Name mehrfach in der gleichen Gruppe ist.
Aber das verhindert ja nicht, dass trotz der vorher gesetzten Beschränkung "Zu dieser Gruppe gehören 3 Leute" nochmal drei dazukommen, auf dem von mir oben beschrieben Weg per Back-Button.
|
|
|
|
|
UNIQLab
Dabei seit: 30.06.2006
Ort: Mooon
Alter: -
Geschlecht:
|
Verfasst Di 04.07.2006 15:30
Titel
|
|
|
ich denke mal dein problem sind ganz einfach ausgedrückt, die post-daten.
löschen geht nicht, zumindest ist mir kein weg bekannt.
Insofern könntest du eine weiterleiteung einbauen, die sofort nach dem eintragen aktiv wird.
Die weiterleitung würde dann z.b. wieder auf das Formuler verweisen, oder auf eine site deiner wahl, z.b.: "eintrag erfolgreich ..."
|
|
|
|
|
Nimroy
Community Manager Threadersteller
Dabei seit: 26.05.2004
Ort: zwischen Köln und D'dorf
Alter: 45
Geschlecht:
|
Verfasst Di 04.07.2006 15:32
Titel
|
|
|
UNIQLab hat geschrieben: | ich denke mal dein problem sind ganz einfach ausgedrückt, die post-daten.
löschen geht nicht, zumindest ist mir kein weg bekannt.
Insofern könntest du eine weiterleiteung einbauen, die sofort nach dem eintragen aktiv wird.
Die weiterleitung würde dann z.b. wieder auf das Formuler verweisen, oder auf eine site deiner wahl, z.b.: "eintrag erfolgreich ..." |
Das passiert ja auch. geht der user aber jetzt per back-Button des Browsers zurück auf das Formular, könnte er ja auf die Idee kommen, da was neues Eintragen zu wollen. Die neuen Einträge würden dann genauso in die Tabelle fliegen. Das sollen sie ja nicht. Wenn er da was einträgt, sollen im grunde die zuletzt gemachten Einträge ersetzt werden.
|
|
|
|
|
UNIQLab
Dabei seit: 30.06.2006
Ort: Mooon
Alter: -
Geschlecht:
|
Verfasst Di 04.07.2006 15:38
Titel
|
|
|
Das mit der Gruppe, und dessen Sinn, ist mir noch nicht ganz klar. Wäre praktisch wenn du das mal ausführen könntest, was genau du machen möchstest bzw dir vorstellst, auch wenn nur der Vollständigkeit halber.
Wieso löscht du nicht einfach die alten Einträge und ersetzt durch die Neuen?
Zuletzt bearbeitet von UNIQLab am Di 04.07.2006 15:40, insgesamt 2-mal bearbeitet
|
|
|
|
|
Nimroy
Community Manager Threadersteller
Dabei seit: 26.05.2004
Ort: zwischen Köln und D'dorf
Alter: 45
Geschlecht:
|
Verfasst Di 04.07.2006 15:40
Titel
|
|
|
UNIQLab hat geschrieben: |
Wieso löscht du nicht einfach die alten Einträge und ersetzt durch die Neuen? |
Genau darum gehts ja? Wie stell ich raus, welche Einträge die letzten waren und wie lösch ich diese?
Das mit der Gruppe ist nur ne weitere Information in der tabelle.
//Nachtrag, naja, das löschen bzw. updaten der Informationen ist klar. nur das rausbekommen, der relevanten ist halt etwas tricky, glaub ich. zur Information: es gibt ne Session-Variable, die festlegt, wieviele zeilen (=teilnehmer) es im Formular geben darf.
Zuletzt bearbeitet von Nimroy am Di 04.07.2006 15:43, insgesamt 1-mal bearbeitet
|
|
|
|
|
UNIQLab
Dabei seit: 30.06.2006
Ort: Mooon
Alter: -
Geschlecht:
|
Verfasst Di 04.07.2006 15:43
Titel
|
|
|
Ich gehe mal davon aus, das mehr als 3 Einträge da sind, ansonsten wäres ja denkbar einfach.
Aber erklär bitte erstmal was du vorhast, ansonsten kann ich dir nicht so recht folgen.
|
|
|
|
|
|
|
|
Ähnliche Themen |
Die Letzten 5 Einträge in SQL
pornografische einträge im gästebuch
PDF Formulare (Einträge speichern)
Wordpress: Einträge auslesen
Bestimmte einträge anzeigen in der DB
[PHP] Aus Textdatei gelesene Einträge sotieren
|
|