php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.03.2010, 23:36  
Erfahrener Benutzer
 
Registriert seit: 25.08.2004
Beiträge: 128
picco
Standard Probleme mit getimagesize und array

Ich habe hier eine Bildergalerie, die bisher ohne Probleme lief. Konkret handelt es sich hier um Wallpaper. Bisher waren die Wallpaper im Format 1024*768. Allerdings möchte ich nun auch Wallpaper in höheren Auflösungen anbieten.

Das Ganze ist in etwa so aufgebaut.

Verzeichnis mit Bildern auslesen
Bestimmen wie viele Bilder dargestellt werden sollen
Alles in ein Array packen
Mit einer for-Schleife das Array "splitten", damit x Bilder pro Seite dargestellt werden
mit getimagesize ein paar Infos anzeigen

So lief alles bisher einwandfrei.

Das Ganze habe ich nun erweitert, damit Links zu den Wallpapern in der höheren Auflösung angezeigt werden. Soweit klappt alles auch. Allerdings macht getimagesize bei den großen Bildern faxen und zeigt nichts an bzw. gibt keine Werte zurück.

Da ich ich nicht zu jedem Wallpaper eines in einer größeren Auflösung habe, habe es ich so gelöst.
PHP-Code:
    if (isset($bilder1280[$x])) {
        
$info1280 getimagesize($pfad1280.$bilder1280[$x]);
        
$size1280 round(filesize($pfad1280.$bilder1280[$x])/10241);
        
$laenge1280 $info1280[0];
        
$hoehe1280 $info1280[1];
        } 
Klappt auch soweit. Allerdings nur, wenn ich alle Bilder auf einer Seite darstelle. Teile ich das Array wieder auf 18 Bilder pro Seite, erhalte ich keine Rückgabewerte von getimagesize. Die Links zu den Bilder werden komischerweise aber dargestellt. Hat jemand eine Idee wo das Problem liegen könnte?
picco ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.03.2010, 08:09  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Zitat:
Teile ich das Array wieder auf 18 Bilder pro Seite, erhalte ich keine Rückgabewerte von getimagesize.
Wenn Du den Teil des Codes denn auch mal postest, könnten wir zumindest schauen, ob wir helfen können...
Arne Drews ist offline  
Alt 03.03.2010, 09:36  
Erfahrener Benutzer
 
Benutzerbild von Andreas
 
Registriert seit: 22.04.2005
Beiträge: 391
Andreas ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also mir drängen sich gleich zwei Fragen auf, wenn ich deinen Post lese:

Warum liest du immer alle Bilder ein, wenn blos 18 dargestellt werden sollen?
Warum splittest du das Array mit einer for-schleife? (Stichwort: array_slice)


Ansonsten warte ich auch mal auf den anderen Code
Andreas ist offline  
Alt 03.03.2010, 17:24  
Erfahrener Benutzer
 
Registriert seit: 25.04.2009
Beiträge: 201
PHP-Kenntnisse:
Anfänger
Lollix befindet sich auf einem aufstrebenden Ast
Lollix eine Nachricht über Skype™ schicken
Standard

Stecken alle Wallpapers im selebn Ordner?

Hast du mal überprüft, ob PHP die Bilder überhaupt finden kann?

Hast du außerdem mal mit print_r oder so überprüft, ob wirklich nichts im Array drinnen ist?

Aber wie Arne Drews und Andreas schon sagten, wäre es sicher leichter für alle sich in deinen Code zu versetzen.
__________________
Privatsphäre war gestern, denn:
Bundestrojaner 2.0: Die neue Version ist da.
Lollix ist offline  
Alt 03.03.2010, 22:35  
Erfahrener Benutzer
 
Registriert seit: 25.08.2004
Beiträge: 128
picco
Standard

Ein wenig Code wäre vielleicht wirklich sinnvoll...

PHP-Code:
// Ordner und Array
    
$pfad "img/wallpaper/";
    
$tpfad $pfad."thumbs/";
    
$bilder = array();

# ab hier größere Bilder, so ähnlich geht es dann mit anderen Auflösungen weiter
// Ordner und Array 1280x800
    
$pfad1280 "".$pfad."1280/";
    
$bilder1280 = array();

// Ordner durchsuchen und in Array packen 1024
$handle opendir($tpfad);
    while(
$file readdir($handle)) {
           if(
preg_match("/.(jpg|gif)$/i"$file)){
              
$bilder[] = $file;
        }
    }
closedir($handle);
natsort($bilder);
$bilder array_values($bilder);
$gesamt count($bilder);

# Auch hier wird es wiederholt
// Ordner auslesen
    // Ordner durchsuchen und in Array packen 1280x800
    
$handle1280 opendir($pfad1280);
        while(
$file1280 readdir($handle1280)) {
            if(
preg_match("/.(jpg|gif)$/i"$file1280)){
                
$bilder1280[] = $file1280;
            }
        }
    
closedir($handle1280);
    
natsort($bilder1280);
    
$bilder1280 array_values($bilder1280);
    
$gesamt1280 count($bilder1280);
// Ordner auslesen Ende

