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
Jetzt1
Heute173
Gestern331
Gesamt2310989

PHP Bildergalerie - Grundstruktur

Autor Flitze
Klicks 159008
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, Grundstruktur, Basis, Bildergalerie

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

1. Die Grundstruktur

[ADSENSE_LINE]Die Grundstruktur basiert auf den Datenbanktabellen, in denen die Alben und die Bildnamen (nicht die ganzen Bilder!) gespeichert werden, dem Ordnersystem, in denen die Bilder physisch abgelegt werden und letztendlich einer Konfigurationsdatei, in der z.B. die maximale Bildgröße, die Bildgröße und Qualität der Thumbnails und erlaubte Dateiendungen stehen.

Datenbanktabellen

Als erstes werden die folgenden 2 Datenbanktabellen erstellt:

Alben

Code:
 Alben
+--------------+--------------+------+---------+---------+----------------+
| NAME         | TYP          | NULL | KEY     | DEFAULT | Extras         |
+--------------+--------------+------+---------+---------+----------------+
| ID           | INT          |      | PRIMARY |         | AUTO_INCREMENT |
| Datum        | DATE         |      |         |         |                |
| Name         | VARCHAR(50)  |      |         |         |                |
| Beschreibung | VARCHAR(255) |      |         |         |                |
+--------------+--------------+------+---------+---------+----------------+


PHP:
<?php
$sql 
'CREATE TABLE `Alben` ('
        
' `ID` INT AUTO_INCREMENT NOT NULL, '
        
' `Datum` DATE, '
        
' `Name` VARCHAR(50), '
        
' `Beschreibung` VARCHAR(255), '
        
' PRIMARY KEY (`ID`)'
        
' )';

mysql_query($sql) OR die ("<pre>\n".$sql."</pre>\n".mysql_error());

echo 
"Datenbanktabelle \"Alben\" erstellt..<br />";
?>


Fotos

Code:
 Fotos
+--------------+--------------+------+---------+---------+----------------+
| NAME         | TYP          | NULL | KEY     | DEFAULT | Extras         |
+--------------+--------------+------+---------+---------+----------------+
| ID           | INT          |      | PRIMARY |         | AUTO_INCREMENT |
| Alben_ID     | INT          |      |         |         |                |
| Datum        | DATETIME     |      |         |         |                |
| Name         | VARCHAR(50)  |      |         |         |                |
| Beschreibung | VARCHAR(255) |      |         |         |                |
+--------------+--------------+------+---------+---------+----------------+


PHP:
<?php
$sql 
'CREATE TABLE `Fotos` ('
        
' `ID` INT AUTO_INCREMENT NOT NULL, '
        
' `Alben_ID` INT NOT NULL, '
        
' `Datum` DATETIME, '
        
' `Name` VARCHAR(50), '
        
' `Beschreibung` VARCHAR(255), '
        
' PRIMARY KEY (`ID`)'
        
' )';

mysql_query($sql) OR die ("<pre>\n".$sql."</pre>\n".mysql_error());

echo 
"Datenbanktabelle \"Fotos\" erstellt..<br />";
?>


Ordnerstruktur

Grundsätzlich gibt es zwei Möglichkeiten, wie die Bilder angeordnet sein können. Die erste basiert darauf, für jedes neue Album einen eigenen Ordner mit dem Albennamen zu erstellen und in jedem dieser Ordner einen Thumbnail-Ordner zu erzeugen. Diese Methode hat den Vorteil, dass die Fotos auch ohne Datenbank eine logische Struktur haben. Der Nachteil liegt allerdings in der „Wartbarkeit“, denn das Verschieben und Löschen von Alben hat immer einen Eingriff aufs Dateisystem zur Folge. Aus diesem Grund bevorzuge ich die Methode, nur einen einzigen Ordner inklusive Thumbnail-Ordner anzulegen und die Zuordnung der Fotos allein der Datenbank zu überlassen. Somit werden die Dateien selbst nicht manipuliert, sondern es wird lediglich ihr betreffender Datenbankeintrag verändert und eine neue Zuordnung erstellt. Um den einen Ordner zu erstellen, könnt ihr folgenden Code benutzen:

PHP:
<?php
    mkdir 
("fotos"0777);
    echo 
"Ordner \"fotos\" erstellt..<br />";
    
mkdir ("fotos/thumbnails"0777);
    echo 
"Ordner \"thumbnails\" in \"fotos\" erstellt..<br />";
?>

Ihr solltet aber darauf achten, dass ihr euren Skripten die Zugriffrechte (WWWRun) in dem Ordner gebt, in dem ihr den Code ausführt, sonst gibt’s eine Fehlermeldung. Alternativ könnt ihr die Ordner natürlich auch über ein FTP-Programm erstellen.

Konfigurationsdatei

Diese Datei nenne ich sinngemäß config.php und gebe ihr folgenden Inhalt:

PHP:
<?php
    error_reporting
(E_ALL);

    
// Allgemeine Konstanten
    // =========================================
    // Angaben zur Dateigröße
    
define('BYTE'1);
    
define('KB'1024*BYTE);
    
define('MB'1024*KB);


    
// Allgemeine Variablen
    // =========================================
    // Monatsnamen
    
