PHP Tutorials, PHP lernen, PHP Forum, PHP Community and more ... MyWebsolution.de!

Sidebar

Home News Tutorials Workshops Tipps Artikel Gästebuch Sitemap Pascal Landau

Suche

Members

Forum Login Registrierung

Statistik

Statistikbereich
Jetzt2
Heute103
Gestern272
Gesamt2317115

PHP Bildergalerie - Alben verwalten

Autor Flitze
Klicks 159199
Rating für PHP Bildergalerie
  7.6 von 10
Bewertungen118
Stand 08.10.2014
Keywords:
PHP Bildergalerie Tutorial, PHP Bildergalerie erstellen, PHP MySQL Bildergalerie, PHP Thumbnails erstellen, PHP Bilder speichern, Tutorial PHP Bildergalerie, Album, Verwaltung, Bildergalerie

Amazon: PHP 5.3 und MySQL 5.1
Breadcrumb:
Workshops » PHP Bildergalerie » PHP Bildergalerie - Alben verwalten
Seite : 1 2 3 4 5 6 7 Bewerten
Article Wizard - deutscher Article Spinner

Alben anlegen, bearbeiten und löschen

[ADSENSE_LINE]Zunächst wird der Ordner "alben" angelegt und mit vier .php-Dateien gefüllt. Diese sind:

index.php
- inkludiert das Skript für die gewünschte Aktion (hinzufügen, bearbeiten, löschen)

add.php
- ist für das Hinzufügen neuer Alben verantwortlich

edit.php
- ist für das Bearbeiten bestehender Alben verantwortlich

delete.php
- ist für das Löschen bestehender Alben verantwortlich

Die index.php ist folgendermaßen aufgebaut:

PHP:
<?php
    error_reporting
(E_ALL);

    echo 
"<h1>Alben</h1>\n";

    switch(isset(
$_GET['action'])?$_GET['action']:''){

        case 
'add':
                    include 
'alben/add.php';
                    echo 
"&raquo; <a href=\"index.php?s=alben\">Zur&uuml;ck zum Alben-Menu</a>\n";
                    break;

        case 
'edit':
                    include 
'alben/edit.php';
                    echo 
"&raquo; <a href=\"index.php?s=alben\">Zur&uuml;ck zum Alben-Menu</a>\n";
                    break;

        case 
'delete':
                    include 
'alben/delete.php';
                    echo 
"&raquo; <a href=\"index.php?s=alben\">Zur&uuml;ck zum Alben-Menu</a>\n";
                    break;

        default:
                    
$actions = array('add' => 'hinzuf&uuml;gen',
                                     
'edit' => 'bearbeiten',
                                     
'delete' => 'l&ouml;schen');
                    echo 
"<ul>\n";
                    foreach(
$actions as $action => $name)
                        echo 
"<li><a href=\"index.php?s=alben&action=".$action."\">".$name."</a></li>\n";
                    echo 
"</ul>\n";
                    break;
    }
?>


Hinzufügen neuer Alben (add.php)

Um neue Alben zu erstellen benötigen wir ein Formular, das uns die Eingabe eines Datums, eines Namens und einer Beschreibung ermöglicht (s. Datenbankspalten). Ohne Rücksicht auf irgendwelche Formatierungen zu nehmen, könnte dieses Formular so aussehen:

PHP:
 <?php
    error_reporting
(E_ALL);

    echo 
"<p style=\"font-weight:bold;\">Bereich: <span style=\"font-weight:italic;\">Album hinzuf&uuml;gen</span></p>\n";

    echo 
"<form ".
         
" action=\"index.php?s=alben&action=add\" ".
         
" method=\"post\" ".
         
" accept-charset=\"ISO-8859-1\">\n";
    echo 
"<div>\n";
    echo 
"<label for=\"Name\">Name</label>\n";
    echo 
"<input type=\"text\" name=\"Name\" id=\"Name\" maxlenght=\"50\">\n";
    echo 
"<br />\n";
    echo 
"<label for=\"Beschreibung\">Beschreibung</label>\n";
    echo 
"<input type=\"text\" name=\"Beschreibung\" id=\"Beschreibung\" maxlenght=\"255\">\n";
    echo 
