Beste,

voor de website van mijn moeder heb ik dit stukje code nodig:
<?php
$foto="../../bloemenFotos/$latijn.jpg";
if (file_exists($foto)){
echo "<br><img src=\"../../bloemenFotos/$latijn.jpg\">";
}
?>
Dit werkt goed, op voorwaarde dat de extensie van de foto .jpg is en niet .JPG, want in het tweede geval vindt hij de foto niet. Is hier een eenvoudige oplossing voor zodat hij .JPG bestanden wel vindt? Het probleem is dat ons nieuw fototoestel de foto's een extensie in hoofdletters zet en het vorige in kleine letters. Ik voel er persoonlijk niet veel voor om ze allemaal één voor één te veranderen.

Alvast bedankt
[php]strtolower[/php] ?

Oja, en weet niet waar die $latijn.jpg vandaan komt, maar vars. halen we buiten quotes. Dus:

<?php
echo 'Ik ben een '.$var.' ja echt waar.';
?>

in plaats van:

<?php
echo 'Ik ben een $var , ja echt waar.';
?>

Ook in je locatieverwijzingen
Ja, klopt, beetje slordig van mij. Maar dat lost het probleem niet op. Dit heb ik nu: <?php
$foto="../../bloemenFotos/".$latijn.".jpg";
if (file_exists($foto)){
echo "<br><img src=\"../../bloemenFotos/".$latijn.".jpg\">";
}
?>

Wat bedoel je nu met die strtolower? Ik zie niet hoe ik dit kan gebruiken. Of bedoel je dat ik een script moet maken dat alle extensie's automatisch naar kleine letters zet?
heel netjes is het niet en er bestaan vast betere manieren, maar wat je kan doen:
<?php
// haal alle bestanden uit de map flowerpower op
$files = glob('../../bloemenFotos/*');

// zet alle namen naar niet-hoofdlettertjes
$files = array_map('strtolower', $files);

// zet alleen de bestandsnamen neer
$files = array_map('basename', $files);

// naam van foto die we nodig hebben (met kleine letters)
$foto= strtolower($latijn . ".jpg");

// checken of de foto betaat in de array, zo ja, dan bestaat de foto..
if (in_array($foto, $files)) {
echo "<br><img src=\"../../bloemenFotos/".$latijn.".jpg\">";
}
?>
Als ik de volledige map uitlees ben ik natuurlijk veel flexibeler... Maar dit werkt niet omdat:
- de variabele $latijn bevat hoofdletters, als deze naar kleine letters worden gezet bv "Aster" en op het einde wordt dat "aster.jpg" dan geeft hij geen foto.
- hetzelfde geldt eigenlijk voor de extensie, zolang de bestandsnaam niet is aangepast naar een extensie met kleine letters mag ik deze niet zomaar veranderen in het script, het resulteert in het niet vinden van de foto.

Ik heb wel gemerkt dat zowel mijn systeem als dat van Terence perfect werkt op mijn eigen servertje (127.0.0.1), daar zijn die hoofdletters blijkbaar geen probleem. Dat doet mij vermoeden dat het ergens instelbaar is?
ahm.... als je... bij uploaden images lowercase maakt..... dan kan je ze ook lower case uitlezen?
om mezelf niet te veel werk te bezorgen laat ik de foto's opladen via ftp, ik denk niet dat zoiets mogelijk is dan, maar uiteindelijk zal ik zoiets moeten verzinnen, want het ziet ernaar uit dat het anders behoorlijk ingewikkeld gaat worden. Bestaat er ergens een goed upload script waar je een hele hoop foto's tegelijk kan uploaden (of toch de opdracht geven voor een hele hoop tegelijk), het gaar namelijk over meer dan 700 foto's, allemaal één voor één uploaden...
700 doe je met ftp.
of anders iets als
<?php
$foto="../../bloemenFotos/".$latijn.".jpg";
if (file_exists($foto))
{
...
}
else
{
$foto="../../bloemenFotos/".$latijn.".JPG";
if (file_exists($foto))
{
...
}
}
?>

Trouwens al eens naar de functie pathinfo gekeken?
Zeer handig voor het detecteren van extensies en zo.
Hans schreef op 02.07.2009 09:01
Als ik de volledige map uitlees ben ik natuurlijk veel flexibeler... Maar dit werkt niet omdat:
- de variabele $latijn bevat hoofdletters, als deze naar kleine letters worden gezet bv "Aster" en op het einde wordt dat "aster.jpg" dan geeft hij geen foto.
- hetzelfde geldt eigenlijk voor de extensie, zolang de bestandsnaam niet is aangepast naar een extensie met kleine letters mag ik deze niet zomaar veranderen in het script, het resulteert in het niet vinden van de foto.

Ik heb wel gemerkt dat zowel mijn systeem als dat van Terence perfect werkt op mijn eigen servertje (127.0.0.1), daar zijn die hoofdletters blijkbaar geen probleem. Dat doet mij vermoeden dat het ergens instelbaar is?

ik laat $latijn in zijn huidige waarde, maar stop de lowercase in een andere variable. Ik check met alleen maar lowercasewaardes, waardoor het nooit een probleem zal zijn wanneer er hoofdletters zijn.
Emmanuel Delay schreef op 02.07.2009 11:43
of anders iets als
<?php
$foto="../../bloemenFotos/".$latijn.".jpg";
if (file_exists($foto))
{
...
}
else
{
$foto="../../bloemenFotos/".$latijn.".JPG";
if (file_exists($foto))
{
...
}
}
?>

Trouwens al eens naar de functie pathinfo gekeken?
Zeer handig voor het detecteren van extensies en zo.


Waarom niet elseif:

<?php
$foto="../../bloemenFotos/".$latijn.".jpg";
if (file_exists($foto))
{
...
}
elseif (($foto="../../bloemenFotos/".$latijn.".JPG") && file_exists($foto))

{
...
}
else{
// Errormessage ofzo?
}
?>

Zoiets?
Of gaat dit ten strengste afgeraden worden ivm met variabele aanmaken in if?

Reageren