Abfrage der Zugangsdaten aus Datenbank

Als erstes benötigen wir eine neue Tabelle – der Namen ist „zugangsdaten“ mit 4 Feldern

  • id
  • nutzerid
  • kennwort
  • rechte

Wir tragen nun von Hand 3 Zugänge in die Datenbank ein. Ein Verwaltungsprogramm kann man ja bei Gelegenheit durch das Wissen der letzten Kapitel selber sich erstellen. Jetzt ist das Prinzip erst einmal wichtig.

Bei den Kennwörtern schreiben wir das H in geheim groß (gut zum testen)

INSERT INTO `adressbuch`.`zugangsdaten` (`id`, `nutzerid`, `kennwort`, `rechte`) 
VALUES (NULL, 'Chef', 'geHeimer', 'alles'), 
(NULL, 'Abteilungsleiter', 'geHeim', 'datenpflege')

Jetzt können wir in unserem Programm den Datenbankzugriff machen.

if ( isset($_POST['aktion']) and $_POST['aktion'] == 'einloggen' )
{
    if ( isset($_POST['nutzerid']) and trim($_POST['nutzerid']) != '' 
         and 
         isset($_POST['kennwort']) and trim($_POST['kennwort']) != '' 
       )
    {
        // überprüfen, ob Zugangsdaten korrekt sind
        $nutzerid_formular = trim($_POST['nutzerid']);
        $kennwort_formular = trim($_POST['kennwort']);
        $zugang = $db->prepare("SELECT id, nutzerid, kennwort, rechte 
              FROM zugangsdaten WHERE nutzerid=? && kennwort=? ");
        $zugang->bind_param('ss',$nutzerid_formular, $kennwort_formular);
        $zugang->execute();
        $zugang->bind_result($id, $nutzerid, $kennwort, $rechte);
        while ($zugang->fetch()) {
            //  echo "<li> $id $nutzerid $kennwort, $rechte";
        }
        // echo "<p>Treffer $nutzerid / $kennwort: ". $zugang->num_rows ."</p>";
        if (  $zugang->num_rows == 1 ) {
            $_SESSION['eingeloggt']['nutzerid'] = $nutzerid;
            $_SESSION['eingeloggt']['rechte']   = $rechte;
        }
        else
        {
            echo "<p>Bitte korrekte Zugangsdaten eingeben!</p>";
            unset ($_SESSION['eingeloggt']['nutzerid']);
            unset ($_SESSION['eingeloggt']['rechte']);
        }       
    }
    else 
    {
        echo "<p>Bitte Formular komplett ausfüllen</p>";
    }
}

Jetzt bauen wir das um, dass der Einloggbereich immer oben im Kopf kommt und wir uns bei der Neuanlage von Seiten nicht mehr darum kümmern müssen.

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <title>Datenpflegeanwendung in PHP - Beispielprojekt PHP-Kurs.com</title>
    <link href="design.css" rel="stylesheet">
</head>
<body>
<div id="seite">
<header>
        <div id="einloggbereich">
<?php
if ( isset($_POST['aktion']) and $_POST['aktion'] == 'ausloggen' )
{
    echo "<p>Sie wurden ausgeloggt</p>";
    unset ($_SESSION['eingeloggt']['nutzerid']);
    unset ($_SESSION['eingeloggt']['rechte']);  
}
if ( isset($_POST['aktion']) and $_POST['aktion'] == 'einloggen' )
{
    if ( isset($_POST['nutzerid']) and trim($_POST['nutzerid']) != '' 
         and 
         isset($_POST['kennwort']) and trim($_POST['kennwort']) != '' 
       )
    {
        // überprüfen, ob Zugangsdaten korrekt sind
        $nutzerid_formular = trim($_POST['nutzerid']);
        $kennwort_formular = trim($_POST['kennwort']);
        $zugang = $db->prepare("SELECT id, nutzerid, kennwort, rechte 
               FROM zugangsdaten WHERE nutzerid=? && kennwort=? ");
        $zugang->bind_param('ss',$nutzerid_formular, $kennwort_formular);
        $zugang->execute();
        $zugang->bind_result($id, $nutzerid, $kennwort, $rechte);
        while ($zugang->fetch()) {
            //  echo "<li> $id $nutzerid $kennwort, $rechte";
        }
        // echo "<p>Treffer $nutzerid / $kennwort: ". $zugang->num_rows ."</p>";
        if (  $zugang->num_rows == 1 ) {
            $_SESSION['eingeloggt']['nutzerid'] = $nutzerid;
            $_SESSION['eingeloggt']['rechte']   = $rechte;
        }
        else
        {
            echo "<p>Bitte korrekte Zugangsdaten eingeben!</p>";
            unset ($_SESSION['eingeloggt']['nutzerid']);
            unset ($_SESSION['eingeloggt']['rechte']);
        }       
    }
    else 
    {
        echo "<p>Bitte Formular komplett ausfüllen</p>";
    }
}
if ( ! isset($_SESSION['eingeloggt']['rechte']) )
{
?>
<form action="" method="post">
    <label>Nutzer-ID:
        <input type="text" name="nutzerid" id="nutzerid">
    </label><br>
    <label>Kennwort:
        <input type="text" name="kennwort" id="kennwort">
    </label><br>
    <input type="hidden" name="aktion" value="einloggen">
    <input type="submit" value="einloggen">
</form>
<?php
}
else
{
?>
<form action="" method="post">
    <input type="hidden" name="aktion" value="ausloggen">
    <input type="submit" value="ausloggen">
</form>
<?php
}   
?>  
    </div>
        <p>Datenverwaltungstool</p>
</header>
<div id="inhalt">

Das Design wird entsprechend ergänzt:

#einloggbereich {
	width: 300px;
	margin-right: 1em;
	text-align: right;
	float: right;
	display: inline-block;
	font-size: 10px !important;
}
#einloggbereich p {
	margin: 0;
	padding: 0;
	line-height: 1em;
}
header p {
	line-height: 3.4em;
	padding-left: 1em;
	font-size: 1.5em;
}

