Problem mit MySQL auszählen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit MySQL auszählen

    Hallo,

    Ich habe ein Script für die Ausgabe von Downloads mit Smarty geschrieben. Das funktioniert soweit. Nun wollte ich aber neben der Meldung dass keine Downloads vorhanden sind eine Ausgabe wieviel Downloads/Einträge in der entsprechenden Sektion vorhanden sind.

    Am entsprechenden Ort in der Switch Abfrage steht nun ein zweiter Query (hier für alle Downloads)
    PHP Code:
    $query2"SELECT COUNT(*) FROM
                  euo_downloads_data;"

    Da bringt er auch keine Fehlermeldung. Wenn ich nun aber nur die ensprechenden Sektionen in der Spalte Sektionen zählen will geht das nicht, obschon es laut MySQL Manual so funktionieren müsste.

    PHP Code:
    $query2"SELECT
                  Sektion
                COUNT(*) FROM
                  euo_downloads_data
                WHERE
                  Sektion='Tools'
                GROUP BY
                  Tools;"

    Aber vermutlich ist da trotzdem was falsch. Nun das ist das eine Problem. Das andere ist die Ausgabe als Zahl. Da hab ich folgendes versucht:

    PHP Code:
     /* Ausgabe von Downloads */
       
    $downloads = array();
       
    $dlquery mysql_query($query) OR die(mysql_error());
          while (
    $row mysql_fetch_assoc($dlquery))
          {
          
    $downloads[] = $row;
          }
       
    /* Falls keine Downloads vorhanden melde dies, ansonsten else Teil*/  
       
    $dlquery mysql_query($query) OR die(mysql_error());
       
    $row mysql_fetch_assoc($dlquery);
          if (empty(
    $row)) {
          
    $leer "Es befinden sich (noch) keine Downloads in der ".$sektion." Sektion";
       
    /* Der else Teil soll angeben wieviele Einträge in dieser Sektion vorhanden sind */
       
    } else {
          
    $dbcount = array();
          
    $countquery mysql_query($query2) OR die(mysql_error());
          while (
    $row2 mysql_fetch_assoc($countquery))
          {
          
    $dbcount[] = $row2;
          }
          
    $countsum array_sum($dbcount);
       } 
    Nach verschiedenen Versuchen hab ich hierbei gar keine Ausgabe mehr (bei alle Downloads), also die Tabelle im Template mit {$countsum} wird nicht ausgegeben, obschon $countsum definiert ist und so im Template steht. Aber vermutlich ist meine Abfrage auch nicht zu gebrauchen. Wer kann mir helfen?

    Gruss

    Seek

  • #2
    es fehlt ein Komma hinter Sektion und schau dir dein GROUP BY an.

    btw: **verschieb**

    Comment


    • #3
      oh, so leicht übersieht man was :/ Danke.
      Last edited by Seek; 18-11-2004, 12:33.

      Comment


      • #4
        Bräuchte noch Hilfe beim auszähl Teil, hat niemand nen Tipp wie ichs machen kann? Sonst komme ich nicht weiter.

        Comment


        • #5
          Bist du etwa auch so einer, der die Queries auslagert?

          ich hab in deinem code so viele unbekannte/undefinierte variablen, dass ich da gar nicht durchblicken kann.

          Comment


          • #6
            Die stehen ja bist auf $query2 direkt im relevanten Code und diesen hab ich ja oben schon gepastet. Es geht ja nur um den else Teil und bei den paar Zeilen sollte man doch den Durchblick behalten

            Comment


            • #7
              haste mal ne testausgabe gemacht?

              Comment


              • #8
                @Seek, du weißt, dass dein $dbcount ein Multidimensionalarray ist?

                Comment


                • #9
                  jo, laut var_dump gibts int(0).

                  @asp2php

                  Ne, wieso ist das mehrdimensional? Ich speichere doch kein array im array?

                  Comment


                  • #10
                    doch!

                    PHP Code:
                      while ($row2 mysql_fetch_assoc($countquery))
                          {
                          
                    $dbcount[] = $row2

                    Comment


                    • #11
                      Versteh ich nicht, so wird doch jede Zeile einzeln rausgeholt und in die Variable geschrieben, genauso wie ichs schon hier gemacht hab

                      PHP Code:
                      $downloads = array();
                         
                      $dlquery mysql_query($query) OR die(mysql_error());
                            while (
                      $row mysql_fetch_assoc($dlquery))
                            {
                            
                      $downloads[] = $row;
                            } 
                      Und da funktioniert es zumindest. Oder denk ich grad komplett falsch?
                      Last edited by Seek; 18-11-2004, 15:06.

                      Comment


                      • #12
                        Original geschrieben von Seek
                        Und da funktioniert es zumindest.
                        und was ist $downloads anschließend ...?
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Comment


                        • #13
                          Habt natürlich recht, jetzt versteh ich wies gespeichert wird. Aber wie ichs nun mache dass das Zusammenzählen funktioniert weis ich noch immer nicht .

                          Edit:

                          Evtl. doch
                          Last edited by Seek; 18-11-2004, 15:31.

                          Comment


                          • #14
                            wozu machst du ein group by, wenn du sowieso alles in inen pott schmeißt? da kannst du dir doch einiges sparen.

                            Comment


                            • #15
                              Ohne gibts nen error und zudem stehts so im mysql manual (http://dev.mysql.com/doc/mysql/de/Counting_rows.html).

                              Bei der Anzeige der Downloads kann ich ja mit Smarty über {$downloads.spalte} auf das ensprechende Element zugreifen. Wie mache ich das aber in diesem Fall? Wenn var_dump Ausgabe =
                              Array
                              (
                              [0] => Array
                              (
                              [COUNT(*)] => 4
                              )

                              )
                              Denn mit {$dbcount.COUNT(*)} kann ich nicht drauf zugreifen, wenn der else Teil so aussieht:
                              PHP Code:
                              } else {
                                    
                              $dbcount = array();
                                    
                              $countquery mysql_query($query2) OR die(mysql_error());
                                    while (
                              $row2 mysql_fetch_assoc($countquery))
                                    {
                                    
                              $dbcount[] = $row2;
                                    }
                                 } 
                              Edit:

                              Und was mach ich mit
                              PHP Code:
                              $countsum array_sum($dbcount); 
                              Brauch ich das überhaupt?

                              Und was ist hier falsch?

                              PHP Code:
                              $query2"SELECT
                                            Sektion,
                                          COUNT(*) FROM
                                            euo_downloads_data
                                          WHERE
                                            Sektion='tmp%'
                                          GROUP BY
                                            Sektion;"

                              Da gibt var_dump nichts aus, obschon 2 Einträge vorhanden sind, hat er ein problem mit dem %?

                              Last edited by Seek; 18-11-2004, 16:06.

                              Comment

                              Working...
                              X