Ankündigung

Einklappen
Keine Ankündigung bisher.

Suchergebnisse über mehrere Seiten?

Einklappen

Neue Werbung 2019

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

  • Suchergebnisse über mehrere Seiten?

    Hallo zusammen!

    Ich benötige für mein Webprojekt eine Aufsplittung von Suchergebnissen auf mehrere Seiten, wenn die Anzahl von sagen wir 10 überschritten wird.

    Habe lange gegrübelt wie ich vorgehen könnte. Meine Idee war im SQL statement mich auf eine bestimmte Ergebnismenge zu beschränken ala "LIMIT 0,9". So gebe ich maximal 10 aus. Nur wenn ich mit mysql_num_rows versuche, die Zahl der glieferten Ergebniszeilen rauszukriegen, ist sie natürlich auch immer 10 . Also weiß ich so nicht, ob es nötig wäre noch ne 2. oder 3. Seite mit Suchergebnissen aufzumachen.

    Hat vielleicht jemand von euch nen Tip wie man sowas überhaupt am Besten löst?

    Gruss
    Holger


  • #2
    Wenn ich das richtig verstehe willst du dein Ergebniss in 10er Blöcke aufteilen, aber auch gleichzeitig die gesamte Anzahl der Ergebnisse oder?

    Kommentar


    • #3
      Ja genau. Im Prinzip so wie es alle machen. Du suchst z.B. bei ebay nen Artikel und bekomms x-Seiten angezeigt.

      Ich möchte die angezeigten Ergebnisse auf 10 beschränken. Erste Seite 1 - 10, nächste Seite 11 - 20 usw... Muss also auch wissen, wieviele Ergebnisse gab. Ich könnte natürlich einfach das SQL statement 2x ausführen. Einmal ohne LIMIT und wenn die Ergenisszahl größer 10 ist wieder mit LIMIT. Find ich nur irgendwie doof diese idee. Die Datenbank wird dann ja unnötig beschäftigt.

      Gruss
      Holger

      Kommentar


      • #4
        Du wirst wohl ohne 2tes SQL-Statement nicht voran kommen. Du musst aber nicht alle Datensätze abfragen. Es reicht ja ein SELECT COUNT(*) FROM table

        Kommentar


        • #5
          Das ist die gängige Methode zwei Querys zu senden!

          Kommentar


          • #6
            Zitat von Flor1an Beitrag anzeigen
            Das ist die gängige Methode zwei Querys zu senden!
            Aber nicht nötig.
            Zitat von [URL=http://dev.mysql.com/doc/refman/5.1/de/select.html]13.2.7. SELECT[/URL]
            SQL_CALC_FOUND_ROWS weist MySQL an, zu berechnen, wie viele Datensätze ohne Berücksichtigung einer ggf. vorhandenen LIMIT-Klausel in der Ergebnismenge enthalten wären. Die Anzahl der Datensätze kann dann mit SELECT FOUND_ROWS() abgerufen werden. Siehe auch Abschnitt 12.10.3, „Informationsfunktionen“.
            Gruss
            L

            Kommentar


            • #7
              Ähm und wieso werden im Beispiel im MySQL-Manual auch 2 Queries gesendet?

              Kommentar


              • #8
                Wenn du SQL_CALC_FOUND_ROWS verwendest musst du danach noch einen zweiten Query senden der mit FOUND_ROWS() diese Zahl dann ausliest. Hast also auch 2 Querys.

                Und meistens möchte man erst wissen wie viele Datensätze existieren, um dann zu überprüfen ob die Seite, die angegeben wird, auch wirklich existiert! Denn sonst würdest du einen Query abschicken der möglicherweise Einträge auslesen möchte die gar nicht existieren. Braucht es aber nicht unbedingt.

                Ich weiß auch nicht wie es ist wenn zwischen diesen zwei SELECT Statements, durch ein anderes Skript, wieder SQL_CALC_FOUND_ROWS aufgerufen wird. Dann könnte sich der Wert verändern und man hätte ein Problem.

                Kommentar


                • #9
                  Zitat von Flor1an Beitrag anzeigen
                  Ich weiß auch nicht wie es ist wenn zwischen diesen zwei SELECT Statements, durch ein anderes Skript, wieder SQL_CALC_FOUND_ROWS aufgerufen wird. Dann könnte sich der Wert verändern und man hätte ein Problem.
                  Das wird wie affected_rows und last insert id pro MySQL-Verbindung gespeichert.

                  Kommentar


                  • #10
                    Stimmt, aber kommt irgendwo aufs selbe hinaus Aber ich werds mir mal anschauen vielleicht lässt es sich sinnvoll nutzen.

                    Kommentar


                    • #11
                      Dutzende HowTo's, Tutorials, Scripte etc. unter dem Stichwort Pagination zu finden.
                      "Nobody is as smart as everybody" - Kevin Kelly
                      — The best things in life aren't things

                      Kommentar


                      • #12
                        Ja prima hinweise. Bin schon am Basteln.

                        Frage mich nur noch, was ich mit meinem SQL statement mache, da es abhändig vom Suchformular zusammengebaut wird. Denke ich werde wohl ne Session starten müssen, um es dann abzulegen.

                        Gruss
                        Holger

                        Kommentar


                        • #13
                          Wozu ne Session? Du kannst doch die Formularwerte mit übergeben?

                          Kommentar


                          • #14
                            Naja, für alle nachfolgenden Seiten existiert ja kein Formular mehr.

                            Ich könnte also höchstens ne Variable an die Link URL hängen, die zur nächsten oder vorigen Seite führt. Das mache ich auch. Dann berechne ich den Offset über die Seitenzahl für LIMIT und ergänze so passend, das in der Session gespeicherte SQL Statement.

                            Gruss
                            Holger

                            Kommentar


                            • #15
                              Wieso das SQL Statement in der Session speichern? Das SQL Statement steht im Skript und dort wird LIMIT eingefügt. Also sowas hab ich noch nie gehört dass jemand SQL Statements über die Session übergibt.

                              Kommentar

                              Lädt...
                              X