$Monatsnamen = array(=> 'Januar',
                         
=> 'Februar',
                         
=> 'März',
                         
=> 'April',
                         
=> 'Mai',
                         
=> 'Juni',
                         
=> 'Juli',
                         
=> 'August',
                         
=> 'September',
                         
10 => 'Oktober',
                         
11 => 'November',
                         
12 => 'Dezember');

    
// Konstanten und Variablen für die Fotos
    // =========================================
    // Dateigröße
    
define('FILE_SIZE'7*MB);
    
define('ZIP_SIZE'50*MB);

    
// Bildgröße bzw. Ausmaß in Pixeln
    
define('PIC_WIDTH'4096);
    
define('PIC_HEIGHT'4096);

    
// Thumbnailhöhe in Pixeln
    
define('TN_HEIGHT'100);

    
// Qualität
    
define('PIC_QUALI'70);
    
define('TN_QUALI'100);

    
// Foto-Ordner
    
define('PIC_FOLDER''fotos/');
    
define('TN_FOLDER'PIC_FOLDER.'thumbnails/');
    
define('ZIP_FOLDER''zip/');

    
// erlaubte Dateiendungen für Bilder
    
$_file_extensions = array('jpg''jpeg''jpe''gif''png');

    
// erlaubte MIME-Typen für Bilder
    
$_file_mime_types = array('image/pjpeg''image/jpeg''image/gif''image/png''image/x-png');

    
// erlaubte Dateiendungen für ZIP-Archive
    
$_zip_extensions = array('zip');

    
// erlaubte MIME-Typen ZIP-Archive
    
$_zip_mime_types = array('application/zip''application/x-zip-compressed');
?>


Die Einstellungen könnt ihr natürlich beliebig anpassen, die Verwendung der entsprechenden Variablen ist als Kommentar gekennzeichnet. Eine Liste der MIME-Typen findet ihr auf SELFHTML: Diverse technische Ergänzungen / MIME-Typen.

Um dem ganzen Projekt jetzt noch eine sinnvolle Form zu geben, die uns das Testen und Nachvollziehen der Skripte erleichtert, legen wir neben der config.php noch Dateien für spätere Funktionen (functions.php) und für eine MySQL-Datenbankverbindung (mysql.php) an. Diese Dateien werden alle in einer zentralen index.php, die im root-Verzeichnis des Projektes liegt, inkludiert. Dadurch muss nicht bei jedem Skript explizit eine neue Verbindung hergestellt werden und wir können auf alle Konstanten, vordefinierte Variablen und Funktion zugreifen.

Die functions.php bekommt ihren Inhalt erst nach und nach, weil wir die Funktionen erst im Laufe des Workshops entwickeln, während ich die mysql.php und die index.php jetzt kurz skizzieren werde.

mysql.php

PHP:
<?php
    error_reporting
(E_ALL);

    
define ('MYSQL_HOST''localhost');
    
define ('MYSQL_USER''root');
    
define ('MYSQL_PASS''asdf');
    
define ('MYSQL_DATA''galerie');

    
$connid = @mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die("Error: ".mysql_error());
    
mysql_select_db(MYSQL_DATA) OR die("Error: ".mysql_error()); 
?>


index.php

PHP:
<?php
    error_reporting
(E_ALL);
    include(
"config.php");
    include(
"mysql.php");
    include(
"functions.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
     "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Meine Galerie</title>
</head>
<body>
<?php
    $s 
= array();
    
$s['alben'] = "alben/index.php";
    
$s['foto_upload'] = "foto_upload/index.php";
    
$s['galerie'] = "galerie.php";
    
$s['overview'] = "overview.php";
    
$s['detail_screen'] = "detail_screen.php";
    
$s['delete'] = "delete.php";
    
$s['edit'] = "edit.php";

    if(isset(
$_GET['s']) AND isset($s[$_GET['s']])){
        include 
$s[$_GET['s']];
        echo 
"<br />\n";
        echo 
"&raquo; <a href=\"index.php\">Zur&uuml;ck zum Menu</a>\n";
    }
    else{
         echo 
"<h1>Menu</h1>\n";
         echo 
"<ul>\n";
         echo 
" <li><a href=\"index.php?s=alben\">Alben administrieren</a></li>\n";
         echo 
" <li><a href=\"index.php?s=foto_upload\">Fotos hochladen</a></li>\n";
         echo 
" <li><a href=\"index.php?s=galerie\">Galerie anzeigen</a></li>\n";
         echo 
"</ul>\n";
    }
?>
</body>
</html>


Kurz zur Erklärung:
Die index.php enthält die HTML-Grundstruktur. Alle weiteren Skripte werden hier inkludiert. Dazu wird das Array $s angelegt, das als Keys $_GET-Parameter enthält und als Values die Position der Skripte im Dateisystem. Dadurch kann man z.B. mit index.php?s=alben die Alben-Administration inkludieren. Bei einem unbekannten Key wird ein Menu angezeigt, durch das man die verschiedenen Bereiche der Galerie erreichen kann. Ausführliche Informationen zu diesem Prinzip findet ihr unter http://tut.php-quake.net/frames.html

Soo.. nachdem unserer Grundstruktur steht, können wir mit der Alben-Administration weitermachen.

Zurück zur vorigen Seite:
PHP Bildergalerie
Weiter zur nächsten Seite:
PHP Bildergalerie - Alben verwalten

»» 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