grosses VARIABLEN-PROBLEM. Bitte um Hilfe. Bin am verzweifeln...

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • grosses VARIABLEN-PROBLEM. Bitte um Hilfe. Bin am verzweifeln...

    Brauche unbedingt HILFE. Komme alleine einfach nicht mehr weiter. BITTE UM HILFE!!!
    Für jede Hilfe bin ich sehr dankbar! Ich sitzte Tag und Nach an dem Script und
    komme nicht mehr weiter...


    Das soll eine kleine Bildergalerie werden! Mit der Datei index.php wähle ich die
    verschiedenen Ordner aus, in denen sich Bilder befinden...

    Die Datei index.php wird gestartet.
    Sie lest alle Ordner aus dem Verzeichnis aus, indem sie sich befindet.
    Die Ordner, also in dem Fall hochzeit und geburtstag werden als "link" angezeigt:

    Das geht mit dem script:

    -----------------------------------
    index.php
    -----------------------------------

    PHP Code:
    <?php 
    $verz
    =opendir ('.'); 
    while (
    $file readdir ($verz)) 

    if(
    $file != "." && $file != ".." && is_dir($file)) 
    echo 
    " <a href=\"imagegallery.php?galerie=$file\"><img src=\"ordner.bmp\" alt=\"ordner\" border=\"0\"></a> "

    closedir($verz); 
    ?>
    -----------------------------------



    Ordner / Dateistruktur:

    --> Bildergalerie [ Ordner ]
    --> index.php [ Datei ]
    --> imagegallery.php [ Datei ]
    --> hochzeit [ Unterordner von Bildergalerie]hier sind die grossen bilder
    --> thumbs [ Unterordner von hochzeit ]hier sind die thumbnails
    --> Geburtstag[Unterordner von Bildergalerie]hier sind die grossen bilder
    --> thumbs [ Unterordner von bilder]hier sind die thumbnails

    u.s.w




    Es wird der Ordnername "$file" übergeben...

    klicke ich zb. Ordner "hochzeit" an, so öffnet sich die Seite "imagegallery.php" und
    übernimmt die Variable 'galerie'. (in dem Fall den Ordnernamen : hochzeit)

    Das geschieht mit $_GET[galerie]

    Der Ordnername ist also $grossebilder denn :

    $grossebilder = $_GET[ galerie ];
    in dem Ordner befinden sich die "grossen" Bilder.

    Weiterhin definiere ich die Variable $kleinebilder denn die thumbnails befinden sich
    im Unterordner thumbs.

    $kleinebilder= $_GET[ galerie ]."/".thumbs

    Habe also fogende Struktur:

    Der in der index.php ausgewählte Ordnername z.B. hochzeit wird an imagegallery.php übergeben und zugleich wird der unterordner /thumbs definiert.

    Dann heisst es :

    Auszug aus dem script "imagegallery.php":


    // thumbnail directory name
    $thumbs_dir = $kleinebilder;

    // full size image directory name
    $full_dir = $grossebilder;


    Das Problem ist, dass die Variablen nicht richtig im Script "imagegallery.php" erkannt werden!??
    Die thumbnails werden richtig angezeigt, aber beim Ancklicken von einem thumb bekomme ich eine
    Fehlermeldung statt das grosse Bild angezeigt. Pfad nicht gefunden... Warum ???
    Wenn ich aber die Variablen im imagegallery.php direkt nach dem Pfad benenne also z.b.

    // thumbnail directory name
    $thumbs_dir = "hochzeit/thumbs";

    // full size image directory name
    $full_dir = "hochzeit";

    funktioniert alles wunderbar...

    Kann es daran liegen???? Die Variablen gehen irgendwo mitten im Script verloren???
    Der Pfad wird nicht mehr erkannt. Ist das zulässig???

    Auszug aus dem script "imagegallery.php":


    if (!is_dir($thumbs_dir)) {
    imgerror('Directory "'.$thumbs_dir.'" does not exist.');
    }


    Gleich dannach folgt der imagegallery.php script: .....

  • #2
    Fortsetzung:..

    Hier das ganze Programm Imagegallery.php

    ---------------------------------------------------
    PHP Code:
    <html>
    <head>
    <title>Simple PHP Image Gallery</title>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <style type="text/css">
    <!--
    /* Default styles incase you don't have an external css. */
    body { background-color: rgb(56,56,56); color: rgb(180,180,180); font: 82% verdana, arial, sans-serif }
    table { font-size: inherit }
    p, td, div { color: rgb(180,180,180); font-family: verdana, arial, sans-serif }
    h2 { font-size: 1.2em; font-weight: bold }
    h2, p { text-align: center }

    a:link, a:active, a:visited { color: #708090; text-decoration: none; font-size: 12px }
    a:hover { text-decoration: underline }

    /* the following styles must be included somewhere, since they controll all formatting */
    #photo { text-align: center }
    #photo table { width: 80%; text-align: center; margin-right: auto; margin-left: auto }
    #photo table td { padding: 0px 10px 10px 10px }
    #photo .fulltitle { margin-bottom: 0px; padding-bottom: 0px }
    #photo .series { margin-top: 0px; padding-top: 0px }
    br.hideme { visibility: hidden; volume: silent }
    /* hidden from netscape 4: */
    div#photo img { border: 1px solid #708090 } 
    div#photo .caption { text-align: left; width: 500px; margin-right: auto; margin-left: auto }
    -->
    </style>
    <!--link rel="stylesheet" href="../style.css" type="text/css" /-->
    </head>
      
    <body>

    <h2>Image Gallery</h2>

    <p>Insert snappy caption here.</p>

    <!-- start of image gallery "stuff" -->
    <div id="photo">
    <?

    // 1 for XHTML or 0 for HTML?
    $xhtml = 1;

    ############################ Hier meine Variablen #############################

    $kleinebilder= $_GET[ galerie ]."/".thumbs;


    $grossebilder = $_GET[ galerie ]; 


    // thumbnail directory name
    $thumbs_dir = $kleinebilder;

    // full size image directory name
    $full_dir = $grossebilder;

    ########################## bid dahin ##########################################

    // captions directory name (captions are option, ignore if you dont' have any)
    $captions_dir = 'captions';

    // thumbnails title (1 to show, 0 to hide)
    $thumb_title = 1;

    // full size images title (1 to show, 0 to hide)
    $full_title = 1;

    // kill beginning numbers for the title (1 to hide, 0 to show)
    // hiding would make 0005_baby_pic.jpg have a title of 'Baby pic'
    $kill_title_nums = 1;

    // how many thumbnails should appear per row? (3 usually looks best)
    $cols = 5;

    // how many thumbnails per page? (a multiple of $cols, or 0 for all)
    $max_thumbs = 0;

    // extension name (if your server is not set for "index.$ext to be the index page, put 0)
    $ext = 'php';

    // captions extension
    $cext = 'inc';  // use whatever you're comfortable with

    // show random option for single page view (1 to show, 0 to hide)
    $showrand = 0;

    // closing (X)HTML options
    // if you use a function to close your code, put that in, otherwise leave as is
    $print_footer = 'print_footer';

    /***********************************************************************
    *  End Configuration
    ***********************************************************************/

    // figure out this script's name
    $self = $_SERVER['PHP_SELF'];

    if (basename($self) == "index.$ext") {
        $self = str_replace(basename($self), '', $self);
    }

    // do you have an existing function to close your page?  if not, use this default...
    if (!function_exists($print_footer)) {
        function print_gallery_footer() {
    ?>

    </body>
    </html>
    <?
        }
        $print_footer = 'print_gallery_footer';
    }

    // our error function, cleanly exits the script on user errors
    function imgerror($error) {
        global $print_footer;
        print "<p><b>$error</b></p>\n\n";
        $print_footer();
        exit();
    }

    // check to see which kind of closing tag we should use
    $close_tag =  !empty($xhtml) ? ' />' : '>';

    // check for directories
    if (!is_dir($thumbs_dir)) {
      imgerror('Directory "'.$thumbs_dir.'" does not exist.');
    }

    if (!is_dir($full_dir)) {
      imgerror('Directory "'.$full_dir.'" does not exist.');
    }

    // get contents of $thumbs_dir
    $dir = @opendir($thumbs_dir) or imgerror('Can\'t open ' . $thumbs_dir . ' directory');

    while (($thumb = readdir($dir)) !== false) {
        if (preg_match('/((?i)jpg|jpeg|gif|tif|bmp|png)$/', $thumb))
            $thumbs[] = $thumb;
    }

    natcasesort($thumbs);
    $thumbs_size = sizeof($thumbs);

    // lowest displayed image in the array
    // use http_get_vars incase register_globals is off in php.ini
    $i = !empty($_GET['i']) ? $_GET['i'] : 0;

    $random = array_rand($thumbs, 2);
    $i = $i === 'rand' ? $thumbs[$random[rand(0, 1)]] : $i;

    // check to see if all thumbs are meant to be displayed on one page
    if ($max_thumbs == 0) {
        $max_thumbs = $thumbs_size;
        $mt_check = 1;
    }

    // thumbnail view
    if (is_numeric($i)) {
        // check to see which thumbnail to start with
        $start = empty($mt_check) && $i > 0 ? $max_thumbs * ($i - 1) : 0;
        // are they looking for thumbs pages that don't exist?
        if ($start >= $thumbs_size) {
            print '<a href="' . $self . '">index</a>' . "\n\n";
            imgerror('Sorry, there are no images to display on this page');
        }
    ?>
    <table>

    <tr>
    <?
        // loop through $thumbs and display $max_thumbs per page
        for ($count = 1; $count <= $max_thumbs; $start++) {
            // break if past max_thumbs
            if ($start >= $thumbs_size) {
                break;
            }
            
            // print new row after predefined number of thumbnails
           if (($count % $cols == 1) && $count != 1 && $cols > 1) {
                print "</tr>\n\n<tr>\n";
            } elseif ($cols == 1) {
                print "</tr>\n\n<tr>\n";
            }
            
           // open cell
            print '<td align="center" style="width: ' . (floor(100 / $cols)) . '%">';
            
           // insert thumb
            print '<a href="' . $self . '?i=' . rawurlencode($thumbs[$start]) . '">';
            print '<img src="' . $thumbs_dir . '/' . rawurlencode($thumbs[$start]) . '" ';
            list($width, $height) = getimagesize("$thumbs_dir/$thumbs[$start]");
            print 'width="' . $width . '" height="' . $height . '"';
            
            // alt information
            print ' alt="Link to full sized version of ' . $thumbs[$start] . '"' . $close_tag . '</a>';
            
            // image title
           if ($thumb_title) {
                if ($kill_title_nums) {
                    $title = ltrim(ltrim(str_replace('_', ' ', $thumbs[$start]), "0..9"));
                } else {
                    $title = ltrim(str_replace('_', ' ', $thumbs[$start]));
                }
                
                $title = explode(".", ucfirst($title));
                print '<br' . $close_tag . "\n" . $title[0];
            }
            
            // close cell
            // supress line break for screen readers, but force a line break for lynx
            print '<br class="hideme"' . $close_tag . '</td>' . "\n";
            $count++;
        }
    ?>
    </tr>

    </table>
    <?
        // thumbs page nav
        if (!$mt_check) {
            print "\n<p>";
            // how many total thumbs pages, including a "remainder" page if needed
            $pages = ceil($thumbs_size / $max_thumbs);
            for ($count = 1; $count <= $pages; $count++) {
                if ($count == 1) {
                    if ($count == $i || $i == 0) {
                        print $count;
                    } else {
                        print "<a href=\"$self\">$count</a>";
                    }
                } else {
                    if ($count == $i) {
                        print " | $count</a>";
                    } else {
                        print " | <a href=\"$self?i=$count\">$count</a>";
                    }
                }
            }
            print '</p>';
        }
    }

    // single image view
    else if (file_exists("$full_dir/$i")) {
        // find where it is in the array
        $key = array_search($i, $thumbs);
        if (is_null($key)) {
            $key = -1;
        }

        // navigation
        print '<p>';
        
        // previous
        print $key >= 1 ? '<a href="' . $self . '?i=' . rawurlencode($thumbs[$key - 1]) . '">' : '';
        print '&laquo; previous';
        print $key >= 1 ? '</a>' : '';
        print ' | ';

        // index
        print '<a href="' . $self . '">index</a>';
        print ' | ';
        
        // random
        if ($showrand != 0) {
            print '<a href="' . $self . '?i=rand">random</a>';
          print ' | ';
        }
        
        // next
        print $key < $thumbs_size - 1 ? '<a href="' . $self . '?i=' . rawurlencode($thumbs[$key + 1]) . '">' : '';
        print 'next &raquo;';
        print $key < $thumbs_size - 1 ? '</a>' : '';

        print "</p>\n\n";
        // image
        print '<img src="' . $full_dir . '/' . rawurlencode($i) . '" ';
        list($width, $height) = GetImageSize("$full_dir/$i");
        print 'width="' . $width . '" height="' . $height . '"';
        
        // alt information
        print ' alt="';
      if (!$full_title) {
            print $i;
        }
        print "\"$close_tag\n\n";

        if ($full_title) {
            if ($kill_title_nums) {
                $title = $title = ltrim(ltrim(str_replace('_', ' ', $i), "0..9"));
            } else {
                $title = ltrim(str_replace('_', ' ', $i));
            }
            $title = explode('.', ucfirst($title));
            print "<div class=\"fulltitle\">$title[0]</div>\n\n";
        }

        // numerically show what image it is in the series; hide this if image isn't in the series
        if ($key >= 0) {
            // add 1 so that the first image is image 1 in the series, not 0
            print '<div class="series">' . ($key + 1) . ' of ' . $thumbs_size . "</div>\n\n";
        }

        // caption (optional)
        if (file_exists("$captions_dir/$i.$cext")) {
            print '<div class="caption">' . "\n";
            require("$captions_dir/$i.$cext");
            print "\n</div>\n";
        }
    } else {  // no image found
    ?><p><a href="<?=$self?>">index</a></p>

    <?
        imgerror('Sorry, that image does not exist...');
    }
    ?>
    </div>
    <!-- end of image gallery "stuff" -->

    <p><a href="../">Back to main image gallery</a></p>

    </body>
    </html>
    Last edited by miba; 03-07-2005, 12:05.

    Comment


    • #3
      Hi..

      Erst mal solltest du anstatt $_GET[galerie] $_GET["galerie"] schreiben.

      Außerdem könntest du dir mal ein paar echo´s in dein Script einbauen um zu sehen was in deinen Variablen wirklich drinsteht.
      gruss Chris

      [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

      Comment


      • #4
        Original geschrieben von hhcm
        Hi..

        Erst mal solltest du anstatt $_GET[galerie] $_GET["galerie"] schreiben.

        Außerdem könntest du dir mal ein paar echo´s in dein Script einbauen um zu sehen was in deinen Variablen wirklich drinsteht.
        EDIT:

        1) * Start Configuration (UNZULÄSSIG)
        2)
        PHP Code:
        // get contents of $thumbs_dir
        $dir = @opendir($thumbs_dir) or imgerror('Can't open ' . $thumbs_dir . ' directory'); 
        'Can't open' ????? (FEHLER)





        EDIT:

        Huch SORRY an die Mod´s.. Falschen Button erwischt

        gruss Chris

        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

        Comment


        • #5
          error_reporting(E_ALL); in deinen Code schreiben und Ausgabe ansehen & Fehler beheben
          Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
          var_dump(), print_r(), debug_backtrace und echo.
          Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
          Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
          Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

          Comment


          • #6
            Müsste heissen error_reporting(E_ALL) wieder einschalten, da auskommentiert :P
            gruss Chris

            [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

            Comment


            • #7
              Das habe ich schon durch

              @hhcm
              Die Variablen werden auf jeden Fall ( jedenfalls zum Teil) in index.php richtig übernommen. Also wie gesagt:

              Die thumbnails werden angezeigt. Bis dahin ist alles ok.
              Erst wenn ich ein thumbnail anklicke kommt eine Fehlermeldung.
              "pfad nicht erkannt".

              Ich denke dass die Variable mitten im script nicht zulässig ist. Aber wo??

              Kannst du das bei Dir ausprobieren?
              Ich komme nicht mehr weiter... Bin am verzweifeln...
              Und das ist eine echt schöne Galerie.

              P.S. die GET funktion ist nicht wichtig ob $_GET["galerie"]; oder $_GET[galerie];

              Comment


              • #8
                Hast du denn das * Start Config.... und Can't open.... geändert..?? Dein Code brachte bisher nur 2 Parseerrors zustande sonst nichts.
                gruss Chris

                [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                Comment


                • #9
                  @miba doch, denn dein php versucht jedesmal erst die konstante GALERIE zu finden. da es die aber nicht gibt, nimmt es an, dass du 'galerie' meinst und benutzt das. ist nen performance unterschied, außerdem ist es wirklich sehr unsauber.... strings sind nunmal strings und die stehen in anführungszeichen.
                  Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                  var_dump(), print_r(), debug_backtrace und echo.
                  Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                  Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                  Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                  Comment


                  • #10
                    Bis du dir sicher das die folgende Zeile wirklich so heissen muss?
                    PHP Code:
                    $kleinebilder$_GETgalerie ]."/".thumbs
                    IMO sollte es so aussehen
                    PHP Code:
                    $kleinebilder$_GET["galerie"]."/thumbs"
                    gruss Chris

                    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                    Comment


                    • #11
                      Habe folgende Zeile rausgenommen aus imagegallery.php :


                      //error_reporting (E_ALL);

                      * Start Configuration


                      Hatten keine Bedeutung...



                      $kleinebilder= $_GET["galerie"]."/thumbs";

                      oder

                      $kleinebilder= $_GET[ galerie ]."/".thumbs;


                      beides funktioniert..

                      Wenn Du das script ausprobierst musst du aber die index.php starten...
                      und die ordnerstruktur muss auch genauso sein...

                      Also bei mir funktioniert imagegallery.php so weit, dass die thumbnails angezeigt werden...
                      nur die grossen bilder nicht....

                      nochmal :

                      imagegallery.php
                      index.php
                      [unterordner] hochzeit
                      [unterordner] thumbs
                      [unterordner] geburtstag
                      [unterordner] thumbs

                      wenn ich bei der Variablen $kleinebilder="hochzeit/thumbs";
                      $grossebilder="hochzeit";
                      eintrage funktioniert ALLES wunderbar.

                      ICH KRIEGE NE KRIESE!!!!!!!!!!!!!!!!!!

                      Comment


                      • #12
                        Was denn jetzt? Funktionierts jetzt oder nicht?


                        Und ja, es funktioniert beides. Aber das von dir ist einfach unsauber und nicht erstrebenswert...
                        Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                        var_dump(), print_r(), debug_backtrace und echo.
                        Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                        Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                        Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                        Comment


                        • #13
                          Dann wird bei dir irgendwas anderes platt sein (Verzeichnisrechte oder deine anderen Scripts)

                          Ich habe den code von dir in eine test.php gespeichert und die beiden Vars $kleine und $grosse dings direkt mit Pfaden gefüllt.. Funktioniert beides. Vielleicht hilft dir das ein wenig weiter..

                          Ich hab ehrlich gesagt keine lust hier deine Umgebung nachzubauen und dein (HATTE KEINE BEDEUTUNG und FUNKTIONIERT BEIDES) solltest du weglassen).

                          MUSS ich dir helfen? Ich versuche nur das wirrwarr ein wenig zu lüften und Fehlerquellen auszuschliessen.

                          Ich würde es eh mit imagecopyresampled machen anstatt 2 Ordner anzulegen...
                          gruss Chris

                          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                          Comment


                          • #14
                            sorry

                            hey sorry. wollte nicht unfreundlich sein....
                            Keine bedeutung, meinte ich, dass ich das auch schon ausprobiert hab. Nicht gleich böse sein.

                            Verzeichnisrechte habe ich sogar auf 777 gesetzt.

                            was ist denn imagecopyresampled? wie funktioniert das?

                            das problem ist, dass das im Ordner hochzeit die grossenbilder sich befinden und im unterordner von hochzeit also hochzeit/thumbs die thumnails drin sind.
                            Daher 2 ordner....

                            und das script funktioniert sehr gut aber es geht ja nur darum dass ich in der index.php die verschiedenen ordnernamen an das imagegallery.php übergeben will und nicht jedes mal folgendes machen möchte :


                            So würde es gehen:

                            // thumbnail directory name
                            $thumbs_dir = "hochzeit/thumbs";

                            // full size image directory name
                            $full_dir = "hochzeit";


                            aber es geht um die index.php -> also die Variablen:

                            Ich glaube ich sollte die finger von php lassen o der?

                            Comment


                            • #15
                              Du übergibts den Galerienamen, aber baust ihn nicht mehr in den Link zum großen bild ein.. Wie soll das auch funktionieren ?

                              Versuchs mal damit

                              PHP Code:
                              // insert thumb
                                      
                              print '<a href="' $self '?i=' rawurlencode($thumbs[$start]) . '">'
                              ändern in

                              PHP Code:
                              // insert thumb
                                      
                              print '<a href="' $self '?galerie='.$_GET["galerie"].'&i=' rawurlencode($thumbs[$start]) . '">'
                              Das mal lesen
                              gruss Chris

                              [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                              Comment

                              Working...
                              X