"<br />\n";
    
// Eingabefelder fürs Datum erzeugen
    
$datum getdate();
    
$tag $datum['mday'];
    
$monat $datum['mon'];
    
$jahr $datum['year'];
    echo 
"<select name=\"Tag\">\n";
    for(
$i=1;$i<=31;$i++){
        if(
$i == $tag)
            echo 
"<option value=\"".$i."\" selected>\n";
        else
            echo 
"<option value=\"".$i."\">\n";
        echo 
$i.".\n";
        echo 
"</option>\n";
    }
    echo 
"</select>\n";
    echo 
"<select name=\"Monat\">\n";
    for(
$i=1;$i<=12;$i++){
        if(
$i == $monat)
            echo 
"<option value=\"".$i."\" selected>\n";
        else
            echo 
"<option value=\"".$i."\">\n";
        echo 
$Monatsnamen[$i]."\n";
        echo 
"</option>\n";
    }
    echo 
"</select>\n";
    echo 
"<select name=\"Jahr\">\n";
    for(
$i=$jahr-;$i<=$jahr+5$i++){
        if(
$i == $jahr)
            echo 
"<option value=\"".$i."\" selected>\n";
        else
            echo 
"<option value=\"".$i."\">\n";
        echo 
$i."\n";
        echo 
"</option>\n";
    }
    echo 
"</select>\n";
    echo 
"<br />\n";
    echo 
"<input type=\"submit\" name=\"submit\" value=\"Speichern\">\n";
    echo 
"</div></form>\n";
?>


Das Formular wird zwecks Übersichtlichkeit an das gleiche Skript gesendet action=\"index.php?s=alben&action=add\" und dort im nächsten Schritt auch verarbeitet. Zuvor möchte ich aber noch kurz auf die Datumseingabe eingehen. Um es dem Benutzer angenehmer zu machen, erstelle ich 3 Auswahllisten (Tag, Monat, Jahr), die als Voreinstellung das aktuelle Datum haben. Dieses wird über die Funktion getdate() ermittelt.

Dann komme ich jetzt mal zur Verarbeitung der Daten, d.h. deren Überprüfung und Eintragung in die Datenbank.

PHP:
<?php
    error_reporting
(E_ALL);

    echo 
"<p style=\"font-weight:bold;\">Bereich: <span style=\"font-weight:italic;\">Album hinzuf&uuml;gen</span></p>\n";

    if(isset(
$_POST['submit']) AND $_POST['submit']== 'Speichern') {
        
$errors = array();
        if(!isset(
$_POST['Name'], $_POST['Beschreibung'], $_POST['Tag'], $_POST['Monat'], $_POST['Jahr']))
            
$errors[] = "Bitte benutzen sie das Formular aus der <b>»</b> <a href=\"index.php?s=alben\">Alben-Administration</a>\n";
        else{
            if(
trim($_POST['Name']) == "")
                
$errors[] = "Geben Sie die Name ein.\n";
            if(
trim($_POST['Beschreibung']) == "")
                
$errors[] = "Geben Sie die Beschreibung ein.\n";
            if(!
checkdate($_POST['Monat'], $_POST['Tag'], $_POST['Jahr']))
                
$errors[] = "Sie haben ein ung&uuml;ltiges Datum eingegeben.\n";
        }
        if(
count($errors)){
            echo 
"<p>\n".
                 
"Das Album konnte nicht erstellt werden.<br />\n".
                 
"<br />\n";
            foreach(
$errors as $error)
                echo 
$error."<br />\n";
            echo 
"</p>\n";
        }
        else {
            
// Album speichern
            
$datum sprintf('%04d-%02d-%02d'$_POST['Jahr'], $_POST['Monat'], $_POST['Tag']);
            
$sql "INSERT INTO
                            Alben
                            (Name,
                            Beschreibung,
                            Datum
                            )
                    VALUES
                            ('"
.mysql_real_escape_string(trim($_POST['Name']))."',
                            '"
.mysql_real_escape_string(trim($_POST['Beschreibung']))."',
                            '"
.$datum."'
                            )
                   "
;
            
mysql_query($sql) OR die("<pre>".$sql."</pre>".mysql_error());

            echo 
"<p>\n".
                 
"Das Album wurde gespeichert.<br />\n".
                 
"Sie werden automatisch zu der Alben-Administration weitergeleitet.<br />\n".
                 
"Sollte die automatische Weiterleitung nicht funktionieren, klicken sie bitte <a href=\"index.php?s=alben\">hier</a>\n".
                 
"</p>\n";
            echo 
"<meta http-equiv=\"refresh\" content=\"1; URL=index.php?s=alben\">\n";
        }
    }
    else {
        
// Formular anzeigen
        // ...
    
}
?> 