Jetzt können wir auf die Rechte zugreifen:

        <tr>
            <td>
                <a href="?aktion=anzeigen&id=<?php echo $inhalt->id; ?>">
                    anzeigen</a> 
<?php 
            if (isset($_SESSION['eingeloggt']['rechte']) 
                and 
                (
                  $_SESSION['eingeloggt']['rechte'] == 'alles' 
                  OR $_SESSION['eingeloggt']['rechte'] == 'datenpflege') 
                )
            {
?>
                <a href="?aktion=bearbeiten&id=<?php echo $inhalt->id; ?>">
                    ändern</a> 
<?php
}
            if ( isset($_SESSION['eingeloggt']['rechte']) 
                 and $_SESSION['eingeloggt']['rechte'] == 'alles' )
            {
?>              
                <a href="?aktion=sicherheitsabfrage&id=<?php echo $inhalt->id; ?>">
                    löschen</a>
<?php
}
?>
            </td>
            <td><?php echo $inhalt->id; ?></td>
            <td><?php echo bereinigen($inhalt->vorname); ?></td>
            <td><?php echo bereinigen($inhalt->nachname); ?></td>
            <td><?php echo bereinigen($inhalt->anmerkung); ?></td>
            <td><?php echo $inhalt->erstellt; ?></td>
        </tr>

Kompletter Code:

