PHP Dateiendungen prüfen und entsprechende Bilder ausgeben

Wuschelchen

Lt. Junior Grade
Registriert
Sep. 2007
Beiträge
256
Hallo!

Ich habe folgenden Code:

Code:
<?php

	function check() {
		//Prüfung der Dateiendung
			if(file_exists('pictures/objekte/'.$zeile[0].'/1.jpg'))
				{ 
					$path = pathinfo('pictures/objekte/'.$zeile[0].'/1.jpg');
					$endung = $path[extension];
				}
			if(file_exists('pictures/objekte/'.$zeile[0].'/1.png'))
				{
					$path = pathinfo('pictures/objekte/'.$zeile[0].'/1.JPG');
					$endung = $path[extension];
				}
			if(file_exists('pictures/objekte/'.$zeile[0].'/1.gif'))
				{
					$path = pathinfo('pictures/objekte/'.$zeile[0].'/1.gif');
					$endung = $path[extension];
				}
			if(file_exists('pictures/objekte/'.$zeile[0].'/1.jpg'))
				{ 
					$path = pathinfo('pictures/objekte/'.$zeile[0].'/1.GIF');
					$endung = $path[extension];
				}
			if(file_exists('pictures/objekte/'.$zeile[0].'/1.png'))
				{
					$path = pathinfo('pictures/objekte/'.$zeile[0].'/1.png');
					$endung = $path[extension];
				}
			if(file_exists('pictures/objekte/'.$zeile[0].'/1.gif'))
				{
					$path = pathinfo('pictures/objekte/'.$zeile[0].'/1.PNG');
					$endung = $path[extension];
				}
		// Ende der Prüfung
	}

	
	echo "<br>";

	$open = fopen ( "freiewo.csv", "r");
	
	if( $y == '1' ) 
		{
			while ( $zeile = fgetcsv( $open, 500, ';') )
				{
					if ($zeile[20] == 'x' && $zeile[21] == 'x' ) 
						{
							// WOHNUNGEN
							
							echo "<div id='wohnungen'>";
							echo "<table>";
							echo "<th colspan='3'><u>".$zeile[8]." - ".$zeile[3]." (".$zeile[5]." - ".$zeile[4].")</u></th>";
							echo "<tr>";
							echo "<th rowspan='16' class='foto'>";
								check();
								echo "".$endung."";
								if(file_exists('pictures/objekte/'.$zeile[0].'/1.'.$endung.''))
									{
										echo "<a href='pictures/objekte/".$zeile[0]."/1.".$endung."' target='_blank'><img src='pictures/objekte/".$zeile[0]."/1.".$endung."' width='100' height='100' border='0'></img></a><br>";
									}
								else
									{
										echo "<img src='pictures/objekte/nopicture.png' width='100' height='100'></img>";
									}
				
								if(file_exists('pictures/objekte/'.$zeile[0].'/2.'.$endung.''))
									{
										echo "<a href='pictures/objekte/".$zeile[0]."/2.".$endung."' target='_blank'><img src='pictures/objekte/".$zeile[0]."/2.".$endung."' width='100' height='100' border='0'></img></a><br>";
									}
								else
									{
										echo "<img src='pictures/objekte/nopicture.png' width='100' height='100'></img>";
									}
								
								if(file_exists('pictures/objekte/'.$zeile[0].'/3.'.$endung.''))
									{
										echo "<a href='pictures/objekte/".$zeile[0]."/3.".$endung."' target='_blank'><img src='pictures/objekte/".$zeile[0]."/3.".$endung."' width='100' height='100' border='0'></img></a><br>";
									}
								else
									{
										echo "<img src='pictures/objekte/nopicture.png' width='100' height='100'></img>";
									}
							echo "</th>";
							echo "<tr>";
							echo "<td class='beschreibung'>verfügbar ab:</td>";											// verfügbar ab
							echo "<td class='inhalt'>".$zeile[6]."</td>";
							echo "</tr>";
							echo "<tr>";
							echo "<td class='beschreibung'>Lage:</td>";												// Lage
							echo "<td class='inhalt'>".$zeile[9]."</td>";
							echo "</tr>";
							echo "<tr>";
							echo "<td class='beschreibung'>m²:</td>";												// m²
							echo "<td class='inhalt'>".$zeile[7]." m²</td>";
							echo "</tr>";
							echo "<tr>";
							echo "<td class='beschreibung'>Balkon:</td>";												// Balkon
								if ( $zeile[11] == 'j' || $zeile[11] =='J' ) { echo "<td class='inhalt'><input type='checkbox' disabled checked></td>"; }
								else { echo "<td class='inhalt'><input type='checkbox' disabled></td>"; }
							echo "</tr>";
							echo "<tr>";
							echo "<td class='beschreibung'>Keller:</td>";												// Keller
								if ( $zeile[10] == 'j' || $zeile[10] =='J' ) { echo "<td class='inhalt'><input type='checkbox' disabled checked></td>"; }
								else { echo "<td class='inhalt'><input type='checkbox' disabled></td>"; }
							echo "</tr>";
							echo "<tr>";
							echo "<td class='beschreibung'>Abstellraum:</td>";											// Abstellraum
								if ( $zeile[12] == 'j' || $zeile[12] =='J' ) { echo "<td class='inhalt'><input type='checkbox' disabled checked></td>"; }
								else { echo "<td class='inhalt'><input type='checkbox' disabled></td>"; }
							echo "</tr>";
							echo "<tr>";
							echo "<th colspan='2'><hr></th>";														// Trennlinie
							echo "</tr>";
							echo "<tr>";
							echo "<td class='beschreibung'>WBS erforderlich:</td>";										// WBS erforderlich
								if ( $zeile[13] == 'j' || $zeile[13] =='J' ) { echo "<td class='inhalt'><input type='checkbox' disabled checked></td>"; }
								else { echo "<td class='inhalt'><input type='checkbox' disabled></td>"; }
							echo "</tr>";
							echo "<tr>";
							echo "<th colspan='2'><hr></th>";														// Trennlinie
							echo "</tr>";
							echo "<tr>";
							echo "<td class='beschreibung'>Kaltmiete (KM):</td>";
							echo "<td class='inhalt'>".$zeile[14]."</td>";												// Kaltmiete
							echo "</tr>";
							echo "<tr>";
							echo "<td class='beschreibung'>Nebenkosten (NK):</td>";										// Nebenkosten
							echo "<td class='inhalt'>".$zeile[15]."</td>";
							echo "</tr>";
							echo "<tr>";
							echo "<td class='beschreibung'>Heizkosten (HK):</td>";										// Heizkosten
							echo "<td class='inhalt'>".$zeile[16]."</td>";
							echo "</tr>";
							echo "<tr>";
							echo "<td class='beschreibung'>Kaution:</td>";											// Kaution
							echo "<td class='inhalt'>".$zeile[18]."</td>";
							echo "</tr>";
							echo "<tr>";
							echo "<th colspan='2'><hr></th>";														// Trennlinie
							echo "</tr>";
							echo "<tr>";
							echo "<td class='beschreibung'>Sonstiges:</td>";											// Sonstiges
							echo "<td class='inhalt'>".$zeile[19]."</td>";
							echo "</tr>";
							echo "</table>";
							echo "</div>";
						}
				}
		}

Das Problem ist nur das er mir leider keine Bilder ausgibt!
Wie bekomm ich das hin das er für jedes Bild eine Abfrage startet wie die Endung lautet?

Weil manche Bilder liegen als *.jpg vor, andere als *.gif oder *.bmp!

Im moment zeigt er gar keine Bilder an -.-
 
das hier dürfte etwas für dich sein -> http://de.php.net/substr

pack den dateinamen in eine variable, am besten wird das wohl mit einem array gehen ... und den array nimmst du dann mittels substr() in die mangel, etwa so:

PHP:
// strtolower() wandelt alles komplett in kleinbuchstaben um, da die endung auch in großbuchstaben geschrieben sein kann
// substr() gibt in dem fall unten die letzten 4 Zeichen des bildnamens zurück
// file_exists() prüft ob das File existiert

if ( strtolower( substr( file_exists( $pic_name, -4 ) ) ) == '.jpg' ) {
 $filetype = 'JPG-File';
} elseif ( strtolower( substr( file_exists( $pic_name, -4 ) ) ) == '.bmp' ) {
 $filetype = 'BMP-File';
} elseif ( strtolower( substr( file_exists( $pic_name, -4 ) ) ) == '.png' ) {
 $filetype = 'PNG-File';
}

Wenn du mit deiner Funktion weitermachen willst, übergebe ihr beim Aufruf auch den aktuellen Wert von $zeile, da die sonst in der Funktion nicht verfügbar ist. Außerdem sollte in deine Funktion ganz zum Schluß ein "return $endung;" rein, sonst ist die Variable nicht verfügbar. Abrufen kannst du den Wert von Endung dann mit "echo $filetype;" ...
PHP:
function check($z) {
 ....
 return $endung;
}

$filetype = check($zeile[0]);
 
Zuletzt bearbeitet:
Irgendwie bin ich grad verwirrt =)
Ergänzung ()

Jetzt mal ein ganz anderer Ansatz:

Code:
function check() {
//Prüfung der Dateiendung
		$file1 = "pictures/objekte/".$zeile[0]."/1";
		$file2 = "pictures/objekte/".$zeile[0]."/2";
		$file3 = "pictures/objekte/".$zeile[0]."/3";
		$de = array (".jpg",".JPG",".jpeg",".JPEG",".bmp",".BMP",".png",".PNG");
		$counter = 0;
		while($counter < 7)
			{
				while(pathinfo($file1['extension'] == $de[$c1])
					{
						return $end1 = $de[$c1];
						$c1++;
					}
				while(pathinfo($file2['extension'] == $de[$c2])
					{
						return $end2 = $de[$c2];
						$c2++;
					}
				while(pathinfo($file3['extension'] == $de[$c3])
					{
						return $end3 = $de[$c3];
						$c3++;
					}
// Ende der Prüfung
		}
}
 
Zuletzt bearbeitet:
Hallo Wuschelchen,

die Funktion check() kennt die Variable $zeile[0] nicht.
Genauso wenig kennt der Rest vom Programm die Variable $endung, die in der Funktion check() erzeugt wird.

Das würde übrigens auch von PHP bemängelt werden, wenn man es nicht ausgestellt hat.

Zum Geltungsbereich von Variablen:
http://php.net/manual/de/language.variables.scope.php

Das hat Matthias2x auch schon geschrieben, ich wollte es nur noch einmal verdeutlichen.

Hier etwas, das funktionieren könnte, vollkommen ungetestet:
PHP:
function getImgHtml($pfad_bis_bild, $bild, $bild_existiert_nicht = "pictures/objekte/nopicture.png") {
    $dateiendungen = array(".jpg", ".gif", ".png");
    foreach ($dateiendungen as $dateiendung) {
        $gesamtpfad = sprintf("%s/%s%s", $pfad_bis_bild, $bild, $dateiendung);
        if (file_exists($gesamtpfad)) {
            return "<a href='$gesamtpfad' target='_blank'><img src='$gesamtpfad' width='100' height='100' border='0'></a>";
        }
    }
    return "<img src='$bild_existiert_nicht' width='100' height='100'>";
}

echo "<br>";

$open = fopen("freiewo.csv", "r");

if ($y == '1') {
    while ($zeile = fgetcsv($open, 500, ';')) {
        if ($zeile[20] == 'x' && $zeile[21] == 'x') {
            // WOHNUNGEN

            echo "<div id='wohnungen'>";
            echo "<table>";
            echo "<th colspan='3'><u>" . $zeile[8] . " - " . $zeile[3] . " (" . $zeile[5] . " - " . $zeile[4] . ")</u></th>";
            echo "<tr>";
            echo "<th rowspan='16' class='foto'>";
            echo getImgHtml("pictures/objekte/". $zeile[0], 1);
            echo getImgHtml("pictures/objekte/". $zeile[0], 2);
            echo getImgHtml("pictures/objekte/". $zeile[0], 3);
            echo "</th>";
            echo "<tr>";
            echo "<td class='beschreibung'>verfügbar ab:</td>"; // verfügbar ab
            echo "<td class='inhalt'>" . $zeile[6] . "</td>";
            echo "</tr>";
            echo "<tr>";
            
            //... mehr Code ...
        }
    }
}
 
Zurück
Oben