Zuerst prüfe ich, ob alle $_POST-Variablen vorhanden sind. Danach stelle ich sicher, dass sowohl Name als auch Beschreibung ausgefüllt sind. Als letztes benutze ich die Funktion checkdate() um das eingegebene Datum zu validieren, denn schließlich ist es z.B. theoretisch möglich den 31. Februar 2007 durch die Auswahllisten auszuwählen. Sind alle Daten fehlerfrei, wird das Datum MySQL gerecht formatiert, d.h. im Format YYYY-MM-DD. Danach werden die Daten in die Datenbank eingetragen und der User wird zum Alben-Ausgangsmenu weitergeleitet.

Bearbeiten bestehender Alben (edit.php)

Es kann vorkommen, dass ein bereits erstelltes Album verändert werden muss, weil sich beispielsweise ein Rechtschreibfehler eingeschlichen hat oder ein falsches Datum angegeben wurde. Aus diesem Grund wird eine Editierungsdatei erstellt. Diese orientiert sich stark an der add.php. Der einzige Unterschied besteht darin, dass zunächst ein Auswahlmenu mit allen bestehenden Alben angezeigt wird, aus dem man das zu verändernde Album heraussucht. Die entsprechenden Daten werden dann bereits in das Formular eingetragen. Programmiertechnisch sieht das so aus:

PHP:
<?php
    error_reporting
(E_ALL);

    echo 
