Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Unterkategorien werden nicht gezählt!

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Unterkategorien werden nicht gezählt!

    Hallo Leute!

    Habe da mal ne Frage. Und zwar schreibe ich mir grad ein Downloadscript und es funzt auch alles wunderbar nur eine Sache nicht und die bringt mich zum verzweifeln!

    Da ich Katas und Unterkatas in einer Tabelle speicher also so sieht das aus

    Code:
    id name parent_id   level
    1 autos    0           0
    2 ferarie   1           0
    3 porsche 1           0
    4 carrera  3           1
    So also steht das Level auf 1 dann ist diese Kata füllbar für datensätze,ansonsten ist sie auf 0 kann man keine datensätze dazu anlegen!

    Mein Problem ist ich lasse dann mit einem Leftjoin mir die Tabellen dlcats und dlfiles auslesen. Wenn Datensätze zu einer Kata vorkommen dann klappt die zählerei auch wie sie soll,nur wenn keine Datensätze in einer Kata sind sondern nur Unterkategorien dann werden die nicht gezählt sondern es wird immer der Wert 1 angezeigt selbst wenn eine Kata 6 Unterkatas hat!

    Hier mal der Code!
    PHP-Code:
    <?php
    if (empty($_GET['id']))
    {
     
    $id 0;
    }
    else
    {
     
    $id $_GET['id'];
    }
    echo 
    "<table cellpadding=\"0\" cellspacing=\"0\" width=\"500\" border=\"0\">";
    //Abfrage der Tabellen dlcats und dlfiles 
     
    $sqlbefehl ="Select dc.id,dc.ncat,dc.parent_id,dc.level,dc.darf,df.cat_id, Count(df.cat_id And dc.parent_id) As anzahl
     From 
      
    $tab_dlcats dc
     Left Join 
      
    $tab_dlfiles df
     ON (dc.id = df.cat_id) 
     Where dc.parent_id ='"
    .$id."' Group By dc.id";
     
    $catanz mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
     
    $i =1;
     while(
    $cat mysql_fetch_array($catanz)){
     
      if(
    $i==1){echo "<tr>";}
      echo 
    "<td align=\"center\" >";
      echo 
    "<table cellpadding=\"0\" cellspacing=\"0\" width=\"200\" border=\"0\">";
      echo 
    "<tr>";
      echo 
    "<td class=\"catshow\">";
      
    //wenn level nicht auf 1 steht wird er link der zu den unterkategorien führt ausgegeben
      
    if($cat['level']!=1)
      {
       echo 
    "<a href=\"show_cats.php?id=".$cat['id']."\">".$cat['ncat']."";
       echo 
    " [";
       
    //hier sollen die unterkategorien zu den Kategorien gezählt 
       //ausgegeben werden (klappt nicht)
       
    if($cat['parent_id'] !=&& $cat['level']!=1)
       {
        echo 
    $cat['anzahl'];
       }
       
    //hier sollen die Datensätze die zu Katas gehören gezählt ausgegeben werder
       //das klappt korrekt!
       
    else
       {
        echo 
    $cat['anzahl'];
       }
       echo 
    "]";
       echo 
    "</a>";
      }
      else
      {
       
    //wenn level auf 1 steht wird wird der link angezeigt der zum den files führt
       
    echo "<a href=\"show_file.php?cat_id=".$cat['id']."\">".$cat['ncat']."";
       echo 
    " [";
       
    //hier sollen die unterkategorien zu den Kategorien gezählt 
       //ausgegeben werden (klappt nicht)
       
    if($cat['parent_id'] !=&& $cat['level']!=1)
       {
        echo 
    $cat['anzahl'];
       }
       
    //hier sollen die Datensätze die zu Katas gehören gezählt ausgegeben werder
       //das klappt korrekt!
       
    else
       {
        echo 
    $cat['anzahl'];
       }
       echo 
    "]";
       echo 
    "</a>";
      }
      echo 
    "</td>";
      echo 
    "</tr>";
      echo 
    "</table><br>";
      echo 
    "</td>";
      if(
    $i==2){echo"</tr>";$i=0;}
      
    $i++;
    }
    echo 
    "</table>";
    ?>
    Wie gesagt das einzige was nicht klappt ist das Unterkategorien zu etwaigen Kategorien nicht gezählt werden!

    Vielen Dank für eure Hilfe mfg der litter
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    [URL]http://www.lit-web.de[/URL]

  • #2
    Kata?
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      Kata steht für Kategorie und Unterkata für Unterkategorie!
      Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
      [URL]http://www.lit-web.de[/URL]

      Kommentar


      • #4
        Ich versteh deine Frage und den Code nicht
        Wie man Fragen richtig stellt
        "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

        Kommentar


        • #5
          Wieso verstehst du die Frage nicht? Die ist doch eindeutig und verständich gestellt!

          Wie bekomme ich es hin hin das die Anzahl von Unterkategorien bei den Kategorien ausgegeben wird. Wenn eine Kategorie Datensätze hat dann werden die gezählt auch neben den Kategorien die Datensätze haben ausgegeben! Nur eben wenn eine Kategorie Unterkategorien hat werden die nicht gezählt ausgegeben! Und so steht es doch auch in meinem Post drin!

          Und der code sagt doch eigentlich alles aus! Nun ja jeder gewöhnt sich eine andere Struktur an und findet mit der Zeit seinen eigenen Logicweg,bekanntlich führen viele Wege nach Rom!

          Aber es ist eigentlich ersichtlich was der Code aussagt. Es werden mit Left Join Werte aus den Tabellen dlcats und dlfiles geholt. Wenn eine Kategorie das level 0 hat und dazu noch Unterkategorien dann wird der Link zu den Unterkategorien ausgegeben. Hat eine Kategorie den Level Wert 1 dann wird der Link zur show_file.php ausgegeben und somit komme ich dann zu den Files die zu der Kategorie gehören!

          Das steht aber auch alles im Code dokumentiert!

          mfg der Litter
          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
          [URL]http://www.lit-web.de[/URL]

          Kommentar


          • #6
            also aus meiner Sicht liegt ein problem erstmal in deinem sql
            Count(df.cat_id And dc.parent_id) As anzahl
            was soll das denn Deiner Meinung nach bringen?
            Ausserdem glaube ich nicht, dass Du korrekt gruppierst.

            Kommentar


            • #7
              PHP-Code:
              if($cat['parent_id'] !=&& $cat['level']!=1)
              {
                 echo 
              $cat['anzahl'];
              }
              //hier sollen die Datensätze die zu Katas gehören gezählt ausgegeben werder
              //das klappt korrekt!
              else
              {
                 echo 
              $cat['anzahl'];

              Was soll das bitte bewirken? Warum die Abfrage, wenn die Aktion die du ausführst eh die gleiche ist?

              Kommentar


              • #8
                Und der code sagt doch eigentlich alles aus!
                Aber es ist eigentlich ersichtlich was der Code aussagt.
                finde ich jetzt so nicht, schwierig zu lesen. ausserdem nicht sauber und logisch...

                Kommentar


                • #9
                  Das ist ja das Problem. Die eine Sache klappt sehr gut und wie sie soll nämlich das Datensätze die zu einer Kategorie gezählt werden auch so ausgegeben werden. Nur die Unterkategorien wenn es welche gibt werden zu den Kategorien nicht richtig gezählt. Es gibt immer als Ergebnis eine 1 auch wenn sich 3 Unterkategorien in einer Kategorie befinden!

                  Darum frage ich ja ob jemand einen Fehler sieht und einen Tipp hat!

                  mfg der Litter
                  Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                  [URL]http://www.lit-web.de[/URL]

                  Kommentar


                  • #10
                    Das hätteste auch logischer lösen können... mal nachdenken... was das bewirkt...
                    if
                    ($cat['level']!=1)
                    {
                    if($cat['parent_id'] !=0 && $cat['level']!=1)
                    { ...
                    }
                    else
                    {
                    if($cat['parent_id'] !=0 && $cat['level']!=1)
                    {

                    Kommentar


                    • #11
                      tipp:
                      Zitat von HPR1974 Beitrag anzeigen
                      also aus meiner Sicht liegt ein problem erstmal in deinem sql
                      Count(df.cat_id And dc.parent_id) As anzahl
                      was soll das denn Deiner Meinung nach bringen?
                      Ausserdem glaube ich nicht, dass Du korrekt gruppierst.

                      Kommentar


                      • #12
                        mal ein anderen tipp:
                        count(col_1) as anzahl_1,
                        count(col_2) as anzahl_2

                        Kommentar


                        • #13
                          Das habe ich auch schon geändert. Da bin ich vor deinem Post drauf gekommen das das Quatsch ist!

                          Der Code sieht jetzt so aus!

                          Aber das gewünschte Ergebnis ist noch immer nicht erreicht!

                          PHP-Code:
                          <?php
                          if (empty($_GET['id']))
                          {
                           
                          $id 0;
                          }
                          else
                          {
                           
                          $id $_GET['id'];
                          }
                          echo 
                          "<table cellpadding=\"0\" cellspacing=\"0\" width=\"500\" border=\"0\">";
                          //Abfrage der Tabellen dlcats und dlfiles 
                           
                          $sqlbefehl ="Select dc.id,dc.ncat,dc.parent_id,dc.level,dc.darf,
                          df.cat_id, Count(df.cat_id) As anzahl, Count(parent_id) As cat_anzahl
                           From 
                            
                          $tab_dlcats dc
                           Left Join 
                            
                          $tab_dlfiles df
                           ON (dc.id = df.cat_id) 
                           Where dc.parent_id ='"
                          .$id."' Group By dc.ncat";
                           
                          $catanz mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
                           
                          $i =1;
                           while(
                          $cat mysql_fetch_array($catanz)){
                           
                            if(
                          $i==1){echo "<tr>";}
                            echo 
                          "<td align=\"center\" >";
                            echo 
                          "<table cellpadding=\"0\" cellspacing=\"0\" width=\"200\" border=\"0\">";
                            echo 
                          "<tr>";
                            echo 
                          "<td class=\"catshow\">";
                            
                          //wenn level nicht auf 1 steht wird er link der zu den unterkategorien führt ausgegeben
                            
                          if($cat['level']!=1)
                            {
                             echo 
                          "<a href=\"show_cats.php?id=".$cat['id']."\">".$cat['ncat']."";
                             echo 
                          " [";
                             
                          //hier sollen die unterkategorien zu den Kategorien gezählt 
                             //ausgegeben werden (klappt nicht)
                             
                          if($cat['parent_id']==$cat['id'])
                             {
                              echo 
                          $cat['cat_anzahl'];
                             }
                             
                          //hier sollen die Datensätze die zu Katas gehören gezählt ausgegeben werder
                             //das klappt korrekt!
                             
                          else
                             {
                              echo 
                          $cat['anzahl'];
                             }
                             echo 
                          "]";
                             echo 
                          "</a>";
                            }
                            else
                            {
                             
                          //wenn level auf 1 steht wird wird der link angezeigt der zum den files führt
                             
                          echo "<a href=\"show_file.php?cat_id=".$cat['id']."\">".$cat['ncat']."";
                             echo 
                          " [";
                             
                          //hier sollen die unterkategorien zu den Kategorien gezählt 
                             //ausgegeben werden (klappt nicht)
                             
                          if($cat['parent_id']==$cat['id'])
                             {
                              echo 
                          $cat['cat_anzahl'];
                             }
                             
                          //hier sollen die Datensätze die zu Katas gehören gezählt ausgegeben werder
                             //das klappt korrekt!
                             
                          else
                             {
                              echo 
                          $cat['anzahl'];
                             }
                             echo 
                          "]";
                             echo 
                          "</a>";
                            }
                            echo 
                          "</td>";
                            echo 
                          "</tr>";
                            echo 
                          "</table><br>";
                            echo 
                          "</td>";
                            if(
                          $i==2){echo"</tr>";$i=0;}
                            
                          $i++;
                          }
                          echo 
                          "</table>";
                          ?>
                          Ich bekomme bei den Kategoriezählungen nun immer eine 0 raus. Die Datensätze werden aber noch korrekt gezählt.
                          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                          [URL]http://www.lit-web.de[/URL]

                          Kommentar


                          • #14
                            wie wäre es mal mit einer besseren Gruppierung?

                            Kommentar


                            • #15
                              Könntest du mir da mal einen Tipp geben?

                              Ich mache das zum ersten mal das zwei verschiedene Sachen auszählen will in einer sql abfrage. Habe das bist jetzt immer nur mit einer machen müssen und das klappte immer ohne Probleme! Nur hier bin ich leider am scheitern!
                              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                              [URL]http://www.lit-web.de[/URL]

                              Kommentar

                              Lädt...
                              X