Michi: mySql Datensatz mit php löschen

Hallo und guten Abend zusammen

Irgendwie scheint bei mir ein Knopf in der Leitung zu sein, ich kriege es einfach nicht gebacken einen Datensatz aus einer mySql Tabelle zu löschen.

Ich entwickle momentan ein Gästebuch. Nun bin ich beim löschen angelangt.

Der Befehl zum löschen sieht ja in etwas so aus:
     {
     mysql_query("DELETE FROM Gaestebuch WHERE id='".$id."'", $connection);
     }

Jetzt aber, wie kann ich über einen normalen Link (<a href="...">), diesen Query aufrufen.
Das eine if Schleife gemacht werden muss, ist mir eigentlich klar...aber sonst, ich kappiers nicht.

Ich hoffe ihr versteht was ich meine. Dies sind meine ersten Schritte mit php und mysql..nicht böse sein, wenn es einfältig ist.
Gegooglet habe ich auch schon...und auch was gefunden nur leider nicht verstanden...scheine zu blöd zu sein.

Danke schon mal im voraus für die Hilfe.

Liebe Grüsse
Michi

  1. Ich hab nicht sehr viel Ahnung... Vielleicht mal mit DROP versuch anstatt mit DELETE. Ich weiß aber nicht, ob der auch für ein Datensatzt gilt.

    Gruß,
    Timon

    1. Ich hab nicht sehr viel Ahnung... Vielleicht mal mit DROP versuch anstatt mit DELETE. Ich weiß aber nicht, ob der auch für ein Datensatzt gilt.

      DROP geht nur mit TABLE oder DATABASE [1]. Damit wäre der Datensatz zwar prinzipiell auch weg, ....

      [1] oder INDEX oder VIEW

    2. Ⓗⓐⓛⓛⓞ Timon.Freitag!

      Vielleicht mal mit DROP versuch anstatt mit DELETE.

      :-/

      Jepp, am besten immer mit Kanonen auf Spatzen schießen.

      ℆, ℒacℎgas

      --
      Keine Verbesserung ist zu klein oder geringfügig, als dass man
      sie nicht durchführen sollte. (Adorno)
  2. yo,

    Jetzt aber, wie kann ich über einen normalen Link (<a href="...">), diesen Query aufrufen.

    du kannst an einem link variablen anhängen und somit die id des datensatz übermitteln. natürlich muss du auch überprüfen, ob derjenige auch berechtigt ist, diesen datensatz zu löschen.

    Ilja

    1. du kannst an einem link variablen anhängen und somit die id des datensatz übermitteln.

      Habe ich auch schon mal versucht...hat dann irgendwie nicht geklappt...könntest du mir evtl. ein kleines Beispiel machen? Das wäre super!

      natürlich muss du auch überprüfen, ob derjenige auch berechtigt ist, diesen datensatz zu löschen.

      Eine einfaches Login habe ich schon mal erstellt, dass klappt erstaunlicherweise auch.

      gruss
      michi

      1. yo,

        Habe ich auch schon mal versucht...hat dann irgendwie nicht geklappt...könntest du mir evtl. ein kleines Beispiel machen? Das wäre super!

        was genau hat den nicht geklappt ?

        Ilja

  3. Jetzt aber, wie kann ich über einen normalen Link (<a href="...">), diesen Query aufrufen.

    Nichts überstürzen! Erstmal das Problem genau analysieren.

    Die Fragestellung müsste lauten:
    1. Wie erzeuge ich einen Link auf einer Seite,
    2. in dem ein Wert angegeben ist,
    3. der von einer anderen Seite [1] gelesen werden muss,
    4. damit mit diesem Wert eine Aktion durchgeführt werden kann.

    Und damit ist dann schon der Lösungsweg skizziert.

    Das eine if Schleife gemacht werden muss, ist mir eigentlich klar...aber sonst, ich kappiers nicht.

    Die if-Anweisung ist hier nicht ausschlaggebend.

    Die Lösungsschritte im Einzelnen sehen dann so aus:

    1. das weißt du bestimmt schon :-)

    2. ... href="seite.php?bezeichner=wert" ...

    Über einen Link können keine "Variablen" übergeben werden. Links sind HTML-Bestandteil und HTML kennt keine PHP-Sprachelemente. Was hinter dem ? hängt ist dem HTML egal. Du könntest statt id=42 auch nur die 42 anhängen, jedoch bietet PHP bei der ersten Methode auf der Empfängerseite einen einfacheren Zugriff.

    3. id=42:

    mit $id = $_GET['id']; hast du jetzt in der Variable $id den Wert aus der URL mit dem Bezeichner id stehen.

    Hier empfiehlt es sich aber vorher zu prüfen, ob überhaupt der gewünschte Bezeichner im Querystring übergeben wurde:

    if (isset($_GET['id']))
      $id = $_GET['id'];
    else
      $id = 0;

    (0 ist meistens kein verwendeter Wert für eine ID-Spalte in einer Tabelle. Es passiert dann auch nichts, wenn du damit eine Löschanweisung an die DB sendest.)

    4. und was du nun mit dem Wert 42 in der Variable $id machst kommt ganz auf dein Vorhaben an und dafür hast du ja schon die Lösung

    [1] oder einer anderen Inkarnation der gleichen Seite

    1. wow...was soll ich noch sagen? ich mache mich gleich mal daran, dass auszuprobieren.

      Vielen, vielen Dank.
      Gruss
      Michi

  4. Hello,

    dedlfix hat Dir ja schon ein richtiges Kochrezept entwickelt.
    Noch ein paar Gedanken von mir dazu:

    Solch ein Link

    <a href="domain.tld/index.php?cmd=del&id=20">Löschen</a>

    kann gefährlich werden, wenn man einfach nur $_GET['id'] auswertet.
    Außerdem musst Du auch prüfen, ob der User, der da Daten per GET sendet, überhaupt berechtigt ist, dieses Kommande auszuführen.

    Nun könnte es aber auch passieren, dass der Link auf irgendeine geheimnisvolle Weise in einer Suchmaschine gelistet wird. Ich würde aus diesem Grunde auf GET verzichten und POST benutzen. Es besteht wohl ein ungeschriebenes Gesetz, dass POST-Daten (form-action) nicht in Suchmaschinen aufgenommen werden. Habe ich jedenfalls noc nie gesehen ;-))

    Und dann sollte man auf jeden Fall auch

    $id = intval($_POST['id']);

    vorher die Eingabe "kastrieren". Wenn da 0 herauskommt, braucht man die Operation gar nicht durchzuführen.

    Und ohne Session und User-Authentication solltest Du sowieso nicht arbeiten.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Auch dir recht herzlichen Dank, jetzt kann ja nichts mehr schiefgehen...ich bin richtig entzückt von der Hilfe die man hier bekommt.

      gruss
      Michi