<?php
require_once 'inc/db.php';
$ds_pro_seite = 5;
if (isset($_POST['aktion']) and $_POST['aktion']=='speichern' ) {
    $vorname = "";
    if (isset($_POST['vorname'])) {
        $vorname = trim($_POST['vorname']);
    }
    $nachname = "";
    if (isset($_POST['nachname'])) {
        $nachname = trim($_POST['nachname']);
    }
    $anmerkung = "";
    if (isset($_POST['anmerkung'])) {
        $anmerkung = trim($_POST['anmerkung']);
    }
    if ( $vorname != '' or $nachname != '' or $anmerkung != '' ) 
    {
        // speichern
        $einfuegen = $db->prepare("INSERT INTO kontakte
            (vorname, nachname, anmerkung, erstellt)
            VALUES (?, ?, ?, NOW())");
        $einfuegen->bind_param('sss', $vorname, $nachname, $anmerkung);
        if ($einfuegen->execute()) {
            header('Location: index.php?aktion=feedbackgespeichert');
            die();
        }
        echo "<p>Daten werden gespeichert</p>";
    }
}
require_once 'inc/bereich-kopf.inc.php';
if (isset($_GET['aktion']) and $_GET['aktion'] == 'allesanzeigen') {
    unset($_SESSION['suchbegriff']);
    $_SESSION['seite_nr_normal'] = 0;
}
if (isset($_GET['aktion']) and $_GET['aktion'] == 'sicherheitsabfrage') {
    if ( isset($_GET['id'])) {
        $id_einlesen = (INT) $_GET['id'];
        echo '<h1>Sicherheitsabfrage Löschen</h1>';
        echo '<p>Soll der folgende Datensatz unwiderruflich gelöscht werden?</p>';
        echo '<p><a href="?aktion=loeschen&id='. $id_einlesen.'">endgültig löschen!!</a></p>';
        $_GET['aktion'] = 'anzeigen';
    }
}
if (isset($_GET['aktion']) and $_GET['aktion'] == 'anzeigen') {
    if ( isset($_GET['id'])) {
        $id_einlesen = (INT) $_GET['id'];
        if ($id_einlesen > 0) {
            echo "<h1>Daten anzeigen von $id_einlesen</h1>";
            $dseinlesen = $db->prepare("SELECT id, vorname, nachname, anmerkung, erstellt 
                                               FROM kontakte WHERE id = ? ");
            $dseinlesen->bind_param('i', $id_einlesen);
            $dseinlesen->execute();
            $dseinlesen->bind_result($id, $vorname, $nachname, $anmerkung, $erstellt);
            $dseinlesen->fetch();
            echo "<p>ID: <b> $id </b><br>";          
            echo "Vorname: <b> $vorname </b><br>";          
            echo "Nachname: <b> $nachname </b><br>";          
            echo "Anmerkung: <b> $anmerkung </b><br>";          
            echo "erstellt am: <b> $erstellt </b></p>";          
            echo '<p><a href="index.php">Tabelle anzeigen</a>';
            $dseinlesen->close();
            require_once 'inc/bereich-fuss.inc.php';
            exit;   
        }
    }
}
if (isset($_GET['aktion']) and $_GET['aktion'] == 'loeschen') {
    // löschen von Datensatz
    if (isset($_GET['id'])) {
        $id = (INT) $_GET['id'];
        if ( $id > 0)
        {
            $loeschen = $db->prepare("DELETE FROM kontakte WHERE id=? LIMIT 1");
            $loeschen->bind_param('i', $id);
            if ($loeschen->execute()) {
                echo "<p>Datensatz $id wurde gelöscht</p>";
            }
        }
    }
}
if (isset($_GET['aktion']) and $_GET['aktion'] == 'feedbackgespeichert') {
    echo '<p class="feedbackerfolgreich">Datensatz wurde gespeichert</p>'; 
}
$modus_aendern = false;
if (isset($_GET['aktion']) and $_GET['aktion'] == 'bearbeiten') {
    $modus_aendern = true;
}
if (isset($_POST['aktion']) and $_POST['aktion'] == 'korrigieren') {
    $id = "";
    if ( isset ($_POST['id'])) {
        $id = (INT) trim($_POST['id']);
    }
    $vorname = "";
    if (isset($_POST['vorname'])) {
        $vorname = trim($_POST['vorname']);
    }
    $nachname = "";
    if (isset($_POST['nachname'])) {
        $nachname = trim($_POST['nachname']);
    }
    $anmerkung = "";
    if (isset($_POST['anmerkung'])) {
        $anmerkung = trim($_POST['anmerkung']);
    }
    if ( $id != '' AND ( $vorname != '' or $nachname != '' or $anmerkung != '')) {
        $update = $db->prepare("UPDATE kontakte SET
                                vorname = ?, nachname = ?, anmerkung = ?
                                WHERE id = ? LIMIT 1");
        $update->bind_param("sssi", $vorname, $nachname, $anmerkung, $id);
        if ( $update->execute() ) {
            echo '<p class="feedbackerfolg">Datensatz wurde geändert</p>';
            $modus_aendern = false;
        }
    }
}
?>
<form action="" method="get">
    suchen nach:
    <input type="hidden" name="aktion" value="suchen">
    <input type="text" name="suchbegriff" id="suchbegriff">
    <input type="submit" value="suchen">
</form>
<?php
if ( $modus_aendern == false ) {
    $daten = array();
    if ( isset($_GET['suchbegriff']) ) {
        $_SESSION['seite_nr_suche'] = 0;
    }
    if ( ! isset($_GET['suchbegriff']) and isset($_SESSION['suchbegriff']) ) 
    {
        $_GET['suchbegriff'] = $_SESSION['suchbegriff'];
    }
    if ( isset($_GET['suchbegriff']) and trim ($_GET['suchbegriff']) != '' )
    {
        $_SESSION['suchbegriff'] = $_GET['suchbegriff'];
        $suchbegriff = trim ($_GET['suchbegriff']);
        echo "<p>Gesucht wird nach: <b>$suchbegriff</b>";
        echo ' - wieder <a href="?aktion=allesanzeigen">alle Daten anzeigen</a>';
        echo "</p>"; 
        $suche_nach = "%{$suchbegriff}%";
        $suche = $db->prepare("SELECT id, vorname, nachname, anmerkung, erstellt 
                 FROM kontakte WHERE nachname LIKE ? OR vorname LIKE ? OR anmerkung LIKE ?");
        $suche->bind_param('sss', $suche_nach,$suche_nach,$suche_nach);
        $suche->execute();
        $suche->store_result();
        echo "<p>Treffer: ". $suche->num_rows ."</p>";
        $ds_gesamt = $suche->num_rows;
        // hier muss die neue SQL-Anweisung rein
                if ( isset($_GET['seite']) ) {
                    $seite = $_GET['seite'];
                    $_SESSION['seite_nr_suche'] = $_GET['seite'];
                }
                else
                {
                    if ( ! isset($_SESSION['seite_nr_suche'])) {
                        $_SESSION['seite_nr_suche'] = 0;
                        $seite = 0;
                    }
                    else
                    {
                        $seite = $_SESSION['seite_nr_suche'];
                    }
                }
        $suche = $db->prepare("SELECT id, vorname, nachname, anmerkung, erstellt 
                 FROM kontakte WHERE nachname LIKE ? OR vorname LIKE ? OR anmerkung LIKE ?
                 LIMIT $seite, $ds_pro_seite
                 ");
        $suche->bind_param('sss', $suche_nach,$suche_nach,$suche_nach);
        $suche->execute();
        // Am Anfang muss noch die Seitenzahl auf 0 gesetzt werden, wenn es ein Wechsel 
        // zwischen suche und normale Anzeige gibt!
        $suche->bind_result($id, $vorname, $nachname, $anmerkung, $erstellt);
        while ($suche->fetch()) {
            $daten[] = (object) array('id' => $id, 
                              'vorname'   => $vorname, 
                              'nachname'  => $nachname, 
                              'anmerkung' => $anmerkung, 
                              'erstellt'  => $erstellt);
        }
        $suche->close();
        $id        = '';
        $vorname   = '';
        $nachname  = '';
        $anmerkung = '';
        $erstellt  = '';
    }
    else
    {
        if ($erg = $db->query("SELECT * FROM kontakte")) {
            if ($erg->num_rows) {
                $ds_gesamt = $erg->num_rows;
                $erg->free();
                if ( isset($_GET['seite']) ) {
                    $seite = $_GET['seite'];
                    $_SESSION['seite_nr_normal'] = $_GET['seite'];
                }
                else
                {
                    if ( ! isset($_SESSION['seite_nr_normal']) ) 
                    {
                        $_SESSION['seite_nr_normal'] = 0;
                        $seite = 0;
                    }
                    else
                    {
                        $seite = $_SESSION['seite_nr_normal'];
                    }
                }
                if ($erg = $db->query("SELECT * FROM kontakte LIMIT $seite, $ds_pro_seite  ")) {
                    while ($datensatz = $erg->fetch_object()) {
                        $daten[] = $datensatz;
                    }
                }
                // echo "<li>". $erg->num_rows;
                // while ($datensatz = $erg->fetch_object()) {
                //     $daten[] = $datensatz;
                // }
                $erg->free();
            }
        }
    }
if ( ! count($daten) ) {
    echo "<p>Es liegen keine Daten vor :(</p>";
} else {
?>
<table>
    <thead>
        <tr>
            <th>Nutzeraktion</th>
            <th>ID</th>
            <th>Vorname</th>
            <th>Nachname</th>
            <th>Anmerkung(en)</th>
            <th>erstellt</th>
        </tr>
    </thead>
    <tbody>
        <?php
        foreach ($daten as $inhalt) {
        ?>
        <tr>
            <td>
                <a href="?aktion=anzeigen&id=<?php echo $inhalt->id; ?>">anzeigen</a> 
<?php 
            if ( isset($_SESSION['eingeloggt']['rechte']) and ($_SESSION['eingeloggt']['rechte'] == 'alles' OR $_SESSION['eingeloggt']['rechte'] == 'datenpflege') )
            {
?>
                <a href="?aktion=bearbeiten&id=<?php echo $inhalt->id; ?>">ändern</a> 
<?php
}
            if ( isset($_SESSION['eingeloggt']['rechte']) and $_SESSION['eingeloggt']['rechte'] == 'alles' )
            {
?>              
                <a href="?aktion=sicherheitsabfrage&id=<?php echo $inhalt->id; ?>">löschen</a>
<?php
}
?>
            </td>
            <td><?php echo $inhalt->id; ?></td>
            <td><?php echo bereinigen($inhalt->vorname); ?></td>
            <td><?php echo bereinigen($inhalt->nachname); ?></td>
            <td><?php echo bereinigen($inhalt->anmerkung); ?></td>
            <td><?php echo $inhalt->erstellt; ?></td>
        </tr>
        <?php
        }
        ?>
    </tbody>
</table>
<?php
        echo "<p>Seite: ";
        $durchgang = 1;
        for ($i = 0; $i < $ds_gesamt; $i=$i+$ds_pro_seite) {
            if ( $i == $seite )
            {
                echo '<span class="seite_aktuell">'. $durchgang .'</span> ';
            }
            else
            {
                echo '<a class="seite_nr" href="?seite='. $i .'">'. $durchgang .'</a> ';
            }
            $durchgang++;
        }
    }
} else {
    echo "<h1>Daten ändern</h1>";
    if ( isset($_GET['id'])) {
        $id_einlesen = (INT) $_GET['id'];
        if ($id_einlesen > 0) {
            $dseinlesen = $db->prepare("SELECT id, vorname, nachname, anmerkung 
                                               FROM kontakte WHERE id = ? ");
            $dseinlesen->bind_param('i', $id_einlesen);
            $dseinlesen->execute();
            $dseinlesen->bind_result($id, $vorname, $nachname, $anmerkung);
            while ($dseinlesen->fetch()) {
                // echo "<li>";
                // echo $id ." / ". $vorname . " ". $nachname;          
            }
        }
    }
}
if ( ! isset($vorname) ) {
    $vorname = '';
}
if ( ! isset($nachname) ) {
    $nachname = '';
}
if ( ! isset($anmerkung) ) {
    $anmerkung = '';
}
?>
<form id="datenpflege" action="" method="post">
    <p><label><span>Vorname:</span>
        <input type="text" name="vorname" id="vorname" value="<?php echo $vorname; ?>">
    </label></p>
    <p><label><span>Nachname:</span>
        <input type="text" name="nachname" id="nachname" value="<?php echo $nachname; ?>">
    </label></p>
    <p><label><span>Anmerkung(en):</span>
        <textarea name="anmerkung" id="anmerkung"><?php echo $anmerkung; ?></textarea>
        </label></p>
    <?php    
    if ($modus_aendern != true ) {
        echo '<input type="hidden" name="aktion" value="speichern">';
        echo '<p><span> </span><p><input type="submit" value="speichern"></p>';
    }
    else
    {
        echo '<input type="hidden" name="aktion" value="korrigieren">';
        echo '<input type="hidden" name="id" value="'. $id .'">';
        echo '<p><span> </span><input type="submit" value="ändern"></p>';
    }
    ?>
</form>
<?php
require_once 'inc/bereich-fuss.inc.php';
?>

Code für Kopf „inc/bereich-kopf.inc.php“

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <title>Datenpflegeanwendung in PHP - Beispielprojekt PHP-Kurs.com</title>
    <link href="design.css" rel="stylesheet">
</head>
<body>
<div id="seite">
<header>
    <div id="einloggbereich">
<?php
if ( isset($_POST['aktion']) and $_POST['aktion'] == 'ausloggen' )
{
    echo "<p>Sie wurden ausgeloggt</p>";
    unset ($_SESSION['eingeloggt']['nutzerid']);
    unset ($_SESSION['eingeloggt']['rechte']);  
}
if ( isset($_POST['aktion']) and $_POST['aktion'] == 'einloggen' )
{
    if ( isset($_POST['nutzerid']) and trim($_POST['nutzerid']) != '' 
         and 
         isset($_POST['kennwort']) and trim($_POST['kennwort']) != '' 
       )
    {
        // überprüfen, ob Zugangsdaten korrekt sind
        $nutzerid_formular = trim($_POST['nutzerid']);
        $kennwort_formular = trim($_POST['kennwort']);
        $zugang = $db->prepare("SELECT id, nutzerid, kennwort, rechte 
               FROM zugangsdaten WHERE nutzerid=? && kennwort=? ");
        $zugang->bind_param('ss',$nutzerid_formular, $kennwort_formular);
        $zugang->execute();
        $zugang->bind_result($id, $nutzerid, $kennwort, $rechte);
        while ($zugang->fetch()) {
            //  echo "<li> $id $nutzerid $kennwort, $rechte";
        }
        // echo "<p>Treffer $nutzerid / $kennwort: ". $zugang->num_rows ."</p>";
        if (  $zugang->num_rows == 1 ) {
            $_SESSION['eingeloggt']['nutzerid'] = $nutzerid;
            $_SESSION['eingeloggt']['rechte']   = $rechte;
        }
        else
        {
            echo "<p>Bitte korrekte Zugangsdaten eingeben!

"
; unset ($_SESSION['eingeloggt']['nutzerid']); unset ($_SESSION['eingeloggt']['rechte']); } } else { echo "<p>Bitte Formular komplett ausfüllen</p>"; } } if ( ! isset($_SESSION['eingeloggt']['rechte']) ) { ?> <form action="" method="post"> <label>Nutzer-ID: <input type="text" name="nutzerid" id="nutzerid"> </label><br> <label>Kennwort: <input type="text" name="kennwort" id="kennwort"> </label><br> <input type="hidden" name="aktion" value="einloggen"> <input type="submit" value="einloggen"> </form> <?php } else { ?> <form action="" method="post"> <input type="hidden" name="aktion" value="ausloggen"> <input type="submit" value="ausloggen"> </form> <?php } ?> </div> <p>Datenverwaltungstool</p> </header> <div id="inhalt">

Code für Fuß „inc/bereich-fuss.inc.php“

</div>
<footer>
    <p>Beispielprogramm www.PHP-Kurs.com
<?php
if ( isset($_SESSION['eingeloggt']['nutzerid']) ) {
    echo " | ". $_SESSION['eingeloggt']['nutzerid'];
    echo " (". $_SESSION['eingeloggt']['rechte'] .")";      
}
?>
    </p>
</footer>
</div>
</body>
</html>

Code für Design „design.css“

* {
    margin: 0;
    padding: 0;
}
 
html, body {
    height: 100%;
}
 
#seite {
    position: relative;
    min-height: 100%;
    margin: 0 auto;
}

footer {
    position:absolute;
    bottom: 0;
    width: 100%;
    background-color: yellow;
    height: 2em;
}

#einloggbereich {
	width: 300px;
	margin-right: 1em;
	text-align: right;
	float: right;
	display: inline-block;
	font-size: 10px !important;
}

#einloggbereich p {
	margin: 0;
	padding: 0;
	line-height: 1em;
}

#inhalt {
	margin: 0 1em;
}

#inhalt h1, #inhalt p, form  {
	margin-top: 1em;
}

body {
	font-family: sans-serif;
}

header, footer {
	color: white;
	background-color: #333;
	background-color: ;
	background: #003366; /* Old browsers */ /* FF3.6-15 */
	background: -webkit-linear-gradient(left,  hsla(210,100%,20%,1) 1%,hsla(213,100%,66%,1) 100%); /* Chrome10-25,Safari5.1-6 */
	background: -webkit-linear-gradient(left, hsla(210,100%,20%,1) 1%, hsla(213,100%,66%,1) 100%);
	background: linear-gradient(to right,  hsla(210,100%,20%,1) 1%,hsla(213,100%,66%,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#003366', endColorstr='#519fff',GradientType=1 ); /* IE6-9 */
}

header p {
	line-height: 3.4em;
	padding-left: 1em;
	font-size: 1.5em;
}

footer p {
	line-height: 2em;
	padding-left: 1em;
}

table {
	width: 100%;
	margin-top: 1em;
}

td {
	padding: 0.2em;
}

thead tr {
	color: white;
	background-color: #333;
}

tbody tr:nth-child(odd) {
	background-color: #eee;
}

tbody tr:nth-child(even) {
	background-color: #ccc;
}

tr:hover {
	background-color: limegreen !important;
}

.seite_aktuell, .seite_nr {
	display: inline-block;
	color: white;
	background-color: limegreen;
	width: 1.4em;
	height: 1.4em;
	text-align: center;
	line-height: 1.4em;
	font-size: 1.2em;
	color: white;
}

.seite_nr {
	background-color: darkblue;
}

.seite_nr:hover {
	background-color: deepskyblue;
	background-color: orange;
}

form#datenpflege {
	border: 1px solid black;
	border-radius: 1em;
	padding: .2em 1em;
	background-color: #ddd;
}

#datenpflege span {
	display: inline-block;
	width: 140px;
	float: left;
}

Code für DB-Aufbau „inc/db.php“

<?php
session_start(); 
error_reporting(E_ALL);
// error_reporting(0);
$db = new mysqli('localhost', 'root', 'root', 'adressbuch');
$db->set_charset('utf8');

if ($db->connect_errno){
    die('Sorry - gerade gibt es ein Problem');
}

function bereinigen($inhalt='') {
    $inhalt = trim($inhalt);
    $inhalt = htmlentities($inhalt, ENT_QUOTES, "UTF-8");
    return($inhalt);
}
?>