Avatar billede nellemuz Nybegynder
08. november 2005 - 20:27 Der er 11 kommentarer og
1 løsning

Fejl når der tilføjes mapper til billedgalleri

Hejsa

Vil i ikke godt hjælpe mig?

Jeg har et problem, der ærgrer mig ekstremt. Igår fik jeg sat dette billedgalleri, som skulle løse en hel del af mine problemer som jeg havde med det gamle jeg programmerede. Problemet er her, at billedgalleriet skulle kunne indeholde mere end 1 menupunkt og en masse underpunkter ved at jeg tilføjer mapper til pictures mappen. Jeg tilføjede først mappen michelle - den godtog den. Så tilføjede jeg mappen Wallpapers - og så kom fejlen. Den vil gerne vise mappen michelle og kommer nu med fejlen Warning: getimagesize(pictures/Wallpapers): failed to open stream: No such file or directory in H:\Web Sites\Nelly\images.php on line 28.

Linie 28 i images.php indeholder følgende:

    $size = getimagesize($dir.$file);

Kan i finde fejlen? Billedgalleriet ligger under galleri på www.nellys.tk .

Håber på svar fra dig - Michelle Nielsen!
Avatar billede jakobdo Ekspert
08. november 2005 - 20:30 #1
getimagesize(pictures/Wallpapers)
Mangler du ikke .jpg?
Eller er det et dir du prøvet at åbne?
Avatar billede nellemuz Nybegynder
08. november 2005 - 20:31 #2
det er et dir
Avatar billede jakobdo Ekspert
08. november 2005 - 20:34 #3
DU kan ikke bruge getimagesize på et dir!
Det skal kaldes på en billede fil!
Avatar billede nellemuz Nybegynder
08. november 2005 - 20:36 #4
hvorfor virker det så når jeg tilføjer den anden mappe? Der virker det ganske fint
¨
Skal jeg sende den bid af koden hvor det indgår?
Avatar billede jakobdo Ekspert
08. november 2005 - 20:56 #5
Du kan da prøve! :o)
Avatar billede nellemuz Nybegynder
08. november 2005 - 21:00 #6
<?php

require_once('configbilledgalleri.php');

// get directory tree
function directory($dir)
{
    $mydir = opendir($dir);
    while(false !== ($file = readdir($mydir)))
    {
    if($file != "." && $file != "..")
    {
        // we use $dir here rather than $mydir, because opendir() only returns a
        // resource, we need the actual path in order to get the expected result.
        // if our file is a directory, we need to search that directory
        if(is_dir($dir.$file))
        {
        // beware of safe mode when using chdir
        // it may generate warnings so we'll supress them with @
            @chdir('.');
        // by having the function call itself, it is now recursive
        // all sub directories will have an index of their own name
        $tree[$file] = directory($dir.$file.'/');
        @chdir('..');
        }
        else
        {
        $size = getimagesize($dir.$file);
        // if our file matches the valid MIME types, we add it to
        // the array with a numeric index
        if(in_array($size['mime'], unserialize(TYPE)))
            $tree[] = $file;
        }
    }
    }
    closedir($mydir);
    return $tree;
}
$tree = directory(PATH);

// grab our navigation
$nav = isset($_REQUEST['nav']) ? urldecode($_REQUEST['nav']) : null;
if(isset($nav))
{
    $crunch = explode('>', trim($nav));
    foreach($crunch as $value)
    {
      // IMPORTANT! validate for teh h4x0rz
    if(!ctype_alnum(str_replace(' ', '', $value)))
        $invalid = true;
    }
    if($invalid)
    $nav = null;
}

// decide what page of a paticular gallery we're viewing
$pg = isset($_REQUEST['pg']) && (ctype_digit($_REQUEST['pg']) || $_REQUEST['pg'] == 'all') ? $_REQUEST['pg'] : 0;
$viewall = is_numeric($pg) ? null : true;
$pg = intval($pg) <= 0 ? 1 : $pg;

// images per page
$section = ROWS * COLS;
// last possible ending point for images, depending which page we're on
$end = $section * $pg;
// starting point for images, depending which page we're on
$start = $end - $section;
// previous page
$prev = $pg - 1;
// next page
$next = $pg + 1;

// start table
print('<table border="0" align="center" cellpadding="1" cellspacing="1">');

// draw previous and next links
function navigator($total)
{
    $p = '<a href="'.$_SERVER['PHP_SELF']
      .'?nav='.rawurlencode($GLOBALS['nav'])
      .'&pg='.$GLOBALS['prev'].'"><<</a>';
    $n = '<a href="'.$_SERVER['PHP_SELF']
      .'?nav='.rawurlencode($GLOBALS['nav'])
      .'&pg='.$GLOBALS['next'].'">>></a>';
    $a = '<a href="'.$_SERVER['PHP_SELF']
      .'?nav='.rawurlencode($GLOBALS['nav'])
      .'&pg=all">view all</a>';

    // the navigation
    print('<tr><td align="center" colspan="' . COLS . '">');

    if(($GLOBALS['pg'] == 1 && $GLOBALS['end'] >= $total) || isset($GLOBALS['viewall']))
    print('<< : view all : >>');
    elseif($GLOBALS['pg'] == 1)
    print('<< : '.$a.' : '.$n);
    elseif($GLOBALS['end'] < $total)
    print($p.' : '.$a.' : '.$n);
    else
    print($p.' : '.$a.' : >>');

    print('</td></tr>');
}




