Entwicklung einer Downloaddatenbank, Probleme mit Kategorien

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

  • #16
    wie oft wird eine if-schleife denn ausgeführt?

    lass uns noch mal den pseudecode angucken. der vorschlag war ja,
    Code:
    für jeden knoten aus dem baum mit pid wiederhole
    zu implementieren. in der tat läuft es auf folgendes hinaus:
    Code:
    für jeden knoten aus dem baum wiederhole
    {
       wenn (knoden_pid = pid)
       {
          ...
       }
    }
    ich hoffe, du siehst ein, dass der code nur für knoten mit dieser eigenschaft ausgeführt wird.

    Kommentar


    • #17
      Ich bin völlig aus dem Tritt und kann nicht mehr klar denken.

      Meinst du evtl. das ganze so in etwa?

      PHP-Code:
      function output($cat_arr$tiefe)
      {
         foreach (
      $cat_arr as $value)
         {
            if (
      $value == "pid")
            {
               print 
      "   ";
               print 
      $cat_arr;
            }
        }

      Danke, dass du soviel Geduld mit mir hast. Wenn ich das aufrufe, erscheint nix.

      Kommentar


      • #18
        nein. was steht in $value drin?
        wenn du es nicht verstehst, schau mit print_r() da rein.

        Kommentar


        • #19
          da steht folgendes drin:

          Array ( [id] => 1 [pid] => 0 [kategorie] => STAMM ) Array ( [id] => 2 [pid] => 1 [kategorie] => Handbücher ) Array ( [id] => 3 [pid] => 1 [kategorie] => Demo-Versionen ) Array ( [id] => 4 [pid] => 3 [kategorie] => GDATA ) Array ( [id] => 5 [pid] => 3 [kategorie] => Microsoft ) Array ( [id] => 6 [pid] => 2 [kategorie] => PDF )

          und nicht mehr:

          Array ( [0] => Array ( [id] => 1 [pid] => 0 [kategorie] => STAMM ) [1] => Array ( [id] => 2 [pid] => 1 [kategorie] => Handbücher ) [2] => Array ( [id] => 3 [pid] => 1 [kategorie] => Demo-Versionen ) [3] => Array ( [id] => 4 [pid] => 3 [kategorie] => GDATA ) [4] => Array ( [id] => 5 [pid] => 3 [kategorie] => Microsoft ) [5] => Array ( [id] => 6 [pid] => 2 [kategorie] => PDF ) )


          Wenn ich das richtig sehe, er hat jetzt aus dem mehrdimensionalen Array ein eindimensionales Array gemacht. Aber wie komme ich jetzt an dieser Stelle weiter?

          Ich willl ja erreichen, dass er wenn die PID der ID entsrpicht, die Unterkategorie eingerückt wird. Ich sehe noch immer nicht, wie ich an dieser Stelle das erreiche.

          Entschuldige bitte mein vieles Nachfragen. Ich habe jetzt fast zwei Jahre nichts mehr mit PHP gemacht und so ein komplexes Problem hatte ich noch nicht. Hatte es mir auch nicht so schwierig vorgestellt.

          Ich stehe noch immer auf dem Schlauch.

          Kommentar


          • #20
            Wenn ich das richtig sehe, er hat jetzt aus dem mehrdimensionalen Array ein eindimensionales Array gemacht.
            nein, foreach geht das array durch un in $value steht pro schleifendruchlauf immer ein element aus $cat_arr. und das ist ein array. und sein element "pid" ist genau das, was wir mit dem parameter vergleichen wollen.

            Kommentar


            • #21
              Bitte, bitte. Erlös mich endlich. Nicht das ich es sehr nett finde, dass du es mir Stück füpr Stück beibringen möchtest, aber es zeith mich total runter, dass ich es nicht raffe.

              Ich nehme an, dass es mit dem Aufruf output($cat_arr, $pid, $tiefe+1) zu tun haben muss. Aber ich kann nicht mehr klar denken. Mir raucht die Birne.

              function output($cat_arr, $tiefe)
              {
              foreach ($cat_arr as $value)
              {
              if ($value == $tiefe)
              {
              print " ";
              print $pid;
              }
              }
              }

              Kommentar


              • #22
                wenn $value der knoten ist, was ist seine pid? (bedenke, es ist bloß ein array).

                Kommentar


                • #23
                  Ich habe da ja shcon Verständnisprobleme. Beim ersten Durchlauf ist es die 0, dann die 1 ...

                  Oder?

                  Kommentar


                  • #24
                    richtig, nur wo in $value liegt dieser wert? wie spricht man den an?

                    Kommentar


                    • #25
                      An zweiter Position. Mit $value[1]?

                      PHP-Code:
                      function output($cat_arr$tiefe)
                      {
                         foreach (
                      $cat_arr as $value)
                         {
                            
                      print_r($value);
                            if (
                      $value[1] == $tiefe)
                            {
                               print 
                      "   ";
                               print 
                      $value;
                            }
                         }

                      ???

                      Kommentar


                      • #26
                        1. hast du die parameter wieder vermurkst.
                        2. bei einem assoziativen array haben die schlüssel strings als namen. die sieht man mit print_r().

                        Kommentar


                        • #27
                          OffTopic:
                          sry wenn ich euer trautes zwigespräch störe, aber ich würde schon gerne noch einwerfen, dass in verbindung mit print_r() sich die <pre> und </pre> tags ganz hervorragend benutzen lassen sieht dann besser aus ... aber jetzt .. lasst euch nicht weiter stören
                          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.

                          Kommentar


                          • #28
                            Och manno. Jetzt machen sich andere schon über mich lustig. Muss das dann evtl. $value["pid"] heißen?

                            Kommentar


                            • #29
                              ja. diesen wert möchten wir mit dem parameter vergleichen (auf gleichheit prüfen).

                              Kommentar


                              • #30
                                Okay, dann denke ich, die Funktion und das restliche Script müsste so lauten:

                                PHP-Code:
                                $arr_count 0;
                                $cat_arr = array();

                                $sql "SELECT * FROM kategorien ORDER BY id, pid;";
                                $result mysql_query($sql) or die(mysql_error());
                                while (
                                $row mysql_fetch_array($resultMYSQL_ASSOC))
                                {

                                   
                                $id $row["id"];
                                   
                                $pid $row["pid"];
                                   
                                $kategorie $row["kategorie"];

                                   
                                $cat_arr[$arr_count] = array();
                                   
                                $cat_arr[$arr_count]['id'] = $id;
                                   
                                $cat_arr[$arr_count]['pid'] = $pid;
                                   
                                $cat_arr[$arr_count]['kategorie'] = $kategorie;

                                   
                                $arr_count $arr_count 1;

                                }

                                //Hier fehlt mir jetzt ein Puzzzle-Stück
                                    
                                function output($cat_arr$pid$tiefe)
                                {
                                    foreach (
                                $cat_arr as $value)
                                    {
                                        
                                print_r($value);
                                        if (
                                $value["pid"] == $tiefe)
                                        {
                                        print 
                                "   ";
                                        print 
                                $value;
                                    }
                                    else
                                    {
                                        print 
                                $value;
                                  }

                                Ich denke, jetzt fehlt mir noch ein Puzzle-Stück, wo ich nicht weiß, wie es aussehen muss.

                                Kommentar

                                Lädt...
                                X