blätterfunktion

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

  • blätterfunktion

    hi!

    bin gerade dabei eine kommentarfunktion für eine bildergallerie zu erstellen.

    ich würde gerne eine blätterfunktion implementieren und nur jeweils 5 kommentare pro seite zulassen. die abfrage schränk ich mit limit 1 bis 5 testhalber ein. die ersten 5 ergebnisse werden so anstandslos zurückgegeben:
    Code:
    SELECT `date_time` , `nickname` , `email` , `location` , `comment`
    FROM `gallery_comments`
    WHERE `id_event` = '14' AND `id_image` = '58'
    ORDER BY `id_comment` DESC
    LIMIT 1 , 5;
    mich würde jetzt aber noch die gesamtanzahl der kommentare interessieren. gezählt werden sollen die anzahl der zeilen in der tabelle, die unter id_image 58 stehen haben.

    gibt es eine möglichkeit die gesamtzahl auch noch in das query zu packen, oder ist eine eigene abfrage nötig?

    besten dank!

  • #2
    Re: blätterfunktion

    gibt es eine möglichkeit die gesamtzahl auch noch in das query zu packen, oder ist eine eigene abfrage nötig?
    eigene.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      verrätst mir auch welche, bitte? count ohne group by ist nicht möglich.

      Kommentar


      • #4
        Original geschrieben von php_rookie
        verrätst mir auch welche, bitte? count ohne group by ist nicht möglich.
        dann benutz doch ein count mit group by ...

        außerdem, wenn du blättern willst, sollte es dich nicht nur interessieren, wieviel einträge es sind ...
        für gewöhnlich stellt man die anzahl der einträge fest, bevor man das limit anwendet ...
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Hallo,

          falls du mySql ab 4.0.x benutzt, könnte evtl. folgendes helfen


          Select {...}, SQL_CALC_FOUND_ROWS * from table where {...} ORDER LIMIT x,y

          im Kombination mit found_rows() liefert mysql die anzahl der datensätze, die es ohne LIMIT zurückgegeben würde.


          nice day
          Quickborner

          Kommentar


          • #6
            Original geschrieben von derHund
            dann benutz doch ein count mit group by ...
            ?

            wenn ich wüsste, wie ich count mit group by einfügen muss, würde ich nicht hier fragen?

            Code:
            SELECT `date_time` , `nickname` , `email` , `location` , `comment`
            COUNT `id_event` AS `event_count`
            FROM `gallery_comments`
            WHERE `id_event` = '14' AND `id_image` = '58'
            ORDER BY `id_comment` DESC
            GROUP BY `id_event`
            LIMIT 1 , 5;
            ist nicht richtig.
            außerdem, wenn du blättern willst, sollte es dich nicht nur interessieren, wieviel einträge es sind ...
            es interessiert mich aber, wieviele beiträge es insgesamt sind, da ich eine navigation in der form

            seite(n): 1 | 2 | 3 | 4 | 5

            aufbauen möchte, und dazu brauch ich eben die gesamtanzahl der beiträge. die fett markierte zahl ist die kommentarseite die ich anzeigen lassen möchte.

            Kommentar


            • #7
              Original geschrieben von Quickborner
              falls du mySql ab 4.0.x benutzt, könnte evtl. folgendes helfen


              Select {...}, SQL_CALC_FOUND_ROWS * from table where {...} ORDER LIMIT x,y

              im Kombination mit found_rows() liefert mysql die anzahl der datensätze, die es ohne LIMIT zurückgegeben würde.
              danke für den hinweis. wenn ich es einfüge erhalte ich jedoch einen syntax error:
              Code:
              SELECT `date_time` , `nickname` , `email` , `location` , `comment`
              SQL_CALC_FOUND_ROWS *
              FROM `gallery_comments`
              WHERE `id_event` = '14' AND `id_image` = '58'
              ORDER BY `id_comment` DESC
              LIMIT 1 , 5;

              Kommentar


              • #8
                wenn ich es einfüge erhalte ich jedoch einen syntax error:
                der da lautet?
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  der da lautet:
                  MySQL meldet:
                  #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SQL_CALC_FOUND_ROWS *
                  FROM `gallery_comments`
                  WHERE `id_ev

                  Kommentar


                  • #10
                    es interessiert mich aber, wieviele beiträge es insgesamt sind, da ich eine navigation in der form
                    ja, lies doch mal die beiträge ... ich sagte nur, daß es für gewöhlich vor dem limit zu bestimmen ist ...
                    ist nicht richtig.
                    ach nee, was meinste, was ich mit 'eigene' meinte?

                    schau dir mal den syntax vom Quickborner an, vergleiche ihn mit deinem ... stell den unterschied fest ...
                    Die Zeit hat ihre Kinder längst gefressen

                    Kommentar


                    • #11
                      deinen ausführungen nach ist es nicht möglich. ich werde wohl mit zwei abfragen arbeiten müssen. trotzdem danke für dein bemühen.

                      Kommentar


                      • #12
                        hast du mal ein komma probiert?
                        Die Zeit hat ihre Kinder längst gefressen

                        Kommentar


                        • #13
                          Original geschrieben von derHund
                          hast du mal ein komma probiert?
                          yep. ändert nichts an der tatsache, dass es einen fehler produziert.

                          Kommentar


                          • #14
                            Original geschrieben von Quickborner
                            Select {...}, SQL_CALC_FOUND_ROWS * from table where {...} ORDER LIMIT x,y

                            im Kombination mit found_rows() liefert mysql die anzahl der datensätze, die es ohne LIMIT zurückgegeben würde.
                            nach einigen versuchen, nach dem motto "das muss doch gehen" hat sich herausgestellt, dass unter MySQL 4.0.20 nur folgende syntax funktioniert:
                            Select SQL_CALC_FOUND_ROWS *, {...} from table where {...} ORDER LIMIT x,y
                            "SQL_CALC_FOUND_ROWS *" _muss_ als erstes stehen, ansonsten liefert mysql obige fehlermeldung retour.

                            wie found_rows() zu benutzen ist, hab ich noch nicht herausgefunden.

                            Kommentar


                            • #15
                              found_rows()

                              liefert bei mir immer 18, egal wie viele datensätze wirklich vorhanden sind...
                              tolle wurst

                              Kommentar

                              Lädt...
                              X