"<p style=\"font-weight:bold;\">Bereich: <span style=\"font-weight:italic;\">Album bearbeiten</span></p>\n";

    if(isset(
$_POST['ID']) AND $_POST['ID'] != "0") {
        if(isset(
$_POST['submit']) AND $_POST['submit'] == 'Album ändern') {
            
$errors = array();
            if(!isset(
$_POST['Name'], $_POST['Beschreibung'], $_POST['Tag'], $_POST['Monat'], $_POST['Jahr']))
                
$errors[] = "Bitte benutzen sie das Formular aus der <b>»</b> <a href=\"index.php?s=alben\">Alben-Administration</a>\n";
            else{
                if(
trim($_POST['Name']) == "")
                    
$errors[] = "Geben Sie die Name ein.\n";
                if(
trim($_POST['Beschreibung']) == "")
                    
$errors[] = "Geben Sie die Beschreibung ein.\n";
                if(!
checkdate($_POST['Monat'], $_POST['Tag'], $_POST['Jahr']))
                    
$errors[] = "Sie haben ein ung&uuml;ltiges Datum eingegeben.\n";
            }
            if(
count($errors)){
                echo 
"<p>\n".
                     
"Das Album konnte nicht bearbeitet werden.<br />\n".
                     
"<br />\n";
                foreach(
$errors as $error)
                    echo 
$error."<br />\n";
                echo 
"</p>\n";
            }
            else {
                
// Album updaten
                
$datum sprintf('%04d-%02d-%02d'$_POST['Jahr'], $_POST['Monat'], $_POST['Tag']);
                
$sql "UPDATE
                                Alben
                        SET
                                Name = '"
.mysql_real_escape_string(trim($_POST['Name']))."',
                                Beschreibung = '"
.mysql_real_escape_string(trim($_POST['Beschreibung']))."',
                                Datum = '"
.$datum."'
                        WHERE
                                ID = '"
.$_POST['ID']."'
                       "
;
                
mysql_query($sql) OR die("<pre>".$sql."</pre>".mysql_error());

                echo 
"<p>\n".
                     
"Das Album wurde bearbeitet.<br />\n".
                     
"Sie werden automatisch zu der Alben-Administration weitergeleitet.<br />\n".
                     
"Sollte die automatische Weiterleitung nicht funktionieren, klicken sie bitte <a href=\"index.php?s=alben\">hier</a>\n".
                     
"</p>\n";
                echo 
"<meta http-equiv=\"refresh\" content=\"1; URL=index.php?s=alben\">\n";
            }
        }
        elseif(isset(
$_POST['submit']) AND $_POST['submit'] == 'Album auswählen') {
            
$sql "SELECT
                            Name,
                            Beschreibung,
                            YEAR(Datum) as Jahr,
                            MONTH(Datum) as Monat,
                            DAYOFMONTH(Datum) as Tag
                    FROM
                            Alben
                    WHERE
                            ID = '"
.$_POST['ID']."'
                   "
;
            
$result mysql_query($sql) OR die("<pre>".$sql."</pre>".mysql_error());
            
$row mysql_fetch_assoc($result);

            echo 
"<form ".
                 
" action=\"index.php?s=alben&action=edit\" ".
                 
" method=\"post\" ".
                 
" accept-charset=\"ISO-8859-1\">\n";
            echo 
"<div>\n";
            echo 
"<label for=\"Name\">Name</label>\n";
            echo 
"<input type=\"text\" name=\"Name\" id=\"Name\" maxlenght=\"50\" value=\"".htmlentities($row['Name'], ENT_QUOTES)."\" >\n";
            echo 
"<br />\n";
            echo 
"<label for=\"Beschreibung\">Beschreibung</label>\n";
            echo 
"<input type=\"text\" name=\"Beschreibung\" id=\"Beschreibung\" maxlenght=\"255\" value=\"".htmlentities($row['Beschreibung'], ENT_QUOTES)."\" >\n";
            echo 
"<br />\n";
            echo 
"<select name=\"Tag\">\n";
            for(
$i=1;$i<=31;$i++){
                if(
$i == $row['Tag'])
                    echo 
"<option value=\"".$i."\" selected>\n";
                else
                    echo 
"<option value=\"".$i."\">\n";
                echo 
$i.".\n";
                echo 
"</option>\n";
            }
            echo 
"</select>\n";
            echo 
"<select name=\"Monat\">\n";
            for(
$i=1;$i<=12;$i++){
                if(
$i == $row['Monat'])
                    echo 
"<option value=\"".$i."\" selected>\n";
                else
                    echo 
"<option value=\"".$i."\">\n";
                echo 
$Monatsnamen[$i]."\n";
                echo 
"</option>\n";
            }
            echo 
"       </select>\n";
            echo 
"       <select name=\"Jahr\">\n";
            for(
$i=$row['Jahr']-;$i<=$row['Jahr']+5$i++){
                if(
$i == $row['Jahr'])
                    echo 
"<option value=\"".$i."\" selected>\n";
                else
                    echo 
"<option value=\"".$i."\">\n";
                echo 
$i."\n";
                echo 
"</option>\n";
            }
            echo 
"</select>\n";
            echo 
"<br />\n";
            echo 
"<input type=\"hidden\" name=\"ID\" value=\"".$_POST['ID']."\" />\n";
            echo 
"<input type=\"submit\" name=\"submit\" value=\"Album ändern\" />\n";
            echo 
"</div></form>\n";
        }
    }
    else {
        
// Vorauswahl alles bestehenden Alben
        
$sql "SELECT
                        ID,
                        Name
                FROM
                        Alben
                ORDER BY
                        Name ASC
               "
;
        
$result mysql_query($sql) OR die("<pre>".$sql."</pre>".mysql_error());
        if(!
mysql_num_rows($result)) {
            echo 
"<p>\n".
                 
"Es befinden sich keine Alben in der Datenbank\n".
                 
"</p>\n";
        }
        else {
            echo 
"<form ".
                 
"action=\"index.php?s=alben&action=edit\" ".
                 
"method=\"post\" ".
                 
"accept-charset=\"ISO-8859-1\">";
            echo 
" <div>\n";
            echo 
"<select name=\"ID\">\n";
            echo 
" <option value=\"0\">Bitte ein Album wählen</option>\n";
            while(
$row mysql_fetch_assoc($result)) {
                echo 
" <option value=\"".$row['ID']."\">\n";
                echo 
htmlentities($row['Name'], ENT_QUOTES)."\n";
                echo 
" </option>\n";
            }
            echo 
"</select>\n";
            echo 
"<br />\n";
            echo 
"<input type=\"submit\" name=\"submit\" value=\"Album auswählen\" />";
            echo 
" </div>\n";
            echo 
"</form>\n";
        }
    }
