einträge zählen

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

  • einträge zählen

    Hi @ all

    Habe folgendes im Internet gefunden:
    http://demo.php-resource.net/AllMyLi...pen=categories

    Und jetzt will ich wissen wie ich für ein eigenes Projekt eine auslese funktion machen kann, wie oben auf der Seite unter Punkt "Kultur". Da steht dann eine (2) wie kann ich soetwas anzeigen lassen über mehrere categorien hinweg?

    meine jetzige Mysql:

    cat:
    ID | Name | cat
    1 | Auto | 0
    2 | Computer | 0
    3 | Autohäuser | 1
    4 | BMW | 3
    5 | OPEL | 3

    So währe es genau:
    1) Auto > Autohäuser > BMW & OPEL
    2) Computer

    Die einträge werden dan jeweils auf die letzte ID verwiesen.
    Beispiel eintrag in Opel bedeutet ID 5.

    Kann mir vieleicht einer Helfen.

    P.s. Wenn einer sagt benutze die suche! Das habe ich aber wahrscheinlich unter den Falschen Suchbegriffen.

  • #2
    such mal nach rekursiv

    Kommentar


    • #3
      Original geschrieben von asp2php
      such mal nach rekursiv
      Habe mir dein Vorschlag angenommen und gesucht, habe zwar nicht direkt das gefunden, aber mit ein bissel Bastelarbeit bin ich schon etwas weiter gekommen. Genauer gesagt habe ich es soweit, dass mir die Kategorien nacheinander angezeigt werden und auch die Einträge, aber nur die die direkt unter der letzten Kategorie vom eintrag stehen.

      Die MySQL:

      webver_cat:
      -------------------
      ID | cat | name
      1 | 0 | Computer
      2 | 0 | Auto
      3 | 1 | Grafik
      4 | 1 | Software
      5 | 4 | Microsoft
      6 | 2 | Autohäuser

      webver_eintrag: (andere Tabelle)
      ID | cat | name
      1 | 5 | Office
      2 | 3 | Corel
      3 | 6 | BMW

      So und hier mein Script versuch:
      PHP-Code:
      <?php
      $id 
      1;

      categries($id);
      function 
      categries($id){
           
      mysql_connect("localhost""root""*****") OR die(mysql_error());
           
      mysql_select_db($db);

           
      $query_cat mysql_query ("SELECT * FROM webver_cat 
      WHERE cat = 
      $id") or die(mysql_error());
           while (
      $row_cat mysql_fetch_array ($query_cat)){
              echo 
      $row_cat[name];
              
      categries($row_cat[ID]);

              
      $treffer mysql_fetch_array(mysql_query("SELECT COUNT(*) 
      AS Anzahl FROM webver_eintrag WHERE cat = 
      $row_cat[ID]"));
              echo 
      $treffer[Anzahl];
         }
            }
      ?>
      Und das kommt bei der Ausgabe dabei raus:
      Grafik1SoftwareMicrosoft1

      - Stimmen tut das unter Grafik 1 eintrag ist und unter Microsoft einer.
      - [COLOR=red]Nicht stimmen tut, dass hinter Software nichts steht, den Microsoft ist ja eine unter Kategorie also müsst bei Software auch 1 stehen.[/COLOR]

      Bitte helft mir
      Danke
      Zuletzt geändert von TobiaZ; 18.12.2004, 23:12.

      Kommentar


      • #4
        Kann mir keiner Helfen???

        Kommentar


        • #5
          versuch ma die while schleife so zu modifizieren:
          PHP-Code:
          while ($row_cat mysql_fetch_array ($query_cat)){
                  echo 
          $row_cat["name"];

                  
          $treffer mysql_fetch_array(mysql_query("SELECT 
          [bla] 
          WHERE cat = 
          $row_cat['ID']"));
                  echo 
          $treffer["Anzahl"];

                  
          categries($row_cat["ID"]);

          Zuletzt geändert von TobiaZ; 18.12.2004, 23:13.

          Kommentar


          • #6
            Original geschrieben von penizillin
            versuch ma die while schleife so zu modifizieren:
            PHP-Code:
            while ($row_cat mysql_fetch_array ($query_cat)){
                    echo 
            $row_cat["name"];

                    
            $treffer mysql_fetch_array(mysql_query("SELECT [bla]
             WHERE cat = 
            $row_cat['ID']"));
                    echo 
            $treffer["Anzahl"];

                    
            categries($row_cat["ID"]);

            Damit bekomme ich leider die gleiche ausgabe:
            Grafik1Software0Microsoft1

            Nur Software ist immer noch 0 obwohl es ja auch 1 sein müsste den Microsoft ist ja eine unterkategorie.

            ich habe jetzt für [bla] = "COUNT(*) AS Anzahl From *" eingestezt.

            Aber Danke trotzdem.
            Zuletzt geändert von TobiaZ; 18.12.2004, 23:12.

            Kommentar


            • #7
              haste query mal ausgeben lassen?

              Kommentar


              • #8
                Ja, habe ich, nur das hat mir nicht geholfen bei der ersten kamm raus:

                Resource id #3
                Resource id #3
                Resource id #7

                und bei der zweiten:

                Resource id #4
                Resource id #6
                Resource id #8

                vieleicht kanst du da mit ja etwas anfangen.

                Währe dir auf jeden fall sehr dankbar darüber.

                momentanes Script:

                PHP-Code:
                <?php
                     mysql_connect
                ("localhost""root""******") OR die(mysql_error());
                     
                mysql_select_db(Datenbank);

                     
                $id 1;

                     
                categries($id);
                     function 
                categries($id){
                     
                $query mysql_query ("SELECT * FROM webver_cat 
                WHERE cat = 
                $id") or die(mysql_error());
                     while (
                $row_cat mysql_fetch_array ($query)){

                        echo 
                $row_cat[name];

                        
                $query_treffer mysql_query("SELECT COUNT(*) 
                AS Anzahl From webver_eintrag WHERE cat = 
                $row_cat[ID]");
                        
                $treffer mysql_fetch_array($query_treffer);
                        echo 
                $treffer[Anzahl];
                        
                categries($row_cat[ID]);
                     }
                   }
                ?>
                EDIT:
                TobiaZ: Umbrüche.
                Zuletzt geändert von TobiaZ; 18.12.2004, 23:11.

                Kommentar


                • #9
                  Du sollst die QUERY (=Abfrage an die DB) nicht die rückgabe von mysql_query() ausgeben.

                  Kommentar


                  • #10
                    Habe ich doch oder soll ich nur das ausgeben lassen?

                    SELECT * FROM webver_cat WHERE cat = $id

                    Kommentar


                    • #11
                      Habe ich doch oder soll ich nur das ausgeben lassen?
                      Nein, hast du eben nicht. Sonst hätte ich dir nicht geantwortet, dass du NICHT die Rückgabe von mysql_query() posten sollst.

                      die ausgabe von SELECT * FROM webver_cat WHERE cat = $id wäre also wesentlich zutreffender.-

                      Kommentar


                      • #12
                        AAAHHHH das tut mir leit, hier die ausgabe vom ersten:

                        1)
                        SELECT * FROM webver_cat WHERE cat = 1
                        SELECT * FROM webver_cat WHERE cat = 3
                        SELECT * FROM webver_cat WHERE cat = 4
                        SELECT * FROM webver_cat WHERE cat = 5

                        2)
                        SELECT COUNT(*) AS Anzahl From webver_eintrag WHERE cat = 3
                        SELECT COUNT(*) AS Anzahl From webver_eintrag WHERE cat = 4
                        SELECT COUNT(*) AS Anzahl From webver_eintrag WHERE cat = 5

                        Also ich weiss nicht???

                        Aber vieleicht kanst du mir helfen

                        Kommentar


                        • #13
                          wunderbar, das wollte ich.

                          und jetzt guck mal in deiner tabelle _cat, wie viele einträge die id 3 oder 5 haben.

                          richtig! keine!

                          somit liefern diese beiden abfragen auch keine zeilen zurück.

                          SELECT * FROM webver_cat WHERE cat = 3
                          SELECT * FROM webver_cat WHERE cat = 5

                          folglich wird die zugehörige while schleife auch nicht ausgeführt.

                          --

                          SELECT * FROM webver_cat WHERE cat = 1
                          liefert zwei zeilen. also werden in der folgenden while schleife folgende abfragen abgesetzt:

                          SELECT COUNT(*) AS Anzahl From webver_eintrag WHERE cat = 3
                          SELECT COUNT(*) AS Anzahl From webver_eintrag WHERE cat = 4

                          die abfrage
                          SELECT * FROM webver_cat WHERE cat = 4
                          liefert dir einen datensat, und daraus resultiert folgende abfrage:
                          SELECT COUNT(*) AS Anzahl From webver_eintrag WHERE cat = 5

                          ich hoffe damit kommst du weiter.

                          solltest du vermeiden abfragen in schleifen zu verwenden. du benötigst 7 abfragen. was machst du wenn du noch mehr ids abfragst. da landes du irgendwann bei 100 abfragen oder so.

                          Kommentar


                          • #14
                            Das habe ich jetzt schon verstanden, nur wie soll ich den code ändern das die jetzige Ausgabe:

                            Grafik1Software0Microsoft1

                            Dann so angezeigt wird:

                            Grafik1Software1Microsoft1

                            Weil Microsoft eine Unterkategorie von Software ist.

                            Ich glaube an diesem projekt werde ich noch scheitern, wenn ich es nicht schon bin.

                            Kommentar


                            • #15
                              aber in software ist doch gar kein eintrag!

                              Kommentar

                              Lädt...
                              X