tutorials.de Buch-Aktion 05/2012
  • [MySQL] Daten Einfügen/Ausgeben/Editieren/Löschen

    Hallo,

    bei den ganzen Tutorials die es hier gibt habe ich bisher noch nicht gesehen wie es möglich ist bei zb: einem Gästebuch die einträge auch wieder zu Löschen oder zu Editieren.
    Deshalb möchte ich euch hier zeigen wie einfach das ist.
    Da ich selber lange nach dieser Lösung gesucht habe denke ich das ich einigen Anfängern damit helfen kann...

    also, fangen wir an!


    zu aller erst müssen wir natürlich die Datenbank Tabelle mit den entsprechenden Zeilen erstellen.
    Das sieht wie folgt aus...
    PHP-Code:
    CREATE TABLE `guestbook` (
    `
    IDint(8unsigned NOT NULL auto_increment,
    `
    Namevarchar(15NOT NULL default '',
    `
    Titelvarchar(60NOT NULL default '',
    `
    Inhalttext NOT NULL default '',
    PRIMARY KEY(ID)
    ENGINE=MyISAM DEFAULT CHARSET=latin1
    Damit können wir direkt anfangen einen Eintrag in unser "Gästebuch" zu schreiben. Dafür brauchen wir das dem entsprechende Formular.

    gbadd.php
    PHP-Code:
    <form method="post" action="http://www.tutorials.de/gbaction.php">
    <
    table border="0" cellpadding="0" cellspacing="0" width="451">
                <
    tr>
                    <
    td width="105">Name</td>
                    <
    td><input type="text" name="Name" size="24"></td>
                </
    tr>
                <
    tr>
                    <
    td width="105">Titel</td>
                    <
    td><input type="text" name="Titel" size="24"></td>
                </
    tr>
                <
    tr>
                    <
    td width="105">Text</td>
                    <
    td><textarea name="Inhalt" cols="40" rows="4"></textarea></td>
                </
    tr>
            </
    table>
    <
    input type="submit" name="submitButtonName"><input type="reset"
    Hier Sehen wir das unser Formular ganz einfach in HTML geschrieben ist und die entsprechenden Inhalte per POST an die Aktions PHP Datei übergeben werden.
    Die Aktions PHP sieht so aus:

    gbaction.php
    PHP-Code:
    <?php
    error_reporting
    (E_ALL);    
    $db_link = @mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS);  
    mysql_select_db(MYSQL_DATABASE);

    $Name$_POST['Name'];
    $Titel$_POST['Titel'];
    $Inhalt$_POST['Inhalt'];

    $sql "INSERT guestbook (Name,Titel,Inhalt) VALUES ('$Name','$Titel','$Inhalt')";

     if ((
    "" == $Name) OR (""== $Titel) OR(""== $Inhalt)) {
            echo 
    "Fehler: Eintrag unvollständig.";
        } else {                        

      echo 
    "Ihr Eintrag wurde hinzugefügt";
    }
    echo 
    '<br/><a href="http://www.tutorials.de/gbook.php">zurück zum Guestbook</a>.';

    $result mysql_query($sql) OR              
    die(
    "Query: <pre>".$sql."</pre>\n".                  
    "Antwoertchen: ".mysql_error());
    ?>
    Hier werden die Variablen die wir aus dem Formular übergeben abgefangen und mit dem SQL Query in die Datenbank eingetragen. Die "if" Abfrage überprüft ob eines der Variablen aus dem Formular leer sind. Sollte dies der fall sein wird die meldung "Fehler: Eintrag unvollständig" ausgegeben.
    Unten befindet sich noch ein Link der die ausgabe PHP Datei ansteuert. Mit der wir nun weiter machen.

    Vorab muss ich sagen das wir 2 versionen von ausgaben brauchen. Eine Version wird für die Besucher der Homepage sein. Die andere Version ist nur für und (Webmaster) in der wir einträge Editieren und Löschen können.

    (natürlich könnte man dies auch alles in einer Datei lösen, dafür werden aber Sessions mit User Login und User Rechte benötigt. Wer dazu fragen hat kann sich bei mir melden PM oder Mail)

    So, machen wir weiter.

    Die einfache User Ausgabe.
    gbook.php
    PHP-Code:
    <?php
    error_reporting
    (E_ALL);    
    $db_link = @mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS);  
    mysql_select_db(MYSQL_DATABASE);

    $sql "SELECT * FROM guestbook ORDER
    BY id DESC"
    ;

    $ausgabe=mysql_query($sql);
    ?>
    <center><b>Guestbook</b><br>
    <?php echo '<br><br><a href="http://www.tutorials.de/gbookadd">Eintrag Schreiben</a><br><br><br>'?><br></center>
    <?php
    while ($Guestbook mysql_fetch_object ($ausgabe))
    {
    ?>
    <center>
    <table border="0" cellpadding="0" cellspacing="1" width="451">
                    <tr>
                        <td width="203"><b><?php echo($Guestbook->Titel); ?></b></td>
                        <td>
                            <div align="right">
                                von <b><?php echo($Guestbook->Name); ?></b></div>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2"><?php echo($Guestbook->Inhalt); ?></td>
                    </tr>
                    <br>
                    <br>
                </table>
            </center>
    <?php }
    ?>
    In dieser Datei wird wie immer die Verbindung zur Datenbank aufgebaut und alle Inhalte aus der Datenbank abgerufen.
    Mit Hilfe einer While Schleife geben wir die einzelnen Inhalte nacheinander in einer HTML Tabelle aus, und zwar mit diesem echo befehl:
    PHP-Code:
    <?php echo($Guestbook->Inhalt); ?>
    Erläuterung:
    $Guestbook ist der mysql_fetch_object Befehl womit der SQL Query angesprochen wird. Also unsere "guestbook" Tabelle mit allen inhalten.
    ->Inhalt Pfeil Operator mit dem jeweiligen gewünschten Inhalt... wie in der Datei gezeigt beliebig wähl bar (Titel, Name etc).

    Machen wir weiter mit Zweiten Version die für unsere Webmaster ist.
    Aus diesem Grund nennen wir sie einfach liebevoll gbadmin.php.

    gbadmin.php

    PHP-Code:
    <?php
    error_reporting
    (E_ALL);    
    $db_link = @mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS);  
    mysql_select_db(MYSQL_DATABASE);
    $sql "SELECT * FROM guestbook ORDER
    BY id DESC"
    ;
    $ausgabe=mysql_query($sql);
    ?><?php
    while ($Guestbook mysql_fetch_object ($ausgabe))
    {
    ?>
    <center>
        <p>
        <form method="get" action="http://www.tutorials.de/gbookedit">
        <table border="0" cellpadding="0" cellspacing="1" width="451">
                    <tr>
                        <td width="203"><b><?php echo($Guestbook->Titel); ?></b></td>
                        <td>
                            <div align="right">
                                von <b><?php echo($Guestbook->Name); ?></b></div>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2"><?php echo($Guestbook->Inhalt); ?></td>
            <tr>
                <td width="69">
                    <div align="left">
                        <?php print "<a href=\"gbookedit.php&id=$Guestbook->ID\">Editieren</a>."?></div>
                </td>
                <td>
                    <div align="right">
                        <?php print "<a href=\"gbookdelete.php&id=$Guestbook->ID\">Löschen</a>."?></div>
                </td>
            </tr>
            <br>
        </table>
        </p>
    </center>
    <p><?php }
    ?>
    </form>
    Der eigentliche unterschied ist wie ihr sicher seht nur das hier extra Zwei PHP Zeilen (Print Befehle) drin stehen.
    Diese geben einen Link aus der auf die gbookedit oder gbookdelete Datei verweist mit der jeweiligen Eintrags ID die in der Datenbank vorhanden ist.

    Das heißt: wir rufen bei dem gewünschten Eintrag zb: die gbookedit.php auf und übergeben ihr mit hilfe von GET die gewünschte GB Eintrags ID mit deren Hilfe wir der Datenbank sagen welchen genauen Eintrag wir in diesem Fall Editieren/Ändern wollen.

    Das sieht in der Datei wie folgt aus:

    gbookedit.php
    PHP-Code:
    <?php
    error_reporting
    (E_ALL);    
    $db_link = @mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS);
    mysql_select_db(MYSQL_DATABASE);
    $sql "SELECT * FROM guestbook ORDER
    BY Name DESC"
    ;
    ////////////////////////////////////////
    ///// Hier nehmen wir die ID entgegen///
    ////////////////////////////////////////
    $id $_GET['id'];

    $sql "SELECT * FROM guestbook WHERE ID ='$id'";
    $ausgabe mysql_query($sql);
    $data mysql_fetch_array($ausgabe);
    ?>
    <form action="http://www.tutorials.de/gbeditaction.php" method="post">
    <input type="text" name="Titel" size="24" value="<?php echo $data['Titel']; ?>"><br>
    <textarea cols="40" rows="5" name="Inhalt">
    <?php    echo $data['Inhalt'];    ?>
    </textarea><br>
    <input type="submit" value="Senden">
    <input type="hidden" name="id" value="<?php echo $data['ID'?>" />
    </form>
    <?php

    $result 
    mysql_query($sql) OR              
    die(
    "Query: <pre>".$sql."</pre>\n".                  
    "Antwoertchen: ".mysql_error());
    ?>
    In dieser Datei nehmen wir die ID entgegen (gekenzeichnete stelle). Mit deren Hilfe holen wir alle einträge aus der Datenbank raus die auch diese ID beinhaltet.
    Desweiteren sehen wir ein Formular das diese Datenbank Inhalte ausgibt und auch Ändern lässt.
    Nach dem beliebigen Ändern werden wir wieder mit hilfe von POST die daten (Auch die ID die in diesem Fall versteckt (HIDDEN) ist) an die gbeditaction.php übergeben.

    Die wie folgt aussieht
    gbeditaction.php

    PHP-Code:
    <?php
    error_reporting
    (E_ALL);    
    $db_link = @mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS);
    mysql_select_db(MYSQL_DATABASE);
    $sql "SELECT * FROM guestbook ORDER
    BY Name DESC"
    ;
    $inhalt $_POST["Inhalt"];
    $id $_POST["id"];
    $titel $_POST['Titel'];

    $sql="UPDATE guestbook SET Inhalt = '".$inhalt."', Titel = '".$titel."' WHERE ID = ".$id;

    echo 
    '<br/><a href="http://www.tutorials.de/gbadmin.php">zurück</a>.';


    $result mysql_query($sql) OR              
    die(
    "Query: <pre>".$sql."</pre>\n".                  
    "Antwoertchen: ".mysql_error());
    ?>
    Die Variablen werden von POST entgegen genommen und in dem SQL Query eingefügt. Mit Hilfe von UPDATE werden wie der Name schon sagt die Inhalte der Datenbank für speziel die zeile deren ID übereinstimmt überschrieben.

    Nun die Delete Datei
    gbdelete.php
    PHP-Code:
    <?php
    error_reporting
    (E_ALL);    
    $db_link = @mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS);
    mysql_select_db(MYSQL_DATABASE);
    $sql "SELECT * FROM guestbook ORDER
    BY Name DESC"
    ;
    $id $_GET["id"];

    echo 
    $_GET['id'];

    $sql "DELETE FROM `guestbook` WHERE `guestbook`.`ID` =$id LIMIT 1";

    echo 
    '<br/><a href="http://www.tutorials.de/gbadmin.php">zurück</a>.';

    $result mysql_query($sql) OR              
    die(
    "Query: <pre>".$sql."</pre>\n".                  
    "Antwoertchen: ".mysql_error());
    ?>
    Hier wird wieder die ID von GET angenommen und im SQL Query Gelöscht... DELETE
    Hier habe ich die ID nochmal mit Echo ausgeben lassen damit ihr nachvoll zeihen könnt welcher Eintrag grade gelöscht wurde. (Die ID seht ihr aber bei GET auch immer oben in der Adresszeile)

    Damit sind alle unsere Wünsche erfüllt. Es lassen sich Einträge hinzufügen (gbadd.php) Editieren und Löschen (gbadmin.php).

    Ich Hoffe das es euch etwas Hilft da etwas schneller hinter zu blicken. Ich bin selber leider auch erst Anfänger aber ganz so verkehrt wird es nicht sein

    Meine Rechtschreib fehler müsst ihr entschuldigen. Sollte etwas in den Datein oder meinen Erklärungen nicht stimmen bitte ich euch mich zu verbessern. Möglicherweise gibt es auch einfachere oder sicherere Lösungen für solche Fälle, leider ist mir nur diese hier bekannt.

    Doch genug geschrieben.

    Viel Spaß beim Probieren, nur dadurch lernt man es

    Noch einen Wunderschönen Tag

    Einfach PM bei Fragen!
     


    Kommentare 1 Kommentar
    1. Avatar von wallis
      wallis -
      Du hast einen Fehler in gbadmin.php!

      Zitat von oben aus der gbadmin.php:
      PHP-Code:
      <?php print "<a href=\"gbookedit.php&id=$Guestbook->ID\">Editieren</a>."?>
      <?php 
      print "<a href=\"gbookdelete.php&id=$Guestbook->ID\">Löschen</a>."?>
      Muss lauten:
      PHP-Code:
      <?php print "<a href=\"gbookedit.php?id=$Guestbook->ID\">Editieren</a>."?>
      <?php 
      print "<a href=\"gbookdelete.php?id=$Guestbook->ID\">Löschen</a>."?>
      Im Links steht ein "&". Dort muss aber ein "?" rein.
    Kommentare Kommentar schreiben

    Klicke hier, um dich anzumelden

    Wie heißt die Bundeskanzlerin der BRD mit Nachnamen? Angela...