?>


Im letzten else befindet sich das Vorauswahlformular, bei dessen Abschicken die ID des Albums übertragen wird. Aufgrund dieser ID werden die entsprechenden Daten aus der Datenbank geholt und in das zweite Formular eingetragen. Dabei ist zu erwähnen, dass ich das Datum nicht „als Ganzes“, sondern aufgeteilt in Tag mittels DAYOFMONTH, Monat mittels MONTH und Jahr mittels YEAR auslese, damit ich den Auswahllisten später die entsprechenden Werte zuweisen kann. Außerdem habe ich am Ende noch ein hidden-Feld eingefügt, damit ich die ID des Albums nicht verliere. Die Überprüfungen sind identisch mit denen der add.php aber statt des INSERT INTO-Statements benutze ich nun ein UPDATE-Statement das in der WHERE-Bedingung die übergebene ID erwartet, damit auch das richtige Album bearbeitet wird.

Löschen bestehender Alben (delete.php)

Erstmal gibt’s wieder ein Auswahlformular, das die Albennamen anzeigt und deren IDs übergibt. Zur Sicherheit werden dann ein paar Infos über das Album angezeigt (Name, Beschreibung, Anzahl der Bilder, Datum), man will ja nicht das falsche löschen. Außerdem sollte es noch möglich sein zu entscheiden, ob die Bilder in dem Album gelöscht oder nur einem anderen Album zugeordnet werden sollen. Das wird über radio-Buttons realisiert, denn wir wollen ja nur entweder löschen oder verschieben. Eine der beiden Aktionen muss aber durchgeführt werden, denn sonst gäbe es für die Fotos nach dem Löschen des Albums keine Zuordnung mehr. Lange Rede kurzer Sinn, hier der Code:

PHP:
<?php
    error_reporting
(E_ALL);

    echo 
