PDA

Bekijk Volledige Versie : [PHP] Kijken of bestand bestaat?



Paul Sidler
15/06/04, 17:25
Hoi NIWS,

Ik heb net met wat vlieg, plak en lijmwerk een MySQL db gevuld met
productinformatie. Veel van deze producten hebben een afbeelding, die heb ik
hier op cd staan. Maar niet allemaal. De bestandsnamen van de afbeeldingen
komen overeen met de artikelnummers, maar zijn alsvolgt opgemaakt:

artikelnr_andernr.jpg

Ik ben bekend met de functie 'file exists' in PHP, maar hoe zit dat met
'andernr'? Dat weet ik namelijk niet. Hoe moet ik het zo aanpakken dat het
product-toon script even kijkt of er toevallig een afbeelding
'artikelnr_andernr.jpg' bestaat (en hoe dat dan heet), en als die niet
bestaat hij gewoon geen <IMG SRC="... typt?

Dus iets als:

if($artnr.jpg bestaat)
print("<IMG SRC="$artnr_**.jpg">");

Alvast bedankt voor jullie hulp.

>Paul

Rene Pijlman
15/06/04, 17:35
Paul Sidler:
>artikelnr_andernr.jpg
>
>Ik ben bekend met de functie 'file exists' in PHP, maar hoe zit dat met
>'andernr'? Dat weet ik namelijk niet. Hoe moet ik het zo aanpakken dat het
>product-toon script even kijkt of er toevallig een afbeelding
>'artikelnr_andernr.jpg' bestaat (en hoe dat dan heet), en als die niet
>bestaat hij gewoon geen <IMG SRC="... typt?
>
>Dus iets als:
>
>if($artnr.jpg bestaat)
> print("<IMG SRC="$artnr_**.jpg">");

Volgens mij geef je zelf de oplossing aan. Je construeert de bestandsnaam
aan de hand van de gegevens in de database en je test of dat bestand
bestaan. Wat is het probleem?

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

Michiel de Roo
15/06/04, 17:55
Paul Sidler wrote:
> Hoi NIWS,
>
> Ik heb net met wat vlieg, plak en lijmwerk een MySQL db gevuld met
> productinformatie. Veel van deze producten hebben een afbeelding, die heb ik
> hier op cd staan. Maar niet allemaal. De bestandsnamen van de afbeeldingen
> komen overeen met de artikelnummers, maar zijn alsvolgt opgemaakt:
>
> artikelnr_andernr.jpg
>
> Ik ben bekend met de functie 'file exists' in PHP, maar hoe zit dat met
> 'andernr'? Dat weet ik namelijk niet. Hoe moet ik het zo aanpakken dat het
> product-toon script even kijkt of er toevallig een afbeelding
> 'artikelnr_andernr.jpg' bestaat (en hoe dat dan heet), en als die niet
> bestaat hij gewoon geen <IMG SRC="... typt?
>
> Dus iets als:
>
> if($artnr.jpg bestaat)
> print("<IMG SRC="$artnr_**.jpg">");
>
> Alvast bedankt voor jullie hulp.
>
>
>>Paul
>

Je kunt alle filenamen inlezen met opendir/readdir en dan met strpos
testen of het artikelnummer erbij zit.

http://nl.php.net/manual/nl/function.opendir.php
http://nl.php.net/manual/nl/function.strpos.php

Michiel.

Paul Sidler
15/06/04, 19:55
"Rene Pijlman" <reply.in.the.newsgroup@my.address.is.invalid> schreef in
bericht news:5b5uc0l7csrk2r9v4v9pc072sk454tfisa@4ax.com...
> Paul Sidler:
> >artikelnr_andernr.jpg
> >
> >Ik ben bekend met de functie 'file exists' in PHP, maar hoe zit dat met
> >'andernr'? Dat weet ik namelijk niet. Hoe moet ik het zo aanpakken dat
het
> >product-toon script even kijkt of er toevallig een afbeelding
> >'artikelnr_andernr.jpg' bestaat (en hoe dat dan heet), en als die niet
> >bestaat hij gewoon geen <IMG SRC="... typt?
> >
> >Dus iets als:
> >
> >if($artnr.jpg bestaat)
> > print("<IMG SRC="$artnr_**.jpg">");
>
> Volgens mij geef je zelf de oplossing aan. Je construeert de bestandsnaam
> aan de hand van de gegevens in de database en je test of dat bestand
> bestaan. Wat is het probleem?

Het probleem is dat er iets áchter de bestandsnaam staat dat ik niet weet.
bv. met artikelnummer 12456:

12456_12.jpg

die _12 is dus een onbekende factor...welke overigens altijd wel tussen de 0
en 99 zit. Ik ga eens wat met de tip van Michiel de Roo proberen.

>Paul

Paul Sidler
15/06/04, 21:05
"Michiel de Roo" <yourlove@welovespam.nl> schreef:
> Je kunt alle filenamen inlezen met opendir/readdir en dan met strpos
> testen of het artikelnummer erbij zit.
>
> http://nl.php.net/manual/nl/function.opendir.php
> http://nl.php.net/manual/nl/function.strpos.php

Bedoel je zoiets?

<?php

$artikelnummer = "12.345";

if ($dir = @opendir("afbeeldingen")) {
while (($file = readdir($dir)) !== false) {

if (strpos($file, $artikelnummer) !== false)
{
print ("<IMG SRC=\"".$file."\">");
}

}
closedir($dir);
}

?>

Dat werkt wel, eigenlijk...! Klopt de code ook een beetje?

Groeten,
Paul

Daniel Tryba
15/06/04, 21:25
Paul Sidler <paul@imagecmopany.nl> wrote:
> $artikelnummer = "12.345";

> if (strpos($file, $artikelnummer) !== false)

Dan mag bv "12.345" dus overal in de string voorkomen, volgens je
verhaal mag het alleen op positie 0 (===0 dus ip !==false)

> {
> print ("<IMG SRC=\"".$file."\">");

De filenaam dient urlencoded te zijn, stel je bv voor dat er quotes of
spaties in staan...

BTW je escaping in de print kan heel wat makkelijker... zoek eens in de
manual naar de betekenis van " en ' in strings en het gevolg van deze op
het expanden van variabelen (dat scheelt je in 6 van de 25 bovenstaande
chars).

BTW je domein heb je verkeert gespeld... daarmee gebruik je een
potentieel mogelijk valide domein dat niet van jou is... Speciaal voor
dit soort gevallen bestaat er al jaren het tld invalid.

--

Daniel Tryba

Michiel de Roo
15/06/04, 22:55
Paul Sidler wrote:
> "Michiel de Roo" <yourlove@welovespam.nl> schreef:
>
>>Je kunt alle filenamen inlezen met opendir/readdir en dan met strpos
>>testen of het artikelnummer erbij zit.
>>
>>http://nl.php.net/manual/nl/function.opendir.php
>>http://nl.php.net/manual/nl/function.strpos.php
>
>
> Bedoel je zoiets?
>
> <?php
>
> $artikelnummer = "12.345";
>
> if ($dir = @opendir("afbeeldingen")) {
> while (($file = readdir($dir)) !== false) {
>
> if (strpos($file, $artikelnummer) !== false)
> {
> print ("<IMG SRC=\"".$file."\">");
> }
>
> }
> closedir($dir);
> }
>
> ?>
>
> Dat werkt wel, eigenlijk...! Klopt de code ook een beetje?
>

Die lijkt me uitstekend !!

Michiel.