nach Datum sortieren - eigene Sortierung

Hi nochmal,


ich muss doch noch versuchen das irgendwie nach dem "read_exif_data" Datum zu sortieren.
Da nur ich Bilder uploaden darf und meine Cam diese Daten schreibt wäre es machbar...
Nur leider stehe ich wieder komplett auf dem Schlauch:(

Wenn ich versuche $exif einen ganzen array auslesen zu lassen bekomm ich immer nur Fehlermeldungen.
Mein Versuch sah so aus:

PHP:
$start = opendir('./bilder/samuel/');;
§bilder = readdir($start);
$exif = exif_read_data('$bilder', 'IFD0');


@kuddeldaddeldu
ich hatte mir usort im Manual bei php.net wohl schon mehrfach angesehen.
Wie oben schon gesagt bin ich daraus aber einfach nicht schlau geworden.

Das ich die Funktion am Ende hin bekommen habe hatte weniger mit Verständniss als viel Glück zu tun.
Bis zu Schluss habe ich ja gesucht wo $a und $b definiert, bzw. diesen ein Wert zugewiesen wird.

Die Erklärung von ZodiacXP war wohl einfach noch einfacher und hat selbst mich das ganze verstehen lassen :(

Wobei ich noch erwähnen muss dass bei der jetzigen Funktion noch ganz entscheiden ein Thread geholfen hatt, in dem du schoneinaml eine beinahe identische Funktion gepostet hast.
Leider find ich das grad nicht mehr,sorry.


Nochmals Danke, Daniel
 
Hi,

ich muss doch noch versuchen das irgendwie nach dem "read_exif_data" Datum zu sortieren.

Dann musst Du die Sortierfunktion, die Du usort() verwenden lässt, also quasi das Sortierkriterium, dahingehend ändern.
Lies die Daten in der Sortierfunktion für die beiden übergebenen Elemente aus und vergleiche dann.

Wenn ich versuche $exif einen ganzen array auslesen zu lassen bekomm ich immer nur Fehlermeldungen.
Mein Versuch sah so aus:

PHP:
$start = opendir('./bilder/samuel/');;
§bilder = readdir($start);
$exif = exif_read_data('$bilder', 'IFD0');

Du musst lernen, das Manual zu lesen. Zeige mir bitte, wo in der Doku zu [phpf]exif_read_data[/phpf] steht, dass der $filename-Parameter ein Array sein kann?
Außerdem übergibst Du den String '$bilder', nicht den Inhalt der Variablen $bilder. Beherzige bitte ZodiacXPs Rat und mach erstmal ein Tutorial. Das sind elementare Grundlagen.

LG
 
Ich bin fleißig am lernen und habe mal ganz einfach angefangen die Bilder
in einen Array einzulesen .
Nach nun mehr 7 maligem lesen des Mauals zu "exif_rad-data()"
denke ich auch es richtig zu haben, doch es kommt:

Warning: exif_read_data() [function.exif-read-data]: Unable to open file in C:\xampp\htdocs\neu\exif.php on line 16

Das auf $exif folgende echo funktioniert einwandfrei:confused::-(
Gebt ihr mir vielleicht nochmal einen Tip?

Hier der Code:

PHP:
<?php
	
	$handle=opendir('./bilder/samuel/');
	while ($file = readdir ($handle)) 
	{
		if ($file != "." && $file != "..")
        {
			
			$array[] = $file; 
	
		}
	}

	foreach ($array as $bild) 
	{
		$exif = exif_read_data('./bilder/samuel/$bild',FILE);
		echo"<img src=\"./bilder/samuel/$bild\"/><br/>Exif:$exif";
	}
	?>

THX
 
Zuletzt bearbeitet:
Danke, ich habs vertanden :-)

Jetzt funktionierts und sieht so aus:
PHP:
	foreach ($array as $bild) 
	{
		$exif = exif_read_data("./bilder/samuel/".$bild);
		echo"<img src=\"./bilder/samuel/$bild\"/><br/>Exif:$exif[DateTime]<br/>";
	}

Ich komm nur beim besten Willen nicht drauf wie ich das jetzt für die "function datum($a, $b)" verwenden kann.
Oder besser gesagt, wie soll ich das überhaupt nutzen wenn ich Bilder anhand der Exif-Daten und nicht die Exif Daten sortieren will?

Auch wenn ich jetzt eine Idee für die Sortierfunktion hätte würde ich ja durch sortieren des $exif Array keines Wegs die Bilder sondern eben nur $exif sortieren :confused:


Ganz lieb um HILFE frag :(
 
Ich glaube ich habe jetzt einen Ansatz:

PHP:
	function datum($a, $b) 
	{
		$a_exif = exif_read_data("./bilder/samuel/".$a);
		$a_datum = explode(':', $a_exif[DateTime]);
		$b_exif = exif_read_data("./bilder/samuel/".$b);
		$b_datum = explode(':', $b_exif[DateTime]);
		return mktime(0,0,0,$a_datum[1],(int)$a_datum[0],$a_datum[2]) <= mktime(0,0,0,$b_datum[1],(int)$b_datum[0],$b_datum[2]);
	}

Nur weiß ich nicht wie ich exif_read_data() in dem Fall $file / die Datei, den String so gebe dass es keine Fehlermeldung gibt.

Kann das so überhaupt funktionieren?


edit:

ich hab mir mal eben "print $a" in der funktion datum angeschaut und das gibt die Dateinamen aus. Sollte also eigentlich funktionieren?

Ich ahbe das jetzt auch gleich schon ins Fotoalbum Script (1. Post) eingebaut:
PHP:
function get_files($path, $opt = "", $pathadd = "") {
     $return = array();
     foreach(get_path_content($path) as $p) if(is_file("$path/$p")) $return[ ] = $p;
     return $return;
}



function get_dirs($path) 
{
     $return = array();
     foreach(get_path_content($path) as $p)
	 if(is_dir("$path/$p")) $return[ ] = $p;
     return $return;
}


function get_path_content($path) 
{
     $verzeichnishandle = @opendir("$path");
     rewinddir($verzeichnishandle);
     $files = array();
     while ($file = readdir($verzeichnishandle)) {
          if($file != "." and $file != "..") array_push($files, "$file");
     }



		
	function datum($a, $b) 
	{
		$a_exif = exif_read_data("./bilder/samuel/".$a);
		print $a;
		$a_datum = explode(':', $a_exif[DateTime]);
		$b_exif = exif_read_data("./bilder/samuel/".$b);
		$b_datum = explode(':', $b_exif[DateTime]);
		return mktime(0,0,0,$a_datum[1],(int)$a_datum[0],$a_datum[2]) <= mktime(0,0,0,$b_datum[1],(int)$b_datum[0],$b_datum[2]);
	}

	usort($files, 'datum');
		
		
	
		
     return $files;
}
 
Zuletzt bearbeitet:
Also die Fehlerausgabe und <?php print $a; ?> sagt folgendes:

Code:
25.03.2009 (1).JPG
Warning: exif_read_data() [function.exif-read-data]: Unable to open file in C:\xampp\htdocs\neu\fotoalbum_samuel.php on line 34
thumbs30.01.2009 (2).JPG25.03.2009 (1).JPG30.01.2009 (1).JPG25.03.2009 (1).JPG25.03.2009 (3).JPG25.03.2009 (2).JPG04.02.2009.JPG21.02.2009.JPG30.01.2009 (2).JPG25.03.2009 (3).JPG
Warning: exif_read_data() [function.exif-read-data]: Unable to open file in C:\xampp\htdocs\neu\fotoalbum_samuel.php on line 34
thumbs06.01.2009.jpg14.03.2009.JPG21.02.2009.JPG25.03.2009 (2).JPG04.02.2009.JPG21.02.2009.JPG21.02.2009.JPG
Warning: exif_read_data() [function.exif-read-data]: Unable to open file in C:\xampp\htdocs\neu\fotoalbum_samuel.php on line 34
thumbs06.01.2009.jpg14.03.2009.JPG04.02.2009.JPG14.03.2009.JPG
Warning: exif_read_data() [function.exif-read-data]: Unable to open file in C:\xampp\htdocs\neu\fotoalbum_samuel.php on line 34
thumbs06.01.2009.jpg04.02.2009.JPG06.01.2009.jpg
Warning: exif_read_data() [function.exif-read-data]: Unable to open file in C:\xampp\htdocs\neu\fotoalbum_samuel.php on line 34
thumbs04.02.2009.JPG
Warning: exif_read_data() [function.exif-read-data]: Unable to open file in C:\xampp\htdocs\neu\fotoalbum_samuel.php on line 34
thumbs

@Sven Mintel
ist sehr gut möglich was du da schreibst. In die Richtung dachte ich auch.
Doch eins nach dem anderen, für mich ist das nicht "einfach" erstmal in einen Array einlesen und dann sortieren.
Das stellt ein ganzes Stück Arbeit und lernen für mich da. Nicht das ich nicht lernen will ;-).

Davon abgesehen dachte ich mein &a_exif wäre jetzt ein Array da exif_read_data() eien Array bildet?
Manual:"Rückgabewerte - Gibt ein assoziatives array zurück"
 
Zurück