"<p style=\"font-weight:bold;\">Bereich: <span style=\"font-weight:italic;\">Album l&ouml;schen</span></p>\n";

    if(isset(
$_POST['ID']) AND $_POST['ID'] != "0") {
        if(isset(
$_POST['submit']) AND $_POST['submit'] == 'Album löschen') {
            
$errors = array();
            if(!isset(
$_POST['Aktion']) OR ($_POST['Aktion']!='delete' AND $_POST['Aktion']!='move'))
                
$errors[] = "Bitte benutzen sie das Formular aus der <a href=\"index.php?s=alben\">Alben-Administration</a>\n";
            else{
                if(
$_POST['Aktion'] == 'move' AND (!isset($_POST['neue_ID']) OR $_POST['neue_ID']=='0'))
                    
$errors[] = "Bitte wählen Sie ein Album aus, in das die Fotos verschoben werden sollen.\n";
            }
            if(
count($errors)){
                echo 
"<p>\n".
                     
"Das Album konnte nicht gel&ouml;scht werden.<br />\n".
                     
"<br />\n";
                foreach(
$errors as $error)
                    echo 
$error."<br />\n";
                echo 
"</p>\n";
            }
            else {
                
// Album löschen
                
$sql "DELETE FROM
                                Alben
                        WHERE
                                ID = '"
.$_POST['ID']."'
                       "
;
                
mysql_query($sql) OR die("<pre>".$sql."</pre>".mysql_error());
                echo 
"Das Album wurde gel&ouml;scht<br />\n";

                if(
$_POST['Aktion'] == 'delete'){
                    
$sql "SELECT
                                    ID,
                                    Name
                             FROM
                                    Fotos
                             WHERE
                                    Alben_ID = '"
.$_POST['ID']."'
                            "
;
                    
$result mysql_query($sql) OR die("<pre>".$sql."</pre>".mysql_error());
                    while(
$row mysql_fetch_assoc($result)){
                        
// Bilder vom Server löschen
                        
unlink(PIC_FOLDER.$row['Name']);
                        
// Thumbnails vom Server löschen
                        
unlink(TN_FOLDER."TN".substr($row['Name'],3));
                        
// Bilder aus der Datenbank löschen
                        
$sql "DELETE FROM
                                            Fotos
                                WHERE
                                            ID = '"
.$row['ID']."'
                               "
;
                        
mysql_query($sql) OR die("<pre>".$sql."</pre>".mysql_error());
                    }
                    echo 
"Die Fotos und Thumbnails wurden gel&ouml;scht<br />\n";
                }
                else{
                    
$sql "UPDATE
                                    Fotos
                            SET
                                    Alben_ID = '"
.$_POST['neue_ID']."'
                            WHERE
                                    Alben_ID = '"
.$_POST['ID']."'
                           "
;
                    
mysql_query($sql) OR die("<pre>".$sql."</pre>".mysql_error());

                    echo 
"Die Fotos wurden verschoben<br />\n";
                }
                echo 
"Sie werden automatisch zu der Alben-Administration weitergeleitet.<br />\n".
                     
"Sollte die automatische Weiterleitung nicht funktionieren, klicken sie bitte <a href=\"index.php?s=alben\">hier</a>\n".
                     
"</p>\n";
                echo 
"<meta http-equiv=\"refresh\" content=\"1; URL=index.php?s=alben\">\n";
            }
        }
        elseif(isset(
$_POST['submit']) AND $_POST['submit'] == 'Album auswählen') {
            
$sql "SELECT
                            Name,
                            Beschreibung,
                            DATE_FORMAT(Datum, '%d.%m.%Y') as Datum
                    FROM
                            Alben
                    WHERE
                            ID = '"
.$_POST['ID']."'
                   "
;
            
$result mysql_query($sql) OR die("<pre>".$sql."</pre>".mysql_error());
            
$row mysql_fetch_assoc($result);

            
// Anzahl der Fotos im Album ermitteln
            
$sql "SELECT
                            COUNT(*)
                    FROM
                            Fotos
                    WHERE
                            Alben_ID = '"
.$_POST['ID']."'
                   "
;
            
$result mysql_query($sql) OR die("<pre>".$sql."</pre>".mysql_error());
            
$anzahl_fotos mysql_result($result0);

            echo 
"Name: ".htmlentities($row['Name'], ENT_QUOTES)."\n<br />".
                 
"Beschreibung: ".htmlentities($row['Beschreibung'], ENT_QUOTES)."\n<br />".
                 
"Datum: ".$row['Datum']."\n<br />".
                 
"Fotos: ".$anzahl_fotos."\n<br />";
            echo 
"<br />\n";

            echo 
"<form ".
                 
" action=\"index.php?s=alben&action=delete\" ".
                 
" method=\"post\" ".
                 
" accept-charset=\"ISO-8859-1\">\n";
            echo 
"<div>\n";
            echo 
"Die Fotos in diesem Album werden<br />\n";
            echo 
"<input type=\"radio\" name=\"Aktion\" value=\"delete\" checked=\"checked\" />\n";
            echo 
"gel&ouml;scht\n<br />";
            
$sql "SELECT
                            ID,
                            Name
                    FROM
                            Alben
                    WHERE
                            ID <> '"
.$_POST['ID']."'
                    ORDER BY
                            Name ASC
                   "
;
             
$result mysql_query($sql) OR die("<pre>".$sql."</pre>".mysql_error());
             if(!
mysql_num_rows($result)) {
                 echo 
"<span style=\"font-style:italic;\">Keine weiteren Alben vorhanden</span><br />\n";
             }
             else{
                 echo 
"<input type=\"radio\" name=\"Aktion\" value=\"move\" />\n";
                 echo 
"verschoben nach\n";
                 echo 
"<select name=\"neue_ID\">\n";
                 echo 
" <option value=\"0\">Bitte ein Album wählen</option>\n";
                 while(
$row mysql_fetch_assoc($result)) {
                     echo 
" <option value=\"".$row['ID']."\">\n";
                     echo 
htmlentities($row['Name'], ENT_QUOTES)."\n";
                     echo 
" </option>\n";
                 }
                 echo 
"</select>\n";
                 echo 
"<br />\n";
             }
             echo 
"<input type=\"hidden\" name=\"ID\" value=\"".$_POST['ID']."\" />\n";
             echo 
"<input type=\"submit\" name=\"submit\" value=\"Album löschen\" />\n";
             echo 
"</div></form>\n";
         }
    }
    else {
        
// Vorauswahl alles bestehenden Alben
        
$sql "SELECT
                        ID,
                        Name
                FROM
                        Alben
                ORDER BY
                        Name ASC
               "
;
        
$result mysql_query($sql) OR die("<pre>".$sql."</pre>".mysql_error());
        if(!
mysql_num_rows($result)) {
            echo 
"<p>\n".
                 
"Es befinden sich keine Alben in der Datenbank\n".
                 
"</p>\n";
        }
        else {
            echo 
"<form ".
                 
"action=\"index.php?s=alben&action=delete\" ".
                 
"method=\"post\" ".
                 
"accept-charset=\"ISO-8859-1\">";
            echo 
" <div>\n";
            echo 
"<select name=\"ID\">\n";
            echo 
" <option value=\"0\">Bitte ein Album wählen</option>\n";
            while(
$row mysql_fetch_assoc($result)) {
                echo 
" <option value=\"".$row['ID']."\">\n".
                     
htmlentities($row['Name'], ENT_QUOTES)."\n".
                     
" </option>\n";
            }
            echo 
"</select>\n";
            echo 
"<br />\n";
            echo 
"<input type=\"submit\" name=\"submit\" value=\"Album auswählen\" />";
            echo 
" </div>\n";
            echo 
"</form>\n";
        }
    }
