Problem mit MySQL auszählen

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

  • 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**

    Kommentar


    • #3
      oh, so leicht übersieht man was :/ Danke.
      Zuletzt geändert von Seek; 18.11.2004, 12:33.

      Kommentar


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

        Kommentar


        • #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.

          Kommentar


          • #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

            Kommentar


            • #7
              haste mal ne testausgabe gemacht?

              Kommentar


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

                Kommentar


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

                  @asp2php

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

                  Kommentar


                  • #10
                    doch!

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

                    Kommentar


                    • #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?
                      Zuletzt geändert von Seek; 18.11.2004, 15:06.

                      Kommentar


                      • #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.

                        Kommentar


                        • #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
                          Zuletzt geändert von Seek; 18.11.2004, 15:31.

                          Kommentar


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

                            Kommentar


                            • #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 %?

                              Zuletzt geändert von Seek; 18.11.2004, 16:06.

                              Kommentar

                              Lädt...
                              X