Hallo Forum,
habe es geschafft. Mit dem nachfolgendem Code kann ich in den Originalordner alle Bilder transportieren. Vom dem Code wird erkannt, welche Bilder noch nicht in die DB geschrieben worden sind. Dieses realisiere ich mit Arrays. Als erstes werden die in der DB gespeicherten "Bild_nr" in das Array geschrieben. Erkläre in einzelnen Teilen, damit die noch nicht so bewandert sind, es verstehen.
Das ist die Verbindung zur Datenbank
PHP-Code:
$angelina = mysql_query($query_angelina, $ange) or die(mysql_error());
Anzahl der Datensätze:
PHP-Code:
$db_anz = $totalRows_angelina;
Mit der for-Schleife wird das DB-Array mit den Filenamen gefüllt.
Die DB beginnt mit irgendeiner ID.
PHP-Code:
$db_Files = array();
for ($i=1; $i <= $db_anz; $i++)
{
// Auslesen des Datensatzes – Zeiger wird auf den nächsten gestellt
$db_inh = mysql_fetch_array($angelina);
// array_push fügt dem Array eine neue Zeile hinzu
array_push($db_Files, basename($db_inh['Bild_nr']));
};
// Mit nachfolgendem Code kann man das Array ausgeben lassen
print_r($db_Files);
Nun kommt der Inhalt der Original-Bilder (aus der Camera)
Die Bilder werden in ein Array einlesen. Die zwei Variablen benötige ich für den Funktionsaufruf mit glob()
In diesem Befehl glob() kann ich eingeben, daß nur bestimmte Dateien gelesen werden. Und das ist der Befehl GLOB_BRACE.
Am Schluß werde ich diese Funktion noch veröffentlichen.
PHP-Code:
$dir = "../IMAGES/";
$type = "jpg,JPG";
// Funktionsaufruf für den Ordner / Einlesen der Files in das Array
$ordnerliste = listPicture($dir, $type);
// hier die Anzahl der Bilder
$ordnerl_anz = count($ordnerliste);
//Zur Kontrolle kann ich das Array ausgeben
print_r($ordnerliste);
Das ist der Original-Ordner
PHP-Code:
$original = $_SERVER['DOCUMENT_ROOT'] . "/IMAGES/";
Ich möchte die noch nicht eingetragenen Bilder in die DB eintragen:
Muß also den ersten Eintrag des Array-Ordners mit den Array-DB-Einträgen vergleichen.
Also 1 von X Einträgen. Das bewirkt die for-Schleife. Die DB-Einträge werden dann auch mit einer For-Schleife durchfahren.
PHP-Code:
for ($x=0; $x < $ordnerl_anz; $x++)
{
// Hier wird die Ordnerliste durchlaufen
$ord = basename($ordnerliste[$x]['file']);
for ($i=1; $i <= $x; $i++)
{
$db_Bild_nr = $db_Files[$x];
// Hier wird die hier wird die DB-Liste durchlaufen
// suche in der $db_Files den Wert der in der Variablen $ord eingetragen ist.
if ( $finden = array_search ( $ord, $db_Files ) )
{
// Wenn vorhanden wird die For-Schleife abgebrochen. Braucht also nicht das gesamte Array durchlaufen.
break;
} else {
// Wenn nicht gefunden gibt es FALSE zurück. Kann somit in die DB eingetragen werden
// erst Verbindung
mysql_select_db($database_ange, $ange);
// Dann der SQL-Code zum Eintragen in den Original-Ordner mit dem File-Namen
$insertSQL = "INSERT INTO ange (Bild_nr) VALUES ('" . $original.$ord . "')";
// die SQL-Zeile kann zur Kontrolle ausgegeben werden. Jetzt ist sie ausgeschaltet
//echo $insertSQL. "<br />\n";
$auffuell = mysql_query($insertSQL, $ange) or die(mysql_error());
// Die Forschleife kann abgebrochen werden
break;
}
}
}
// trennen von der DB
mysql_free_result($angelina);
Hoffentlich war das nicht zu kompliziert. Nun es fehlt noch die Funktion. Hier ist sie.
Die Funktion speichert die Namen des Ordners in einem Array. Die Übergabe:
directory und Type, also: DeinVerzeichnis/xxx.jpg oder DeinVerzeichnis/xxx.JPG
Die Namen werden in Array $picture übergeben.
PHP-Code:
function listPicture($dir=".",$type="jpg")
{
$x = 0;
foreach (glob($dir."*"."{". $type. "}", GLOB_BRACE|GLOB_ERR) as $filename)
{
$picture[$x]['file'] = $filename;
$x++;
}
return $picture;
}
Nun könnt Ihr bei Bedarf es selbst ausprobieren. Bei mir klappt es. Über eine Einschätzung oder Bewertung würde ich mich sehr freuen.