Negro: Datensatz löschen

Hi zusammen !

hab mit Dreamweaver eine PHP-Seite gebastelt, mit der man Datensätze aus einer MySQL-Datenbank in Textfeldern bearbeiten und anschließend aktualisieren kann. Klappt auch alles wunderbar, nur brauche ich neben dem Button "Aktualisieren" auch einen zusätzlichen Button, damit ich den aktuell angezeigten Datensatz auch löschen kann.

Wie geht sowas !

Hinweis: Bin kein PHP-Experte :-) aber ich gebe mir Mühe euch zu verstehen !

Also, bin für jeden Tipp dankbar.

CU
Negro

  1. den button im formular erstellen
       <input type="submit" value="Löschen" name="delete">

    und dann kannste das so löschen

    if ($delete == "Löschen")
      {
     include("db.php");
     mysql_query("DELETE FROM tabelle WHERE dein kriterium");
     mysql_close();
      }

    1. Hallo Azmodan,

      <input type="submit" value="Löschen" name="delete">
       if ($delete == "Löschen")

      das wird mit einer gut konfigurierten php-Version nicht funktionieren und führt zu Fragen wie in [pref:t=50710&m=278043]

      include("db.php");

      verrätst du auch noch, was in der db.php drinsteht?

      mysql_query("DELETE FROM tabelle WHERE dein kriterium");

      1. das query würde ich vorher in eine Variable schreiben, um in bei Bedarf (Fehlersuche o.ä.) ausgeben zu können.
      2. was soll bei "dein kriterium" hin?
      3. was passiert im Fehlerfalle? (ein 'or die("Beim löschen ist ein Fehler aufgetreten")' o.ä. vor dem ; wären nicht schlecht.

      mysql_close();

      lies bitte im Archiv (bzw. in der </faq/> (-></faq/#Q-09d>)) nach, warum hier keine (mehr oder weniger) vollständigen Lösungen gepostet werden sollen.

      Grüße aus Nürnberg
      Tobias

      --
      Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
      1. Hallo Selferinnen und Selferaußen,

        dazu möchte ich doch mal meinen Senf ablassen, bevor es zu spät ist.

        Wenn man so vorghet, wie hier oberflächlich beschrieben, dann braucht man gar keine Datenbank anzulegen, denn es findet sich bestimmt jemand, der ALLE Datensätze löscht. Solche Aufgaben sollte man nicht ohne Session lösen.

        1. Schritt
        kein Datensatz ist ausgewählt. Sessionpuffer für Datensätze (Array) ist leer.
        2. Schritt
        Datensatz wird angefordert. Es wird eine ID erzeugt und unter dieser ID in das Array in der Session eingetragen. Die Satzdaten zusammen mit der ID (hidden) ausliefern Nun kann man eindeutig identifizieren, dass genau dieser Datensatz zur Bearbeitung an DEN angemeldeten Benutzer (Session-ID) ausgeliefert wurde.

        3. Schritt (a)
        der User entscheidet sich, den Satz am Client zu ändern und dann zum Update zurückzuposten. In der Session nachschauen, ob ein Satz unter dieser ID mit der Satznummer eingetragen ist. Nun kann man noch feststellen, welche Felder verändert wurden und daruas Trigger ableiten, ggf. einen Dialog mit dem User anzetteln...
        Der Satz wird in der DB updated und dann ggf. aus dem Sessionpuffer entfernt. Damit sind auch Doppelpostings abgefangen. Es ist NICHT möglich, Sätze zu verändern, die vorher nicht eingetragen worden sind.

        3. Schritt (b)
        ...
        Löschen fünktioniert natürlich analog. Es ist dadruch nicht möglich, durch Formular-Manipulation beliebige Sätze zu löschen.

        Ob man nun immer auch die Daten des Datensatzes oder nur die Schlüssel (Formular-ID, Satznummer) in der Session abspeichert ist Philosophie. Man kann dafür natürlich eine eigenständige Tabelle benutzen, die

        ID_User, Sessionnr, Tabellenname, Satznummer, Dirtyflag(s), Readyflag, Timestamp, ...

        enthält.

        Dann kann man damit sehr leicht ein Managementsystem für konkurrierende Zugriffe inclusive Logging (wer hat wann welchen Satz angefordert, bearbeitet, gelöscht,...) bauen. Ist fast kein Aufwand mehr.

        Liebe Grüße

        Chris (C)

  2. Hallo Negro,

    hab mit Dreamweaver eine PHP-Seite gebastelt,

    mhh... da sag ich jetzt mal lieber nichts zu...

    damit ich den aktuell angezeigten Datensatz auch löschen kann.

    das Löschen funktioniert im Prinzip genauso wie das anlegen/ändern nur dass du statt INSERT/UPDATE eben DELETE verwendest ->http://www.mysql.com/doc/de/DELETE.html - aber pass auf, dass du nicht zu viel oder gar alles löschst...

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|