[MySQL 3.23.X] ID Gültigkeit bei Formular Dropdown Feldern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [MySQL 3.23.X] ID Gültigkeit bei Formular Dropdown Feldern

    Hallo ihr,

    brauche denkanstösse um weiter machen zu können

    Habe auch schon hier im Forum mich umgesehen und nicht so richtig passendes gefunden.
    Denke aber es hat was mit LOCK oder einer seperaten Tinyint Spalte zu tun.

    Theoretisch: Habe paar Tabellen:
    Personen: ID / Vorname / Nachname / AnredeID / AbteilungenID / PersonenstatusID
    Anrede: ID / Anredetext
    Abteilungen: ID / Abteilungstext
    Personenstatus: ID / Statustext

    PHP-HTML Formulare zum Eingeben/Updaten/Löschen von Datenzeilen der jeweiligen Tabellen.
    User A will eine neue Person eingeben: Ist also im Formular tätig, diese Formular Dropdown Felder wurden zuvor aus der DB gelesen für das spätere übertragen der IDs in die Personen-Tabelle.
    IDs können nur gelöscht werden, wenn sie nicht in der Personentabelle vorhanden sind (dieses habe ich schon mit einem PHP-Script beim löschen von Anreden/Abteilungen usw. gemacht.
    Was ist aber wenn nun User B einen Anreden - Datensatz löscht, dann ist der ID dort nicht mehr vorhanden. Im Formular bei User A steht er aber immernoch drinnen. Wenn dann User A sein Formular abschickt hat dieser Personeneintrag einen toten ID!

    Meine Denkansetze:
    1. Ich lasse die ID zuvor auf vorhanden sein beim schreiben überprüfen
    2. oder ich arbeite irgendwie mit einer tinyint spalte mit 1 und 0 als Überprüfung
    (geht auch nicht ganz, wenn mehrere Benutzer in der gleichen Eingabemaske sind!)
    3. oder ich sperre die ganzen Tabellen Anrede/Abteilungen usw...

    Gibt es irgendwo vorgehensweisen für dieses Thema?

    Für Ratschläge / Lösungen wäre ich sehr dankbar


    Gruß

    Atax

    EDIT:
    *verschieb* zu brainstorming
    Zuletzt geändert von wahsaga; 13.01.2004, 22:20.

  • #2
    Ich würde Ansatz 1 weiter verfolgen.
    Bei Ansatz 2 verstehe ich den Sinn nicht ganz (sieht aber nach viel Arbeit aus)
    und bei 3 hast du u.U. das Problem, dass die Dropdown-Bearbeitung ständig gesperrt ist, gerade wenn beim Bearbeiten eines Datensatzes einfach das Browserfenster geschlossen wird.
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      ich glaube was du brauchst ist eine datensatzsperre. ich brauchte kürzlich etwas ähnliches. ist ein bisschen arbeit, aber sehr effektiv.

      user 1 macht ein formular auf. im gleichen atemzug wird in einer separaten tabelle ein vermerkt hinterlegt, welcher für 10 min. gültig ist.

      kommt nun user b, wird zuerst geguckt, ob ein vermerk vorhanden ist. ist der vermerk vorhanden / und gültig, darf er nix machen.

      braucht user a, der ja schon rumfummelt länger als 10 minuten, wird beim speichern zunächst überprüft, ob der datensatz zwischenzeitlich von jemand anderem bearbeitet wurde ( zusätzliches feld - last update ). .... so kann nix mehr passieren. macht aber kein spass sowas einzubauen
      h.a.n.d.
      Schmalle

      http://impressed.by
      http://blog.schmalenberger.it



      Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
      ... nur ohne :-)

      Kommentar


      • #4
        Denke auch das Ansatz 1 bis jetzt ein möglicher Weg ist.

        Mir ist aber da noch einer Nr. 4 eingefallen...

        Denkansatz Nr. 4 (vollgass brainstroming...)

        In den Tabellen Anrede / Abteilungen / usw... eine spalte integrieren, wo ein löschdatum eingetragen werden kann wenn eine Zeile gelöscht-entfernt werden soll. Schon verwendete IDs können nicht gelöscht werden, wird schon abgefragt.

        Das heisst also:

        User A legt gerade eine neue Person an, AnredeID usw sind in seinem Formualar gespeichert.

        User B löscht nun eine Anrede-Zeile (ID) so wird dann in die Spalte "Loeschdatum" ein timestamp eingetragen.
        (In den neu aufgerufenen Dropdown Feldern werden diese Einträge mit "loeschdatum" nicht mehr angezeigt!)

        User A drückt auf senden im Formular, so und jetzt wird überprüft ob ein "loeschdatum" in der ID Zeile vorhanden ist, wenn ja dann solle es ihm mitgeteilt werden entweder zur Korrektur (Andere Anrede auswählen) oder zur wiederherstellung (löschen des Eintrages in AnredeID Spalte wo "loeschdatum" halt enthalten ist).

        Damit hätte ich dann entweder wieder den gelöschten Eintrag herbei geholt genau für diese Zeitliche
        Überschneidung oder wenn User A sich anders entscheidet einen AnredeID eintrag mit löschdatum.
        Diese alle Einträge die nirgends mehr zugeordnet sind und ein löschdatum aufweisen könnte ich dann mit einem alle 24h Cron Job aus der DB wirklich ganz entfernen lassen....


        Was haltet ihr von Nummer vier?

        Nr. 1 wäre etwas einfacher... Wenn ID nicht mehr vorhanden dann müsste User A eine neue Anrede wieder hinzufügen... ( Denke aber das da User A auf mich zukommen würde )

        Hat einer in solch einer hinsicht Erfahrungen? Das sowas oft vorkommen könnte, so zeitliche Überschneidungen von Eingabefeldern?

        Danke für kommende Hilfestellungen

        Atax

        Kommentar

        Lädt...
        X