// Letztes Bild der Anzeige
    
$end $start $maximal;

if(
$end $gesamt)$end $gesamt;

// Ausgabe Bilder
echo "   <div class=\"container\">\n";
    
// aktuelle Seite mit 30 bildern ausgeben
    
for($x $start$x $end$x++) {
    
// Infos zu den Bildern
        
$info getimagesize($pfad.$bilder[$x]);
        
$size round(filesize($pfad.$bilder[$x])/10241);
        
$laenge $info[0];
        
$hoehe $info[1];

# Wird wiederholt mit anderen Werten        
// Infos zu großen WPs
    // Infos zu den Bildern 1280x800
    
if (isset($bilder1280[$x])) {
        
$info1280 getimagesize($pfad1280.$bilder1280[$x]);
        
$size1280 round(filesize($pfad1280.$bilder1280[$x])/10241);
        
$laenge1280 $info1280[0];
        
$hoehe1280 $info1280[1];
        }
// Infos zu großen WPs Ende

# Zum testen habe ich die Ausgabe der Thumbnails entfernt. Es werden nur die Pfade dargestellt
// Ausgabe    
    
echo "    <div class=\"image-wp\">\n";
    echo 
"        <div class=\"image-box-wp\">\n";
    echo 
"            <a href=\"".$pfad.$bilder[$x]."\" target=\"_blank\">".$tpfad.$bilder[$x]."</a><br>\n";
    echo 
"            <a href=\"".$pfad.$bilder[$x]."\" target=\"_blank\">$laenge x $hoehe</a> || $size KB\n";
    
    
// Erweiterung Wallpaper
        
if (file_exists($pfad1280.$bilder[$x])) echo "\t\t\t<br /><a href=\"".$pfad1280.$bilder[$x]."\" target=\"_blank\">$laenge1280 x $hoehe1280</a> || $size1280 KB\n";
    
// Erweiterung Wallpaper Ende
    
    
echo "        </div>\n";
    echo 
"    </div>\n";
    }        
echo 
"   </div>\n";
// Ausgabe Bilder Ende

// Navigation etc... hier nicht relevant 
So sieht es aus. Verbesserungsvorschläge für den Code nehme ich gerne an, da ich weiß, dass es nicht perfekt ist
picco ist offline  
Alt 03.03.2010, 22:43  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

PHP-Code:
if (isset($bilder1280[$x])) { 
ist Quatsch, denn bei fehlenden Bildern wird der Schlüssel weiter inkrementell vergeben und Normal und Großversion haben dann andere Schlüssel.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 03.03.2010, 22:48  
Erfahrener Benutzer
 
Registriert seit: 25.08.2004
Beiträge: 128
picco
Standard

Was wäre denn eine bessere Variante? Die Wallpaper sind in verschiedenen Ordnern, aber die gleichen Bilder haben auch den gleichen Dateinamen.
picco ist offline  
Alt 03.03.2010, 22:53  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

file_exists + pfad + gemeinsamer Dateiname
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 04.03.2010, 01:15  
Erfahrener Benutzer
 
Registriert seit: 25.08.2004
Beiträge: 128
picco
Standard

Habe ich das nicht so gemacht?
picco ist offline  
Alt 04.03.2010, 09:29  
Erfahrener Benutzer
 
Benutzerbild von Andreas
 
Registriert seit: 22.04.2005
Beiträge: 391
Andreas ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Schau dir vielleicht wirklich mal die Funktionen/Statements hier an:

glob (in Verbindung mit dem Flag: GLOB_NOSORT)
array_slice
foreach

Damit solltest du ohne "isset" und ohne "file_exists" auskommen
Andreas ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Problem bei update mit array feldern fulltilt PHP Tipps 2010 6 13.02.2010 00:59
probleme mit array rodger PHP Tipps 2009 3 05.10.2009 00:39
Kategoriedaten rekursiv in Array bringen Schiedsrichter PHP Tipps 2008 2 10.12.2007 15:43
Probleme beim Array schreiben heohni PHP Tipps 2006 8 21.06.2006 12:58
Array Probleme Robstar PHP Tipps 2006 12 31.05.2006 01:39
ARRAY: alle möglichen Kombinationen Tentacle PHP Tipps 2006 13 12.05.2006 00:18
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
Probleme bei getimagesize PHP Tipps 2005 4 16.05.2005 11:40
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25
Probleme mit Array! PHP Tipps 2004 8 14.07.2004 21:34
Probleme mit Form / mehrdimensionales Array PHP Tipps 2004 3 05.07.2004 16:55

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
getimagesize rückgabewerte, getimagesize(), getimagesize, getimagesize php, php getimagesize array, getimagesize array, php getimagesize, php getimagesize problem bei grossen files, getimagesize mehrere bilder, getimagesize keine ausgabe?, getimagesize nur array, php getimagesize mehrere bilder, php getimagesize gibt array, php getimagesize schleife, div auslesen und in array packen, getimagesize schleife, getimagesize() in array, array php nav, php fotos ordner getimagesize, \alle bilder auf einer seite\thumbnail

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:28 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum