Löschen von Datensätzen

In unserer Detailübersicht haben wir bereits den Dateinamen „loeschen.php“ für die Löschmöglichkeit festgelegt.

Bevor wir aber endgültig löschen, fragen wir noch einmal zur Sicherheit nach. Zumal ein löschen von vergangenen Terminen auch nicht unbedingt sinnvoll ist. Diese werden automatisch nicht mehr angezeigt und wir können diese im Archiv uns anzeigen lassen.

Für das Löschen benötigen wir fast identisch die Datei von der Datei „details.php“.

Hier alles übernommen, was wir benötigen:

<?php
session_start();
require_once('../db.php');
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Mike Coustic - Gitarrist</title>
<meta name="description" content="Veranstaltungstermine von Mike Coustic. Zusätzlich Hörbeispiele.">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<!-- eigene CSS-Anweisungen -->
<link href="design.css" rel="stylesheet">
</head>
<body>
<!-- Hier kommt die loeschen -Seite -->
<div data-role="page" id="loeschen" data-theme="b">
  <?php anzeige_kopfbereich('termine', false); ?>
  <div data-role="main" class="ui-content">
    <?php
    echo '<h1>Soll der folgende Termin WIRKLICH gelöscht werden?</h1>';
    $id = (INT) $_REQUEST['id'];
    $sql = "SELECT * FROM termine WHERE id = '$id' ";
    if ($erg = $db->query($sql)) {
      $datensatz = $erg->fetch_object();
    }
    echo '<p><i>Datum:</i><br>';
    echo date("d.m.Y", strtotime($datensatz->datum)); 
    echo '</p>';
    echo '<p><i>Beginn:</i><br>';
    echo $datensatz->beginn; 
    echo '</p>';
    echo '<p><i>Ort:</i><br>';
    echo $datensatz->ort; 
    echo '</p>';
    echo '<p><i>Anmerkung:</i><br>';
    echo $datensatz->anmerkung; 
    echo '</p>';
    ?>
  </div>
  <?php anzeige_fussbereich('', false); ?>
</div>
</body>
</html>

Sicherheitshalber lassen wir unseren Inhalt nur anzeigen, wenn man korrekt eingeloggt ist – ansonsten kommt die entsprechende Meldung.

<!-- Hier kommt die loeschen-Seite -->
<div data-role="page" id="loeschen" data-theme="b">
  <?php anzeige_kopfbereich('termine', false); ?>
  <div data-role="main" class="ui-content">
    <?php
    if ( isset($_SESSION['eingeloggt']) )
    {
      echo '<h1>Soll der folgende Termin WIRKLICH gelöscht werden?</h1>';
      $id = (INT) $_REQUEST['id'];
      $sql = "SELECT * FROM termine WHERE id = '$id' ";
      if ($erg = $db->query($sql)) {
        $datensatz = $erg->fetch_object();
      }
      echo '<p><i>Datum:</i><br>';
      echo date("d.m.Y", strtotime($datensatz->datum)); 
      echo '</p>';
      echo '<p><i>Beginn:</i><br>';
      echo $datensatz->beginn; 
      echo '</p>';
      echo '<p><i>Ort:</i><br>';
      echo $datensatz->ort; 
      echo '</p>';
      echo '<p><i>Anmerkung:</i><br>';
      echo $datensatz->anmerkung; 
      echo '</p>';
    }
    else
    {
      echo "<h1>Bitte einloggen</h1>";
    }
    ?>
  </div>
  <?php anzeige_fussbereich('', false); ?>
</div>

Wir ergänzen diese den bisherigen Stand um einen Link, der angeklickt werden muss, bevor der Datensatz dann endgültig gelöscht wird.

Sicherheitsnachfrage vor endgültigen löschen
Sicherheitsnachfrage vor endgültigen löschen
  <div data-role="main" class="ui-content">
    <?php
    if ( isset($_SESSION['eingeloggt']) )
    {
      echo '<h1>Soll der folgende Termin WIRKLICH gelöscht werden?</h1>';
      $id = (INT) $_REQUEST['id'];
      $sql = "SELECT * FROM termine WHERE id = '$id' ";
      if ($erg = $db->query($sql)) {
        $datensatz = $erg->fetch_object();
      }
      echo '<p>Jetzt <a href="loeschen.php?id='. $id .'&aktion=loeschen">';
      echo date("d.m.Y", strtotime($datensatz->datum)); 
      echo ' endgültig löschen</a> - bitte nicht kopflos nutzen!';
      echo '<p><i>Datum:</i><br>';
      echo date("d.m.Y", strtotime($datensatz->datum)); 
      echo '</p>';
      echo '<p><i>Beginn:</i><br>';
      echo $datensatz->beginn; 
      echo '</p>';
      echo '<p><i>Ort:</i><br>';
      echo $datensatz->ort; 
      echo '</p>';
      echo '<p><i>Anmerkung:</i><br>';
      echo $datensatz->anmerkung; 
      echo '</p>';
    }
    else
    {
      echo "<h1>Bitte einloggen</h1>";
    }
    ?>
  </div>

Und nun der das Löschen selber:

Feedback, dass Datensatz gelöscht wurde
Feedback, dass Datensatz gelöscht wurde

Und der dazugehörige Code:

  <div data-role="main" class="ui-content">
    <?php
    if ( isset($_SESSION['eingeloggt']) )
    {
      if ( isset($_GET['aktion']) and $_GET['aktion'] == 'loeschen' 
           and $_GET['id'] > 0
      )
      {
        $id = (INT) $_GET['id'];
        $loeschen = $db->prepare("DELETE FROM termine WHERE id=(?) LIMIT 1");
        $loeschen->bind_param('i', $id);
        if ($loeschen->execute()) {
            echo "<h1>Datensatz Nr. ". $id." wurde gelöscht</h1>";
        }   
      }
      else
      {
        echo '<h1>Soll der folgende Termin WIRKLICH gelöscht werden?</h1>';
        $id = (INT) $_REQUEST['id'];
        $sql = "SELECT * FROM termine WHERE id = '$id' ";
        if ($erg = $db->query($sql)) {
          $datensatz = $erg->fetch_object();
        }
        echo '<p>Jetzt <a href="loeschen.php?id='. $id .'&aktion=loeschen">';
        echo date("d.m.Y", strtotime($datensatz->datum)); 
        echo ' endgültig löschen</a> - bitte nicht kopflos nutzen!';
        echo '<p><i>Datum:</i><br>';
        echo date("d.m.Y", strtotime($datensatz->datum)); 
        echo '</p>';
        echo '<p><i>Beginn:</i><br>';
        echo $datensatz->beginn; 
        echo '</p>';
        echo '<p><i>Ort:</i><br>';
        echo $datensatz->ort; 
        echo '</p>';
        echo '<p><i>Anmerkung:</i><br>';
        echo $datensatz->anmerkung; 
        echo '</p>';
      }
    }
    else
    {
      echo "<h1>Bitte einloggen</h1>";
    }
    ?>
  </div>