| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

16-05-2010, 10:29
|
|
wally18
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 4
|
|
Bilder nach datum sortieren
Hi dieser script liest die Bilder aus einen Verzeichnis raus und nun weiss ich nicht was ich bei
eingeben muss datum die Bilder nach Datum sortiert werden kann mir jemand helfen bitte?
PHP-Code:
<?php
$mydir = getcwd()."/uploads/images/Blog"; $verz = dir($mydir); while($entry=$verz->read()){ if($entry != "." && $entry != ".."){ $dateinamen[] = $entry;
} } $verz->close();
rsort( ); while(list($key, $val) = each($dateinamen)) { if(substr($val, -4) == ".jpg") { echo "<A HREF=\"uploads/images/Blog/".$val."\" REL=\"lytebox[vacation]\"><IMG SRC=\"uploads/images/Blog/".$val . "\" REL=\"lytebox[vacation]\" WIDTH=\"90\" HEIGHT=\"68\" BORDER=\"0\"></A>";
} } ?>
|

16-05-2010, 10:39
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Aus meiner Wühlkiste:
PHP-Code:
<?php
error_reporting(-1);
ini_set('display_errors', TRUE);
$array = array();
foreach(glob("./*.php",GLOB_NOSORT) as $datei)
$array[$datei] = filemtime($datei);
arsort($array); // neueste Datei nach oben
var_export($array);
?>
Oder so:
PHP-Code:
error_reporting(-1);
ini_set('display_errors', TRUE);
setlocale(LC_ALL,'de_DE@euro', 'de_DE', 'de', 'ge');
date_default_timezone_set('Europe/Berlin');
function sortable2html($file,$datum)
{
return strftime(htmlentities($file)." %x %X<br>",$datum);
}
$files = glob('./*.php',GLOB_NOSORT);
$zeiten = array_map('filemtime',$files);
$sortable = array_combine($files, $zeiten);
arsort($sortable);
$files = array_keys($sortable);
$zeiten = array_values($sortable);
$ausgabe = array_map('sortable2html',$files,$zeiten);
echo join($ausgabe);
?>
Geändert von combie (16-05-2010 um 10:51 Uhr)
|

16-05-2010, 11:09
|
|
wally18
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 4
|
|
hää ? das check ich nciht wie ich das bitte einbinden soll
|

16-05-2010, 11:18
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Das weiß ich natürlich auch nicht!
Entweder kannste mit den Beispielen was anfangen, oder nicht.
|

16-05-2010, 13:01
|
|
wally18
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 4
|
|
es währe nett eine erklärung dabei zu haben
|

16-05-2010, 13:44
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Zitat:
Zitat von wally18
es währe nett eine erklärung dabei zu haben 
|
Gut!
Hier findest du die Erklärung zu allen Dingen, die ich dort verwendet habe: http://www.php.net/manual/de/
Was konkret verstehst du nicht?
Geändert von combie (16-05-2010 um 13:50 Uhr)
|

16-05-2010, 14:23
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Dein Array enthält überhaupt keine Datumsinformationen. Wie kommst du darauf, mit irgendeiner Funktion nach etwas sortieren zu können, was nicht da ist?!
|

16-05-2010, 15:50
|
|
wally18
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 4
|
|
kann mir bitte einer richtig helfen dann denn ich möchte auch daraus lernen es bringt echt nichts wenn man mir den code dahin haut und sagt hier bitteschön sondern eine erklärung währe immer nett
|

16-05-2010, 16:19
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Was stellst du dir denn unter "richtiger Hilfe" vor? Stelle konkrete Fragen, dann wird man dir auch konkret anworten.
|

16-05-2010, 18:02
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Packe all die Informationen, die du benötigst, in ein (ggf. mehrdimensionales) Array,
sortiere dieses wie gewünscht,
durchlaufe es in einer Schleife um die Ausgabe zu machen.
Fertig.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

17-05-2010, 01:12
|
 |
fireweasel
Registrierter Benutzer
|
|
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
|
|
Zitat:
Zitat von wally18
Hi dieser script liest die Bilder aus einen Verzeichnis raus und nun weiss ich nicht was ich bei
eingeben muss datum die Bilder nach Datum sortiert werden kann mir jemand helfen bitte?
...
|
Rsort() ist hier kaum hilfreich. Du hast für jeden Eintrag, den du sortieren möchtest, zwei Werte vorliegen: den Dateinamen und das Datum. Die Zuordnung von beiden darf durch den Sortiervorgang nicht verändert werden. Du benötigst also ein assoziatives Array, das aus Schlüssel-Wert-Paaren besteht. Schlüssel (oder Key) ist für mein Beispiel der Dateiname und Wert (oder Value) ist das Änderungsdatum der Datei mit diesem Namen. Um solche Arrays nach dem Wert zu sortieren, ohne die Zuordnung zu verändern, gibt es asort() und arsort().
Ich dein Script noch etwas umgebaut und aufgeräumt. Allerdings bleiben diverse Details noch ungeklärt. So ist mir bspw. nicht klar, warum du die Bilddateien anzeigst und extra nochmal verlinkst. Normalerweise erzeugt man für die Vorschau eine kleinere Datei ("Thumbnail") und nimmt nicht einfach das verlinkte Original-Bild, in per width="..." und height="" "zusammengestauchter" Form ...
PHP-Code:
// Pfad zum Ausgangsverzeichnis festlegen
$base_path = getcwd(). '/uploads/images/Blog';
$filenames = array ();
// Verzeichnis oeffnen und enthaltene Dateien einlesen
if (is_object($dir = dir($base_path))) {
while (is_string($entry = $dir->read())) {
if ('..' === $entry || '.' === $entry) {
continue;
}
// is_file() und filemtime() benoetigen den
// gesamten Pfad der Datei,
// nur $entry reicht nicht
$file_path = $base_path . DIRECTORY_SEPARATOR . $entry;
// keine Datei? Dann weiter mit dem naechsten Eintrag
// Dateiname endet nicht auf ".jpg"? Weiter mit dem naechsten Eintrag
if (!is_file($file_path) || !preg_match('/\.jpe?g\z/', $entry)) {
continue;
}
// Datum der letzten Aenderung ermitteln
$filenames[$entry] = filemtime($file_path);
}
$dir->close();
}
// sortieren nach Array-Werten
// unter Beibehaltung der Schlüssel-Wert-Assozationen
arsort($filenames);
// asort($filenames) sortiert vom aeltesten zum neuesten Eintrag
// ausgeben
// hier eigene Base-URL einsetzen
$base_url = $base_path . '/';
foreach ($filenames as $entry => $mtime) {
$img_url = htmlspecialchars($base_url . rawurlencode($entry));
printf(
'<a href="%s" rel="lytebox[vacation]">'.
'<img src="%s" width="90" height="68" border="0"/>'.
'</a>' . "\r\n",
// ein Zeilenumbruch macht den HTML-Quelltext uebersichtlicher (Debugging)
$img_url,
$img_url
);
}
__________________
PHP-Code:
class Brick implements Throwable {
// ...
}
Geändert von fireweasel (17-05-2010 um 01:18 Uhr)
|

17-05-2010, 01:25
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Zitat:
|
Um solche Arrays nach dem Wert zu sortieren, ohne die Zuordnung zu verändern, gibt es asort() und arsort().
|
Man könnte auch uasort()verwenden!
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|