function categories($navtree)
{
    // if we have a path to work with..
    if(isset($GLOBALS['nav']))
    {
    // we need to attach the path to our array
    // start counting from 1, as 0 will be empty
    for($i=1; $i<count($GLOBALS['crunch']); $i++)
        $navtree = &$navtree[$GLOBALS['crunch'][$i]];

    // we'll study this function in a minute
    display_body($navtree);
    }
    else
    display_body($navtree);
}
categories($tree);


// display category links and images
function display_body($navtree)
{
    if(isset($GLOBALS['nav']))
    {
    // we'll need the path as a directory for displaying images
    for($i=1; $i<count($GLOBALS['crunch']); $i++)
        $uri .= !is_numeric($GLOBALS['crunch'][$i]) ? $GLOBALS['crunch'][$i].'/' : '';
    }

    // if we have an array, then we are either requesting
    // category links or a gallery of images
    if(is_array($navtree))
    {
    // here we combine all the keys of our array into a string
    // if it does not have a numeric value then we must have
    // categories to display
    if(!is_numeric(implode('', array_keys($navtree))))
    {
        print('<tr><td>');
        foreach($navtree as $key=>$value)
        {
        if(!is_int($key))
        {
            // if our category value is an array, then
            // we create a link back to the images script and
            // give $nav the appropriate value
            if(is_array($value))
            print('<a href="'.$_SERVER['PHP_SELF']
                .'?design=' . $_GET['design'] . '&id=' . $_GET['id'] . '&nav='.rawurlencode($GLOBALS['nav']
                .'>'.$key).'">'.$key.'</a><br />');
            else // empty category, no need to link it
            print($key.'<br />');
        }
        }
        print('</td></tr>');
    }
    else
    {
        // if we're not working with categories, then we're
        // working with images, so let's decide how many
        // rows to display (depending if $viewall is true/false)
        $total = count($navtree);
        if(isset($GLOBALS['viewall']))
        {
        // math, gotta love it
        $check = $total / COLS;
        $rows = is_int($check) ? $check : floor($check) + 1;
        }
        else
        $rows = ROWS;

        // display our navigation
        navigator($total);
        // start printing the table contents
        for($i=0; $i<$rows; $i++)
        {
        print('<tr>');
        for($n=0; $n<COLS; $n++)
        {
            $index = $GLOBALS['start']++;
            // we either want the filename of the image, or
            // an empty space to fill the rest of the table
            $image = $index < $total ? $navtree[$index] : '&nbsp;';
            print('<td align="center" width="'.THMBWIDTH.'" height="'.THMBHEIGHT.'">');
            if($image != '&nbsp;')
            {
            // this link provides the exact path to the
            // image we want to display
            print('<a href="'.PATH.rawurlencode($uri).$image.'" target="_blank">');
            print('<img src="'
                .PATH.rawurlencode($uri).$image.'" width="' . THMBWIDTH . '" border="0" />');
            print('</a>');
            }
            else // if no image, print a space
            print($image);
           
            print('</td>');
        }
        print('</tr>');
        }
        // display another navigation
        navigator($total);
    }
    }
    elseif(file_exists(PATH.$uri.$navtree))
    {
    // if $navtree is not an array, then we must be calling an
    // image directly, first we check if the file exists just
    // to make sure. now we get the appropriate path for
    // displaying the image
    $root = explode('/', dirname(PATH.'.'));
    print('<tr><td><img src="'.end($root).'/'.$uri.$navtree.'"></td></tr>');
    }
    else // no array + no file = invalid
    print('<tr><td>invalid request</td></tr>');
}


// end table
print('</table>');

?>


^^ Der fik du det hele ...
Avatar billede nellemuz Nybegynder
08. november 2005 - 21:10 #7
en der har et bud på hvad der kan være galt her?
Avatar billede jakobdo Ekspert
08. november 2005 - 21:45 #8
Denne her: $size = getimagesize($dir.$file);
Skulle ikke kunne tjekke et dir.
Den har nemlig:
if(is_dir($dir.$file))
        {
        // beware of safe mode when using chdir
        // it may generate warnings so we'll supress them with @
            @chdir('.');
        // by having the function call itself, it is now recursive
        // all sub directories will have an index of their own name
        $tree[$file] = directory($dir.$file.'/');
        @chdir('..');
        }
        else
        {
        $size = getimagesize($dir.$file);
        // if our file matches the valid MIME types, we add it to
        // the array with a numeric index
        if(in_array($size['mime'], unserialize(TYPE)))
            $tree[] = $file;
        }

Ergo er det kun på filer.
Derfor giver det ikke mening du tjekker på et dir: pictures/Wallpapers
Det burde være noget i stil med: pictures/Wallpapers/pic1.jpg
Avatar billede nellemuz Nybegynder
08. november 2005 - 21:48 #9
Hvad skal jeg så gøre for at kunne få den til at tjekke dirs og liste dem som menu?
Avatar billede jakobdo Ekspert
08. november 2005 - 22:12 #10
Uha, det ved jeg desværre ikke!
Lidt meget kode at begynde at debugge så sent! :o(
Avatar billede nellemuz Nybegynder
08. november 2005 - 22:14 #11
:o(
Avatar billede ctc-3d Nybegynder
09. november 2005 - 12:36 #12
@chdir('..'); i linje 20 skal ændres til @chdir('.'); så skulle det virke
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