Als file niet bestaat dan andere foto weergeven
Ik heb in mijn tabel een foto staan. Als hij deze niet kan vinden op de website dan moet hij een standaard foto laten zien alleen doet hij dat niet.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$filename = "http://".$_SERVER['SERVER_NAME']."/img-nieuws/thumb/".$row['nieuws_foto']."";
if (!file_exists($filename)) {
echo '<img src="http://".$_SERVER['SERVER_NAME']."img-nieuws/thumb/nieuws_foto.png">';
}
else{
echo "<img src=\"".$filename."\" alt=\"test\">";
}
?>
$filename = "http://".$_SERVER['SERVER_NAME']."/img-nieuws/thumb/".$row['nieuws_foto']."";
if (!file_exists($filename)) {
echo '<img src="http://".$_SERVER['SERVER_NAME']."img-nieuws/thumb/nieuws_foto.png">';
}
else{
echo "<img src=\"".$filename."\" alt=\"test\">";
}
?>
Gewijzigd op 27/03/2013 11:45:42 door Kees Mulder
Dat komt door regel 5.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$filename = 'http://'.$_SERVER['SERVER_NAME'].'/img-nieuws/thumb/'.$row['nieuws_foto'];
if (!file_exists($filename)) {
echo '<img src="http://'.$_SERVER['SERVER_NAME'].'img-nieuws/thumb/nieuws_foto.png">';
}
else{
echo '<img src="'.$filename.'" alt="test">';
}
?>
$filename = 'http://'.$_SERVER['SERVER_NAME'].'/img-nieuws/thumb/'.$row['nieuws_foto'];
if (!file_exists($filename)) {
echo '<img src="http://'.$_SERVER['SERVER_NAME'].'img-nieuws/thumb/nieuws_foto.png">';
}
else{
echo '<img src="'.$filename.'" alt="test">';
}
?>
Ik heb je script overgenomen maar hij blijft de foto niet vinden op de server ondanks dat ze er wel staan. Waar kan het nog anders aan liggen? Zou het evt. kunnen omdat het een png is ipv van jpg file.
Gewijzigd op 27/03/2013 12:28:11 door Kees Mulder
Er ontbreekt een slash na de hostnaam in:
$_SERVER['SERVER_NAME'].'img-nieuws/thumb/nieuws_foto.png"
$_SERVER['SERVER_NAME'].'img-nieuws/thumb/nieuws_foto.png"
Die heb ik ook al aangepast maar dat geeft niet de oplossing. Het lijkt dat hier ergens wat fout zit:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$filename = 'http://'.$_SERVER['SERVER_NAME'].'/img-nieuws/thumb/'.$row['nieuws_foto'];
if (!file_exists($filename))
?>
$filename = 'http://'.$_SERVER['SERVER_NAME'].'/img-nieuws/thumb/'.$row['nieuws_foto'];
if (!file_exists($filename))
?>
Klopt: je controleert nu met file_exists() een URL in $filename. Dit moet een lokaal pad worden.
Je kunt het overigens ook aan de webserver overlaten door een 404 af te vangen met een aparte afbeelding.
Je kunt het overigens ook aan de webserver overlaten door een 404 af te vangen met een aparte afbeelding.
Ik probeer nu het volgende om het te testen:
En dan geeft hij aan "falsche". Als ik de regel in chrome invul staat de foto er gewoon...
Code (php)
1
2
3
2
3
<?php
echo file_exists("http://www.website.nl/img-nieuws/thumb/nieuws_foto.png") ? "true" : "false";
?>
echo file_exists("http://www.website.nl/img-nieuws/thumb/nieuws_foto.png") ? "true" : "false";
?>
En dan geeft hij aan "falsche". Als ik de regel in chrome invul staat de foto er gewoon...
Gewijzigd op 27/03/2013 12:53:28 door Kees Mulder
Het is niet "falsche" maar false.
De functie file_exists verwacht een lokaal pad en niet een URL (http://www. ...). Jij moet dus in plaats van een URL het lokale pad van de afbeelding gebruiken. Ik weet niet of je op een eigen server of shared host draait, maar een lokaal pad is zoiets als "/home/kees/public_html/img-nieuws/thumb/nieuws_foto.png".
Ik kan vanuit hier het pad natuurlijk niet zien, maar de document root kun je achterhalen met $_SERVER['DOCUMENT_ROOT']. Je zou dit eens kunnen proberen:
De functie file_exists verwacht een lokaal pad en niet een URL (http://www. ...). Jij moet dus in plaats van een URL het lokale pad van de afbeelding gebruiken. Ik weet niet of je op een eigen server of shared host draait, maar een lokaal pad is zoiets als "/home/kees/public_html/img-nieuws/thumb/nieuws_foto.png".
Ik kan vanuit hier het pad natuurlijk niet zien, maar de document root kun je achterhalen met $_SERVER['DOCUMENT_ROOT']. Je zou dit eens kunnen proberen:
Code (php)
1
2
3
2
3
<?php
echo file_exists($_SERVER['DOCUMENT_ROOT'] . '/img-nieuws/thumb/nieuws_foto.png') ? 'true' : 'false';
?>
echo file_exists($_SERVER['DOCUMENT_ROOT'] . '/img-nieuws/thumb/nieuws_foto.png') ? 'true' : 'false';
?>




