PHP - Galerien Listung - REKURSION

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #31
    Vielen Dank Desaster!
    Ich bin mittlerweile so weit:
    PHP-Code:
    function echoarray($var$depth=0$cnt=1) {
        
    $i 0;
        foreach (
    $var as $val) {
            
    $padd $depth 16;
            IF (!isset(
    $cnt) || $cnt == 0) {
              
    $bgcolor "#f1f5fa";
              
    $cnt 1;
            } ELSE {
              
    $bgcolor "#fff";
              
    $cnt 0;
            }
            echo 
    "<DIV STYLE=\"background-color: ".$bgcolor."; padding: 0 0 0 ".$padd."px;\">".$val[0]["name"]." ".$depth."</DIV>\n";
            if (isset(
    $val["SUB"])) {
                
    // $cnt == 0 ? $cnt=1 : $cnt=0;
                
    echoarray($val["SUB"], $depth+1$cnt);
            }
            
    $i++;
        }

    Irgendwie stimmt da allerdings etwas mit der Farbgebung nicht!
    -> http://www.marianum-steinberg.at/2009/test/gall.php
    Zuletzt geändert von nichtsooft; 04.11.2008, 17:54.
    WHILE (!$asleep) { $sheep++; }

    Kommentar


    • #32
      Na das wirst du ja wohl selbst gelöst kriegen?!
      Lass dir halt $cnt auch noch neben $depth ausgeben.

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #33
        Naja; Die Wertigkeit von $cnt seh ich ja eh an der Farbgebung der Zeile!
        Ich seh nur irgendwie die Logik nicht, nach der sich $cnt in manchen Zeilen ungewünscht verhält!
        Bin aber so und so dahinter und die Competition ist ja für mich die, schneller ne Lösung zu finden als alle die mich hier netter weise unterstützen! =)
        WHILE (!$asleep) { $sheep++; }

        Kommentar


        • #34
          Du setzt $cnt zwei Mal, meinst du das ist so richtig?
          Geh doch mal durch was wo passiert... was anderes würde hier doch auch niemand machen.

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #35
            Nun ja ich setze $cnt bei "function echoarray()" gelich mal auf 1 um vorzubeugen, falls es beim Aufruf der Funktion nicht mitgegeben wird. Danach modifizier ich $cnt doch nur noch!?
            Ich glaub ich sitz heut schon zu lange dran! Ich werd mal pennen gehen und geh dann morgen mit frischem Kopf dran...


            Außerdem muss ich mir noch was überlegen, wie ich die TREE-Icons hinbekomme. Ich sollte ja rgendwie schon vorher wissen, ob und wieviele Einträge mit der selben Rekursionstiefe zurückgeliefert werden (siehe Graphik)...
            Zuletzt geändert von nichtsooft; 04.11.2008, 18:59.
            WHILE (!$asleep) { $sheep++; }

            Kommentar


            • #36
              Dann ist wohl die Modifikation von deinem $cnt falsch.
              Das wiederum kannst du durch einfache echo $cnt's an diversen Stellen überprüfen.

              Für dein zweites Problem:
              $anzahl an Subs = isset($val[sub]) : count($val[sub]) ? null;
              dann benutzt du deine Variable $i um die Grafik entsprechend anzuzeigen. Ist doch kein Thema.

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar


              • #37
                Original geschrieben von ghostgambler
                Für dein zweites Problem:
                $anzahl an Subs = isset($val[sub]) : count($val[sub]) ? null;
                dann benutzt du deine Variable $i um die Grafik entsprechend anzuzeigen. Ist doch kein Thema. [/B]
                Naja so leicht wird's denk ich nicht werden! Man muss ja bedenken dass ich nicht überal die gleichen Icons setze! Zieh dir mal die Graphik rein und schau mal auf "TEST SUBSUBSUB" und die beiden SubCategorien, respektive deren Icons...
                WHILE (!$asleep) { $sheep++; }

                Kommentar


                • #38
                  Hab ich, sehe da kein Problem.

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #39
                    Guten Morgen! *streck*
                    Also ich hab das jetzt mal komplett überarbeitet
                    PHP-Code:
                    function echoarray($var$depth=0$cnt=1$sub=0) {
                        
                    $i 0;
                        FOREACH (
                    $var as $val) {
                            
                    $i++; 
                            IF (
                    $cnt == 0) {
                              
                    $bgcolor "#f1f5fa";
                              
                    $cnt 1;
                            } ELSE {
                              
                    $bgcolor "#fff";
                              
                    $cnt 0;
                            }
                            echo 
                    "\t<DIV CLASS=\"galline\" STYLE=\"background-color: ".$bgcolor.";\">\n";
                            FOR (
                    $r $depth$r 0$r--) {
                             echo 
                    "\t\t<DIV CLASS=\"rueck\"></DIV>\n";
                            }
                            IF (
                    $sub != 0) {        // WENN ES SICH UM EINE SUBgalerie handelt...
                              
                    IF ($i == $sub) {     // DIE RICHTIGEN ICONS anzeigen...
                                
                    echo "\t\t<DIV CLASS=\"admsubico\"><IMG SRC=\"../pics/icons/itsasub.gif\" CLASS=\"thesubico\"></DIV>\n";
                              } ELSE {  
                                echo 
                    "\t\t<DIV CLASS=\"admsubico\"><IMG SRC=\"../pics/icons/itaresub.gif\" CLASS=\"thesubico\"></DIV>\n";            
                              }  
                            }
                            echo 
                    "\t\t<DIV CLASS=\"galname\">".$val[0]["name"]." (".$cnt.")</DIV>\n";
                            echo 
                    "\t</DIV>\n";
                            IF (isset(
                    $val["SUB"])) {
                                
                    $anzahl = isset($val["SUB"]) ? count($val["SUB"]) : 0;
                                
                    echoarray($val["SUB"], $depth+1$cnt$anzahl);
                            }
                        }

                    Das Problem mit den Zeilen-Farben konnte ich noch nicht lösen!
                    Die Sache mit den Icons habe ich schon in Angriff genommen. Hier fehlt mir aber noch der Plan wie ich die eigenschaften der vorherigen Zeilen übergeben kann/soll.....
                    Edit: ....damit die fehlenden, senkrechten Linien eingefügt werden können....

                    Seht selbst: http://www.marianum-steinberg.at/2009/test/gall.php
                    Zuletzt geändert von nichtsooft; 05.11.2008, 06:34.
                    WHILE (!$asleep) { $sheep++; }

                    Kommentar


                    • #40
                      Ich würde das komplette Styling dem CSS überlassen und einfach nur eine verschaltete Liste (ul, li) ausgeben.

                      Kommentar


                      • #41
                        Nö! Das Styling mit CSS kommt aus verschiedenen Umständen so nicht in Frage...

                        ...die probs bestehen weiterhin! Ich kann die Nuss mit $cnt einfach nicht knacken! *grumml* Das kann ja garnicht sooo schwer sein!
                        WHILE (!$asleep) { $sheep++; }

                        Kommentar


                        • #42
                          btw: http://www.php-resource.de/forum/sho...threadid=44274

                          Kommentar


                          • #43
                            echo $cnt; und ein bisschen Hirnschmalz dazu.
                            Das musst du jetzt selbst lösen.

                            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                            Wie man Fragen richtig stellt

                            Kommentar


                            • #44
                              @asp2php Denke das wird unter PHP4 nicht laufen! :-/

                              @ghost $cnt wird in jeder Zeile ausgegeben -> (".$cnt.")
                              WHILE (!$asleep) { $sheep++; }

                              Kommentar


                              • #45
                                Original geschrieben von nichtsooft
                                @asp2php Denke das wird unter PHP4 nicht laufen! :-/
                                PHP 4 wurde Ende August offiziell eingestellt. Sollte man so oder so nicht mehr benutzen.

                                Kommentar

                                Lädt...
                                X