Avatar billede aproxi Nybegynder
10. juli 2005 - 13:24 Der er 44 kommentarer og
1 løsning

opendir problem

Jeg har et problem... eller rettere, jeg ved ikke hvordan jeg kan gøre det jeg vil.

Jeg har denne stump kode her... jeg vil have at den eks. kun viser/åbner det billeder hvor der eks. står 1 foran. eks. 1-billde.jpg

hvis der så ligger andre billeder der ikke har 1 foran skal den ikke vise/åbne dem.

Er dette noget som kan lade sig gøre?

_________________________________________________
$handle = opendir('/mappe/');
while (false !== ($data = readdir($handle))) {
    if ($data != "." && $data != "..") {
        // add the binary data stored in the string 'filedata'
        //--------------------------------------------------
        @$file = fopen ("/mappe/$data", "rb");
                if (!$file) {
                    echo "<font color=red>File $data failed.</font><br>";
                    #exit;
                }
                else {
                    if($f_eks==""){$f_eks="htm";}
                   
                    while (!feof ($file)) {
                        $filedata= fread ($file, 10000*1028);
                    }
                }
                @fclose($file);
Avatar billede hmortensen Nybegynder
10. juli 2005 - 13:41 #1
Du kan vel blot tjekke med substr()

if (substring($var, 1) == '1')
Avatar billede aproxi Nybegynder
10. juli 2005 - 13:46 #2
jeg har en variable som hedder $id

hvordan skal den så se ud i koden?
Avatar billede hmortensen Nybegynder
10. juli 2005 - 13:54 #3
Det må du jo bedst selv vide ?
Avatar billede aproxi Nybegynder
10. juli 2005 - 14:24 #4
jeg kan altså ikke få det til at virke
Avatar billede nielle Nybegynder
10. juli 2005 - 14:31 #5
$handle = opendir('/mappe/');
while (false !== ($data = readdir($handle)))
{
    if ($data != "." && $data != "..")
    {
        if (substring($data, 1) == '1') continue;

        // add the binary data stored in the string 'filedata'
        //--------------------------------------------------
        @$file = fopen ("/mappe/$data", "rb");
        if (!$file)
        {
            echo "<font color=red>File $data failed.</font><br>";
            #exit;
        }
        else
        {
            if ($f_eks == "") $f_eks="htm";

            while (!feof($file))
            {
                            $filedata = fread($file, 10000*1028);
            }
                }
                @fclose($file);
Avatar billede nielle Nybegynder
10. juli 2005 - 14:32 #6
Sludder:

$handle = opendir('/mappe/');
while (false !== ($data = readdir($handle)))
{
    if ($data != "." && $data != "..")
    {
        if (substring($data, 1) != '1') continue;

        // add the binary data stored in the string 'filedata'
        //--------------------------------------------------
        @$file = fopen ("/mappe/$data", "rb");
        if (!$file)
        {
            echo "<font color=red>File $data failed.</font><br>";
            #exit;
        }
        else
        {
            if ($f_eks == "") $f_eks="htm";

            while (!feof($file))
            {
                            $filedata = fread($file, 10000*1028);
            }
                }
                @fclose($file);
Avatar billede hmortensen Nybegynder
10. juli 2005 - 14:34 #7
nielle, copy/paste er farligt :)
Jeg havde fået skrevet substring, og det skal self være substr.
Avatar billede nielle Nybegynder
10. juli 2005 - 14:35 #8
:^)
Avatar billede nielle Nybegynder
10. juli 2005 - 14:37 #9
... plus at indekset skal være 0:

$handle = opendir('/mappe/');
while (false !== ($data = readdir($handle)))
{
    if ($data != "." && $data != "..")
    {
        if (substr($data, 0) != '1') continue;

        // add the binary data stored in the string 'filedata'
        //--------------------------------------------------
        @$file = fopen ("/mappe/$data", "rb");
        if (!$file)
        {
            echo "<font color=red>File $data failed.</font><br>";
            #exit;
        }
        else
        {
            if ($f_eks == "") $f_eks="htm";

            while (!feof($file))
            {
                            $filedata = fread($file, 10000*1028);
            }
                }
                @fclose($file);
Avatar billede hmortensen Nybegynder
10. juli 2005 - 14:38 #10
Ja, også det. Tror jeg skal holde mig væk i dag ;)
Avatar billede nielle Nybegynder
10. juli 2005 - 14:39 #11
Vi er vist *alle* ramt hårdt af varmen. Burde ligge på stranden i stedet for at sidde foran PC'en. ;^)
Avatar billede aproxi Nybegynder
10. juli 2005 - 14:48 #12
syntes ikke rigtigt det virker :(
Avatar billede nielle Nybegynder
10. juli 2005 - 14:51 #13
Den slags udsagn kan vi jo desværre ikke rigtigt bruge til ret meget... Hvad sker der? Hvad sker der ikke? Hvad havde du forventet der skete?
Avatar billede aproxi Nybegynder
10. juli 2005 - 14:55 #14
det var meningen den skulle gemme de billeder med 1- foran.

men den gemmer slet ikke noget, som den ikke kan genkende filen
Avatar billede aproxi Nybegynder
10. juli 2005 - 14:57 #15
det skulle parses til en zip fil... det virker uden vores "substr", men så gemmer den alt indholdet i min mappe og det vil jeg ikke have. kun billeder med $id(tallet)- foran
Avatar billede nielle Nybegynder
10. juli 2005 - 15:04 #16
$handle = opendir('/mappe/');
while (false !== ($data = readdir($handle)))
{
    if ($data != "." && $data != "..")
    {
        if (substr($data, 0) != '1') continue;

        $filename = "/mappe/$data";

        // add the binary data stored in the string 'filedata'
        //--------------------------------------------------
        $handle = fopen($filename, "rb");
        if (!$handle)
        {
            echo "<font color=red>File $data failed.</font><br>";
            exit;
        }
        else
        {
            $filedata = fread($handle, filesize($filename));
        }
        fclose($handle);
Avatar billede aproxi Nybegynder
10. juli 2005 - 15:19 #17
det gemmer slet ikke noget i zip filen.... det er somon den slet ikke kan identificere filerne
Avatar billede aproxi Nybegynder
10. juli 2005 - 15:20 #18
det må være noget galt med: if (substr($data, 0) != '1') continue;

ligeså snart jeg fjerner den så gammer den alt indhold fra mappen
Avatar billede nielle Nybegynder
10. juli 2005 - 15:22 #19
Måske:

if (substr($data, 0) != "1") continue;

i stedet.
Avatar billede nielle Nybegynder
10. juli 2005 - 15:24 #20
Nej, nej, selvfølgelig:

if (substr($data, 0, 1) != "1") continue;
Avatar billede aproxi Nybegynder
10. juli 2005 - 15:30 #21
jubii... det ser ud til at virke :)

men nu er der opstået et problem igen hehe... den tager også billeder der eks. hedder 7002billede istedet for 7-billede
Avatar billede nielle Nybegynder
10. juli 2005 - 15:33 #22
Hvor kom "7" nu pludselig fra?

Men bortset fra det, så tager den da nu både "1002billede" og "1-billede" fordi at de begge starter med "1". Det lyder som om at den ikke skal det. Men hvad er reglen så?
Avatar billede aproxi Nybegynder
10. juli 2005 - 15:38 #23
okay... jeg har sat en variable ind: if (substr($data, 0, 1) != "$id") continue;

den skal kun zippe filer der hedder eks 7/$id og så - bagefter... ikke bare alle der starter med 7/$id
Avatar billede nielle Nybegynder
10. juli 2005 - 15:39 #24
if (substr($data, 0, 2) != "$id-") continue;
Avatar billede aproxi Nybegynder
10. juli 2005 - 15:46 #25
det har jeg selv prøvet.. der laver den det samme nummer som før... den putter slet ikke noget i zipfilen
Avatar billede aproxi Nybegynder
10. juli 2005 - 15:48 #26
nu virker det... jeg glemte selvfølgelig: if (substr($data, 0, 2) brugte if (substr($data, 0, 1) istedet...

det må være varmen :)

læg et svar
Avatar billede nielle Nybegynder
10. juli 2005 - 15:50 #27
Øjeblik, jeg er ikke sikker på at vi er helt færdige.

Hvad kan der ligge i din $id? Kan der f.eks. lægge sådan noget som "13" eller er det altid præcist ét tegn?
Avatar billede aproxi Nybegynder
10. juli 2005 - 15:57 #28
det kan sagtens være med flere tal
Avatar billede nielle Nybegynder
10. juli 2005 - 16:03 #29
Ja, så dur den nuværende løsning nemlig ikke. Prøv med:

if (strstr($data, "$id-") != 0) continue;
Avatar billede aproxi Nybegynder
10. juli 2005 - 16:09 #30
nej det virker ikke... nu ligger den hele mappens indhold ind
Avatar billede nielle Nybegynder
10. juli 2005 - 16:14 #31
Min fejl, det skulle have været:

if (strpos($data, "$id-") != 0) continue;
Avatar billede hmortensen Nybegynder
10. juli 2005 - 16:15 #32
nielle, ved ik om jeg sover nu, men hvad med:
if (substr($data, 0, strlen($id)) == $id)
Avatar billede nielle Nybegynder
10. juli 2005 - 16:17 #33
Jep, du sover lige nu. Der skal nemlig være en bindestreg efter:

if (substr($data, 0, strlen($id)+1) == "$id-") continue;
Avatar billede nielle Nybegynder
10. juli 2005 - 16:19 #34
... problemet er bare at jeg ikke er helt sikker på om $id er et tal eller en streng i det aktuelle tilfælde, og derfor satser jeg på en løsning hvor den castes til en streng under alle omstændighjeder.
Avatar billede aproxi Nybegynder
10. juli 2005 - 16:25 #35
ja det virker stadig ikke :( (den forbandede varme)

den ligger stadig alt fra mappen ind
Avatar billede hmortensen Nybegynder
10. juli 2005 - 16:25 #36
Det kunne tyde på at den kommer fra get/post, og så vil den være en streng.
strstr() søger i hele strengen, og kan derfor ikke bruges ?
Avatar billede nielle Nybegynder
10. juli 2005 - 16:35 #37
Koden fra 10/07-2005 16:14:26 burde virke.
Avatar billede aproxi Nybegynder
10. juli 2005 - 16:43 #38
det gør den ikke :(
Avatar billede nielle Nybegynder
10. juli 2005 - 16:45 #39
Lægger den alle filerne til i zip-filen, eller lægger den ingen af dem til?
Avatar billede aproxi Nybegynder
10. juli 2005 - 16:47 #40
den lægger alle
Avatar billede nielle Nybegynder
10. juli 2005 - 16:50 #41
Prøv denne udvidelse:

$pos = strpos($data, "$id-");
if ($pos === false) continue;
if ($pos != 0) continue;
Avatar billede aproxi Nybegynder
10. juli 2005 - 16:54 #42
det ser ud til at the var tricket :), for nu virker det
Avatar billede aproxi Nybegynder
10. juli 2005 - 16:55 #43
smid svar :)
Avatar billede nielle Nybegynder
10. juli 2005 - 16:58 #44
Ok, nu er jeg rimeligt sikker på at vi kom i mål. :^)

.. og et svar. :^)
Avatar billede aproxi Nybegynder
10. juli 2005 - 17:53 #45
ja det tog sin tid.. og jeg er taknemmelig for al den hjælp :)

kom så ud i solen! :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester