5Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
9
9
ZUGRIFFE
397
397
EMPFEHLEN
-
hallo,
Ich möchte nur wissen wie kann ich ein Bilder verzeichnis mit oop lesen. Funksional habe
ich es hinbekommen, aber ich weis nicht wie ich das mit oop realisieren sollte. bin seit 2
tagen dadrauf und bekomme es leider nicht hin.
Funksional Code
PHP-Code:$Bilder = array();
$Ordner = "img/gallery";
$dateiendungen = array("png", "jpg" ,"jepg");
$anzahl = 25;
$nummern = array();
$ordner = opendir($Ordner);
while ($Datei = readdir($ordner)) {
if (!is_dir($Datei)) {
if ($Datei != "..") {
if (strstr($Datei, ".")) {
$punkt = strrpos($Datei, ".");
$endung = strtolower(substr($Datei, $punkt + 1));
if (in_array($endung, $dateiendungen)) {
$Bilder[] = $Ordner . "/" . $Datei;
}
}
}
}
}
closedir($ordner);
$anzahlbilder = count($Bilder) - 1;
if ($anzahl > $anzahlbilder) {
$anzahl = $anzahlbilder;
}
for ($i = 1; $i <= $anzahl; $i++) {
srand(microtime() * 1000000);
$nummer = rand(0, $anzahlbilder);
if (!in_array($nummer, $nummern)) {
$nummern[] = $nummer;
echo "<a href='$Bilder[$nummer]' rel=lightbox[roadtrip]
style='height: 200px; width: 140px;'><img src=\"" . $Bilder[$nummer] . "\"/></a>";
} else {
$i--;
}
}
Diese Script klappt auch sehr gut aber ich bin nur am lernen wie oop funsuniert. Login
system habe ich mit oop gut hinbekommen aber das mit verzeichnis lesenen da komme ich echt nicht weiter.
-
03.02.12 14:45 #2
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Versuch das mal (nicht ausprobiert):
Code PHP:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
$pictures = array(); $directory = 'img/gallery'; $extensions = array('png', 'jpg', 'jpeg'); $count = 25; $numbers = array(); $iterator = new DirectoryIterator($directory); while($iterator->valid()) { if($iterator->isFile() && in_array($iterator->getExtension(), $extensions)) { $pictures[] = $directory . '/' . $iterator->current(); } } $count_pictures = count($pictures) - 1; if($count > $count_pictures) { $count = $count_pictures; } srand(microtime() * 1000000); $numbers = shuffle(range(0, $count_pictures)); $i = 0; foreach($numbers as $number) { if($i === $count) { break; } else { echo '<a href="' . $pictures[$number] . '" rel="lightbox[roadtrip]" style="height: 200px; width: 140px;"><img src="' . $pictures[$number] . '" /></a>'; } }
Geändert von einfach nur crack (03.02.12 um 14:52 Uhr)
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Naja das ist aber nicht oop programmierung. Ich dachte oop (objektorientierung programmierung) ist immer mit opjekte und fängt immer mit class. Was du geschrieben hast sieht auch eher nach funksional und nicht oop. Ich habe aber getestet es geht nicht. Und auserdem ich brauche nicht funksinal, weil das habe ich ja auch hinbekommen. Aber danke das du mir helfen wolltest.
-
03.02.12 15:18 #4
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Mh, du wirst es in PHP nicht erleben, dass du etwas rein in OOP schreibst, da PHP einfach nicht komplett OOP-gerecht ist. Somit wirst du immer den Fall haben, dass du Schleifen und Bedingungen hast, die logischerweise nicht OOP sind. Außerdem hat OOP in PHP in erster Linie nichts mit class gemein, da man dass nicht braucht, wenn es schon existiert (siehe DirectoryIterator). Im Übrigen wüsste ich gerne, welche Fehlermeldungen dir PHP anzeigt. Dann kann ich dein Problem auch ausbessern.
Code PHP:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
class Pictures implements Iterator { private $pictures = array(); private $indices = array(); public function __construct($directory, $extensions, $count) { $iterator = new DirectoryIterator($directory); while($iterator->valid()) { if($iterator->isFile() && in_array($iterator->getExtension(), $extensions)) { $this->pictures[] = $directory . '/' . $iterator->current(); } } $count_pictures = count($pictures) - 1; if($count > $count_pictures) { $count = $count_pictures; } srand(microtime() * 1000000); $this->indices = array_slice(shuffle(range(0, $count_pictures)), 0, $count); } public function current() { return $this->pictures[current($this->indices)]; } public function key() { return $this->indices; } public function next() { return next($this->indices); } public function rewind() { return reset($this->indices); } public function valid() { return ($this->current() !== false); } } $pictures = new Pictures('img/gallery', array('png', 'jpg', 'jpeg'), 25); foreach($pictures as $pictures) { echo '<a href="' . $picture . '" rel="lightbox[roadtrip]" style="height: 200px; width: 140px;"><img src="' . $picture . '" /></a>'; }
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Aso ich habe schon von mein kumppel mit bekommen das php oop anders ist als java oop. Also damit meinte er das php nicht reif ist mit oop zumindest nicht so mächtig wie java in oop.
Ich habe mal dein script eingesetzt, aber es kam folgender fehler:
Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\bweb\testen\index.php on line 31
-
03.02.12 15:40 #6
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Oh, verdammt. Ich habe da auch eine endlos Schleife eingebaut. Es müsste als letzter Befehl in der ersten Schleife noch ein $iterator->next() stehen.
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Aber kommischerweise kommt das fehler weiterhin:
Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\bweb\testen\index.php on line 31
ich denke ich mache da was falsch.
-
Hmm, das sehe ich aber ganz anders. In PHP kann man sehr schön (auch 100%) objektorientiert arbeiten. Schleifen und Bedingungen gibt es bei OOP in den Methoden auch an jeder Ecke, sagt also nichts darüber aus ob es OOP ist oder nicht.
Der größte Nachteil von PHP ist, dass die Objekte nicht so langlebig sind wie bei Desktopanwendungen und die Kommunikation zwischen den Objekten nicht so schön modelliert werden kann.
Poste doch mal was in Zeile 31 steht.
Gruß
//EDIT
Btw, der Fehler sagt auch nur, dass in Zeile 31 etwas ist was er in 30 Sekunden nicht abarbeiten kann. (evtl eine Endlosschleife?)
-
Aha ok.
Also in line 31 steht nur das :
Das erste line ist in line 31 bei mir lolPHP-Code:if($iterator->isFile() && in_array($iterator->getExtension(), $extensions)) {
$this->pictures[] = $directory . '/' . $iterator->current();
}
-
03.02.12 16:26 #10
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
So geht es jetzt wirklich (ausprobiert!):
Code PHP:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
class Pictures implements Iterator { private $pictures = array(); public function __construct($directory, $extensions, $count) { $iterator = new DirectoryIterator($directory); foreach($iterator as $file) { if($file->isFile() && in_array(substr(strrchr($file->getFilename(), '.'), 1), $extensions)) { $this->pictures[] = $directory . '/' . $file->getFilename(); } } $count_pictures = count($this->pictures) - 1; if($count > $count_pictures) { $count = $count_pictures; } srand(microtime() * 1000000); shuffle($this->pictures); $this->pictures = array_values(array_slice($this->pictures, 0, $count)); } public function current() { return current($this->pictures); } public function key() { return key($this->pictures); } public function next() { return next($this->pictures); } public function rewind() { return reset($this->pictures); } public function valid() { return ($this->current() !== false); } } $pictures = new Pictures('img/gallery', array('png', 'jpg', 'jpeg'), 25); foreach($pictures as $picture) { echo '<a href="' . $picture . '" rel="lightbox[roadtrip]" style="height: 200px; width: 140px;"><img src="' . $picture . '" /></a>'; }
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
Ähnliche Themen
-
Bilder aus Verzeichnis auslesen, thumb erstellen und in anderem Verzeichnis speichern
Von saraaa im Forum PHPAntworten: 2Letzter Beitrag: 17.02.09, 10:15 -
bilder aus verzeichnis öffnen
Von Stephan Liebig im Forum PHPAntworten: 6Letzter Beitrag: 24.12.08, 12:22 -
Bilder aus Verzeichnis löschen
Von sugar im Forum PHPAntworten: 7Letzter Beitrag: 30.10.07, 15:21 -
Bilder aus Verzeichnis auslesen
Von Dipsi im Forum VisualStudio & MFCAntworten: 5Letzter Beitrag: 30.10.05, 11:20 -
bilder aus verzeichnis auslesen
Von Rios im Forum PHPAntworten: 4Letzter Beitrag: 25.10.02, 10:46





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren