Grafiken automatisch in Datenbank erfassen

Ich hab da ein ganz ganz kompliziertes Problem, zumindest vermute ich mal dass es ganz ganz kompliziert is.

Ich möchte ein kleines Script basteln dass ein bestimmtes Verzeichnis durchsucht inklusive Unterverzeichnisse und alle jpg Dateien in einer Datenbank erfasst. Dabei soll es als Werte den Dateinamen mit Endung, die Maße und den Namen des Unterverzeichnisses übernehmen.

Das ganze in die Datenbank zu bekommen is kein Problem, MySQL kapier ich langsam :D
Aber wie ich an die entsprechenden Wert komm weiss ich leider nicht :confused:
 
Also ein Verzeichnis inklusive aller Unterverzeichnisse zu durchsuchen ist ein hervorragendes Beispiel für rekursive Funktionen. Ich habe dir mal etwas geschrieben, getestet ist es aber nicht.
PHP:
function scanDirForJpg($dirName) {
	$handle = opendir($dirName);
	while (($file = readdir($handle)) !== false) {
		$pathToFile = $dirName . DIRECTORY_SEPARATOR . $file;
		if ($file == '.' || $file == '..') {
			continue;
		} else if (is_dir($pathToFile)) {
			scanDirForJpg($pathToFile);
		}
		$ex = explode('.', $file);
		$extension = array_pop($ex);
		if (($extension == 'jpg' || $extension == 'jpeg') == false) {
			continue;
		}
		$imageInformation = getimagesize($dirName . DIRECTORY_SEPARATOR . $file);
		$imageInformation[] = $dirName;

		// Jetzt kannst du mit $imageInformation machen was du willst
		// zb in die Datenbank eintragen

		closedir($handle);
	}
}

Die Funktion ist leider nicht sehr elegant geschrieben, mir ist leider kein Weg eingefallen den aktuellen Ordnernamen herauszubekommen, also übergebe ich ihn als zweiten Parameter.
Ich hoffe es funktioniert alles. Aja: getimagesize liefert alle benötigten Informationen, um die Rückgabewerte zu verstehen musst du dir die Funktion mal anschauen.
 
Zuletzt bearbeitet:
Also, meine Lösung sieht bisher so aus (ich weiss, es ginge vermutlich schöner):

PHP:
<?php
require('connect.php');

$dir= $_POST['dir'];
$gallery = "$dir";

if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
        if ($file == '.' || $file == '..') {
                continue;
        }
            $size = getimagesize ("$dir/$file");
            $name = "$dir/$file";
            echo "$file breite={$size['0']} höhe={$size['1']} <br>";

                if (isset($_REQUEST['submit'])) {

            $sql = "INSERT blog_pics (name,gallerie,breite,hoehe,datum) VALUES ('$name','$dir','{$size['0']}','{$size['1']}',NOW())";
            $result = mysql_query($sql) OR die(mysql_error());
        }
        }
        closedir($dh);
    }
}
?>

Funktioniert auch bis auf 'ne Kleinigkeit. Wenn ich im Verzeichnis neue Grafiken hab sollen die alten übersprungen werden anhand des Feldes "name". Ich hab mal ON DUPLICATE KEY IGNORE probiert aber da krieg ich dann syntax error zu hören.
 
Zuletzt bearbeitet:
Und wie ist die genaue Fehlermeldung ?

Edit: Du weißt schon das dein aktuelles Script keine Unterverzeichnisse scannt, oder ?
 
Die fehlermeldung is "You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON DUPLICATE KEY IGNORE' at line 1"

Und die enprechende Zeile sieht so aus:

PHP:
$sql = "INSERT blog_pics (name,gallerie,breite,hoehe,datum) VALUES ('$name','$dir','{$size['0']}','{$size['1']}',NOW()) ON DUPLICATE KEY IGNORE";

Unterverzeichnisse muss es auch garnich können hab ich mir überlegt, es reicht völlig wenn ich das Verzeichnis über 'n Formular wählen kann, das is $_POST['dir'] da.
 
Zurück