murraene: PHP Suchformular - Ergebnisliste - blättern - $_POST

Bin auf der Suche nach dem richtigen Denkanstoss

Hab ein Suchformular, das ein MySQL DB durchsucht. Submit Methode ist POST, hierauf bin ich auch festgelegt. Ich limitiere die Ergebnisanzahl per LIMIT  auf 50, da meist mehrere hundert Treffer erzielt werden.

Wie könnte man das Ganze jetzt elegant lösen, dass man dann die Ergebnisseiten durchblättern kann?

Also 1-50, 51-100, 101-151,.....

Mit $_GET wäre das alles einfachen, bin aber aus diversen Gründen mit $_POST unterwegs.

Vielen Dank schon mal

  1. Liebe(r) murraene,

    was hast Du in dieser Hinsicht schon recherchiert? Im hiesigen Archiv kannst Du jedenfalls fündig werden. Meines Wissens hat hier "Malcom Beck´s" an genau so einer Lösung gearbeitet.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. "Malcom Beck´s"

      da ist ein Schreibfehler. Es muss "Malcolm" heißen, mit einem zweiten "l" im Namen. Und weil ich Mist gebaut habe, hier der Link zum Archiv-Thread: Sinnvolles Markup für Weiterblättern-Menu

      Liebe Grüße,

      Felix Riesterer.

      --
      ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
  2. hi,

    Bin auf der Suche nach dem richtigen Denkanstoss
    Also 1-50, 51-100, 101-151,.....
    Mit $_GET wäre das alles einfachen, bin aber aus diversen Gründen mit $_POST unterwegs.

    Nunja, mit GET hast Du immer einen REQUEST_URI im Browser welcher die Position innerhalb der DB/Tabelle beeinhaltet. Beim POST gibt es die Möglichkeit, die Position/Seitennummer in einem hidden-Field abzulegen, somit bekommst Du das auch in den Browser.

    Falls noch mehr Werte im Browser gebraucht werden, denke über einen Cookie nach.

    Hotti

  3. Mit $_GET wäre das alles einfachen, bin aber aus diversen Gründen mit $_POST unterwegs.

    Ich kann dir nicht folgen - $_POST und $_GET verhalten sich (abgesehen von diversen Einschränkungen, wie etwa die maximale Eingabelänge in der Adresszeile oder die Maximale Länge eins URL, die für deinen Fall nicht relevant sind) absolut gleich.

    1. ja, ich könnte, nachdem ich die erste Ergebnisseite angezeigt habe den Suchbegriff in den Link für die folgenden Seiten als $_GET Variable mit reinschreiben. Aber is das schön?

      1. ja, ich könnte, nachdem ich die erste Ergebnisseite angezeigt habe den Suchbegriff in den Link für die folgenden Seiten als $_GET Variable mit reinschreiben. Aber is das schön?

        Es geht also um eine Suchfunktion :)

        Wordpress macht das z.B. auch nicht anders.

        Du kannst aber auch gleich die Suchfunktion per GET abfeuern.

        1. Dass es um die SuFu geht hatte ich glaub ich erwähnt und dass ich auf POST beschränkt bin auch...

          Hat sich erledigt, habs jetzt in den Link geschrieben...

          1. Liebe(r) murraene,

            und dass ich auf POST beschränkt bin [...]
            habs jetzt in den Link geschrieben...

            das muss jetzt aber nicht zusammenpassen, oder? Klingt so, als hättest Du Dein Problem nicht wirklich verstanden...

            Liebe Grüße,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
          2. Dass es um die SuFu geht hatte ich glaub ich erwähnt

            Ja, mein Fehler - hab' ich überlesen.

            und dass ich auf POST beschränkt bin auch...

            Ja, aber nicht dass du "darauf beschränkt bist" weil du es so willst oder weil es eine technische gegegeben heit ist.

      2. Moin!

        ja, ich könnte, nachdem ich die erste Ergebnisseite angezeigt habe den Suchbegriff in den Link für die folgenden Seiten als $_GET Variable mit reinschreiben. Aber is das schön?

        Aha. Dein Problem ist also, dass Du den Suchbegriff verlierst. Ich seh da immer noch nicht wo der Unterschied zwischen Post und Get sein soll, aber was spricht denn gegen eine Session? Falls Cookies deaktiviert sind, musst Du natuerlich die Session ID genauso durchschleifen.

        --
        Vergesst Chuck Norris.
        Sponge Bob kann unter Wasser grillen!
        1. Aha. Dein Problem ist also, dass Du den Suchbegriff verlierst. Ich seh da immer noch nicht wo der Unterschied zwischen Post und Get sein soll, aber was spricht denn gegen eine Session? Falls Cookies deaktiviert sind, musst Du natuerlich die Session ID genauso durchschleifen.

          Wenn du zwei Suchabfragen zu unterschiedlichen Suchbegriffen gleichzeitig offen hast und durchblätterst schlägt das Konzept fehl.

          Eine Sessionbasierende Navigation ist nur selten sinnvoll - z.B. dann wenn der Besucher auf genau ein Browserfenster mit genau einem Tab beschränkt ist - etwa bei einem Infoterminal oder ähnliches.

          Aber auch da lässt es sich mit GET/POST schneller und einfacher machen.

        2. Hi!

          ja, ich könnte, nachdem ich die erste Ergebnisseite angezeigt habe den Suchbegriff in den Link für die folgenden Seiten als $_GET Variable mit reinschreiben. Aber is das schön?
          Aha. Dein Problem ist also, dass Du den Suchbegriff verlierst. Ich seh da immer noch nicht wo der Unterschied zwischen Post und Get sein soll, aber was spricht denn gegen eine Session? Falls Cookies deaktiviert sind, musst Du natuerlich die Session ID genauso durchschleifen.

          Gegen eine Session spricht einiges. Auch gegen das POST, denn dieses sollte verwendet werden, wenn Daten zu ändern sind. Wenn es lediglich um eine Abfrage geht, die mehrfach wiederholt immer wieder das selbe Ergebnis liefern soll, so ist ein GET angebracht. Denn es spricht üblicherweise nichts dagegen, dass man eine URL auf die Ergebnisseite sowieso des Suchbegriffs hastenichtgesehen, nicht speichern können sollte, um sie bei nächstbester Gelegenheit direkt aufzurufen, oder solch eine URL weiterzugeben. Weder mit einer Session noch beim POSTen besteht diese Möglichkeit. Abgesehen vom Suchbegriff, also nur mal die reine Blätterfunktion betrachtend, macht man es auf diese Weise Suchmaschinen schwer bis unmöglich, sich durch eine paginierte Datenmenge zu bewegen.

          Als Faustregel gilt: Wenn mit den selben Daten und nebenwirkungsfrei das selbe Ergebnis erzielt werden soll, so bringe man diese in einer URL unter. Ansonsten nehme man POST. Sessions braucht man erst, wenn ein Zustand festgehalten werden soll.

          Für eine Blätterfunktion braucht man sich keinen Zustand zu merken, denn man kann sehr gut durch die zwei Parameter Offset und Limit an jede beliebige Stelle springen, ohne eine eventuell vorher besuchte kennen zu müssen.

          Lo!