?>


Das erste Auswahlformular ist identisch mit dem aus der edit.php. Mit Hilfe der übergebenen Alben ID wird der betroffene Datensatz ausgewählt. Dabei ist zu beachten, dass ich beim Auswählen des Datums die MySQL-Funktion DATE_FORMAT() benutze. '%d.%m.%Y' bedeutet dabei, dass ich das Datum in die in Deutschland gebräuchliche Form DD.MM.YYYY umwandle. Danach zeige ich die Informationen über das Album an und überprüfe, ob es außer dem zu löschenden Album noch weitere Alben gibt, in die die Bilder eventuell verschoben werden können. Das tue ich mit diesem Query :

PHP:
<?php
    $sql 
"SELECT
                    ID,
                    Name
            FROM
                    Alben
            WHERE
                    ID <> '"
.$_POST['ID']."'
            ORDER BY
                    Name ASC
           "
;
?>


Im nächsten Schritt werden dann die Eingaben auf etwaige Fehler geprüft (z.B. 'verschieben' gewählt, aber keinen Ziel-Ordner angegeben). Bei fehlerfreien Daten wird dann als nächstes das Album selbst gelöscht und die Bilder in diesem Album abhängig von meiner Auswahl der Radio-Buttons entweder gelöscht oder verschoben.

Löschen bedeutet, dass die Bilder
- aus der Datenbank gelöscht werden
- als Dateien und Thumbnails vom Server gelöscht werden

Beim physischen Löschen werden übrigens die Konstanten benutzt, die in der config.php stehen.

Beim Verschieben hingegen wird lediglich die Alben ID des Fotos gegen die des neuen Albums ausgetauscht.

Damit wir die delete.php auch ausreichend testen können, müssen wir erstmal Fotos hochladen können. Damit geht’s auf der nächsten Seite los.

Zurück zur vorigen Seite:
PHP Bildergalerie - Grundstruktur
Weiter zur nächsten Seite:
PHP Bildergalerie - Thumbnails

»» Zurück zum Menu

Suchmaschinenoptimierung

Suchmaschinenoptimierung (SEO - Search Engine Optimization)

Ranking

Tutorials (13)

8.6
8.4
8

Workshops (3)

8.8
8.7
7.6

Tipps (12)

7.2
6.7
6.5

Artikel (32)

8.4
8
7.2

RSS Feeds

Full Feed Tutorials Workshops Tipps Artikel

Twitter

Follow me on Twitter

Partner & Links


Valid HTML 4.01 Transitional
Valid CSS
nach oben

Diese Seiten unterstützen MyWebsolution:
 
© MyWebsolution.de
2006-2024