Kleines schleifenproblem mit unset

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

  • #16
    Yo, naja, kann man nix machen *schnief*

    Grüsse Manfred

    Kommentar


    • #17
      aber noch ein kleiner tipp.

      fange noch mal (fast) neu an.
      überdenke dir erst einmal wie genau was passieren soll. dann machst du die äußere schleife .... wenn die sauber funktioniert, machst du die innere schleife..... ok?

      hoffe, der tipp war zumindest ein schritt der lösung entgegen ....
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #18
        Yo, das mache ich schon seit gestern nacht Das Prinzip ist ja tierisch einfach!

        Die äussere Schleife lädt die Hauptkategorien. Je nach menge der Hauptkategorien werden Templates dafür erstellt. Sind 6 Hauptkategorien vorhanden, läuft die Schleife 6 mal Durch und gibt mir 6 templates untereinander mit den Hauptkategorien raus. Das läuft erste Sahne.

        Nun kommt die unterschleife. Die Äussere Schleife fängt an zu laufen, holt sich die erste Hauptkategorie. Dann wird das erste Template erstellt. Jetzt fängt die 2. schleife an. Diese holt sich anhand vom argument WHERE subcat = catid die Subkategorien. In der jetzigen schleife hat die catid den wert 0. Also werden alle Subkats mit subcat=0 geladen. angenommen es sind 5 Subcats in dieser Hauptkategorie enthalten, dann läuft die 2. schleife 6 mal durch und erstellt mir im Template für die Hauptkategorie 6 Templates mit dem Namen der Subcats. Ist diese 2. schleife durch fängt die 1. also die aüssere wieder an zu rattern, hier müsste jetzt die alte variable ja gelöscht werden, bzw das Ergebniss array der 2. schleife, was nicht geht, und holt mir die Hauptkategorie mit der catid=1. Dann wieder die 2. schleife. Argument: where subcat =catid, in diesem falle 1.

        Der Ablauf ist logisch wie sonst nichts, oder? Warum behält die variable in der 2. Gesamtschleife dann den wert vom 1. Durchgang? Und im 3 Durchgang sind die variablen vom 1. und 2. Durchgang enthalten.... Trotz unset und reset.....

        Das wird ne lange nacht

        Grüsse Manfred

        Kommentar


        • #19
          ok verstehe.

          ich nehme mal an , dass die navigation in einer tabelle steht.
          die steuerung welche id wozu gehört, wird über catid und subcat gesteuert. richtig.

          ich habe sowas auch gemacht. jedoch verwende ich eine recursive funktion für das abbilden der navigation.

          vielleicht hilft dir das weiter. die recursive fkt ist die dritte. diese ruft sich bei bedarf selber auf.

          PHP-Code:
          /* ************************************************************************************* */
          function GetSubPageFromId ($PageId$admin) {
            if (
          $admin != "1") { $admin_where " AND HTMLContent IS NOT NULL"; }
            
          $result mysql_query"SELECT * FROM AllPages WHERE UpperId = '$PageId$admin_where ORDER BY Sort,UpperId" );
            if ( 
          mysql_num_rows($result) > ) {
              while (
          $zeile=mysql_fetch_array($result)) {
                
          $PageArray[$zeile["Id"]] = array (
                                  
          "Id"      => $zeile["Id"],
                                  
          "UpperId" => $zeile["UpperId"],
                                  
          "Sort"    => $zeile["Sort"],
                                  
          "Name"    => $zeile["Name"] );
              }
            }
            else {
              
          $PageArray = -1;
            }
            return 
          $PageArray;
          }

          /* ************************************************************************************* */
          function GetTopFoldersFromId ($PageId) {
            
          $result mysql_query"SELECT Name,UpperId,Id FROM AllPages WHERE Id = '$PageId'" );
            if ( 
          mysql_num_rows($result) > ) {
              
          $zeile mysql_fetch_array($result);
              
          $Folders $zeile["Id"];
              if (
          $zeile["UpperId"] != 0) {
                
          $Folders GetTopFoldersFromId ($zeile["UpperId"]) . "|" $Folders;
              }
            }
            return 
          $Folders;
          }

          /* ************************************************************************************* */
          function GetNavigationFromId ($StartPageId$SpaceWidth$ActivePage$Recursiv$admin) {
            global 
          $PHP_SELF;
            
          $SpaceIMG "<img src=\"/images/dot-x.gif\" width=\"".$SpaceWidth."\" height=\"1\" border=\"0\" align=\"middle\" alt=\"\">";
            if (
          $SpaceWidth==0) {
              
          $SpaceIMG "";
              
          $SpaceWidth = -3;
            }
            
          $array_temp GetSubPageFromId($StartPageId$admin);
            
          $folder     "|" GetTopFoldersFromId($ActivePage) . "|";
            if (
          $array_temp!=-1) {
              while(list(
          $key,$value) = each($array_temp)) {
                if (
          strstr($folder,"|$key|")) { $active_zusatz "class=\"active\""; } else { $active_zusatz ""; }
                
          $NavigationString.= "&nbsp;&nbsp;".$SpaceIMG."<a $active_zusatz href=\"".$PHP_SELF."?id=".$key."\" target=\"_top\">".$array_temp[$key][Name]."</a><br>\n";
                if ( (
          $Recursiv 0) && strstr($folder"|".$array_temp[$key][Id]."|") ) {
                  
          $NavigationString.= GetNavigationFromId ($array_temp[$key][Id], $SpaceWidth+3$ActivePage$Recursiv-1$admin);
                }
              }
              
          $Recursiv--;
            }
            return 
          $NavigationString;

          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar

          Lädt...
          X