Wie eine Suche speichern?

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

  • Wie eine Suche speichern?

    Folgende Situation:

    - Webseite mit mini-cms und suchfunktion (autor, text, datum, ...)
    - suche möglich
    - wenn mehr als x ergebnisse, werden diese auf mehrere seiten verteilt

    was speichere ich wo?
    - speichere ich die IDs der gefundenen datensätze in der datenbank?
      - inklusive der eingegebenen suchkriterien?
      - ohne die eingegebenen suchkriterien?
    - speichere ich das generierte SELECT in der db?
    - lese ich alles aus und hau es in die session?

    möglichkeit 1 und 3 führen evtl. dazu, dass der suchende beiträge nicht findet, die zwischenzeitlich eingestellt wurden/geändert wurden

    möglichkeit 2 startet die suche jedes mal auf's neue, es werden also immer alle beiträge gefunden, aber die sind dann evtl. falsch sortiert und der benutzer sieht wieder nicht alle

    fällt jemandem eine möglichkeit ein, wie ich mit möglichst wenig belastung der db immer alle ergebnisse anzeigen kann?

    abgesehen von dem verzicht auf das blättern
    Ich denke, also bin ich. - Einige sind trotzdem...

  • #2
    wie wäre es mit 1 mit dem zusatz das nach 2,3 oder 4 Tagen der Datensatz gelöscht wird um die Suche aktuell zu halten, somit erreichst zumindest das die Suche aktuell bleibt und zugleich keine unnötige Last.

    Also eine Art Datenbank Cache für die Suchefunktion.

    Kommentar


    • #3
      Mhn, was bringt es dir, wenn du die Suchergebnisse ohne Suchkriterien speicherst?
      PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

      Kommentar


      • #4
        es bringt mir nur was zum blättern

        die suche findet datensätze.
        diese datensätze haben eine id

        speichere ich jetzt nur die ids, also nur 1, 5, 8, 19, 34, 75 oder zusätzlich noch die suchkriterien oder das generierte select, das ich absetze?


        aber angenommen, ich lasse mir die ergebniise nach datum absteigend sortiert anzeigen und ich blättere zu seite 2
        dann sehe ich einen neu eingestellten datensatz, der die bedingungen auch erfüllt, nicht

        und dazu such eich eine gute lösung oder kümmere ich mich da einfach nicht drum?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          wie üblich den suchstring übergeben, dazu halt dann die seitenid, wie immer bei pagern.

          also
          PHP-Code:
          suche.php?q=ich%20suche%20etwas&seite=

          Kommentar


          • #6
            und dazu such eich eine gute lösung oder kümmere ich mich da einfach nicht drum?
            wie ists denn hier im forum? wenn ich blätter, wird die query doch neu ausgeführt?! die lösung scheint mir bei häufigen updates doch ganz passabel?

            obwohl es mir persönlich auch nix ausmachen würde, erneut eine suche zu starten, wenn ich eine halbe stunde durch die suchergebnisse gebrowst hab. die suchbegriffe/kriterien sollten vielleicht schon da sein.

            btw: blätterst du auf seite zwo, siehst du in keinem fall die neuesten ergebnisse ... du siehst höchstens die letzten matches von seite eins auf seite zwo am anfang.

            imho.
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              stell dir vor, du suchst nach "sellerie" und bekommst die IDs der gefundenen datensätze, die du dir aufsteigen ausgeben lässt: 1 3 5 7 13 18 23 34

              du bekommst immer drei datensätze je seite angezeigt.
              seite 1: 1 3 5
              seite 2: 7 13 18
              seite 3: 23 24

              währned du auf seite 2 bist, editiere ich beitrag 6, weil ich da aus versehen statt "sellerie" nur "selerie" geschrieben habe

              wie stell eich jetzt möglichst effizient sicher, dass du auch deisen neuen beitrag zur kenntnis nimmst, am besten unter beachtung der sortierreihenfolge?

              es müsste ja so aussehen:
              seite 1: 1 3 5
              seite 2: 6 7 13
              seite 3: 18 23 24

              das merke ich nur, wenn ich bei jedem blättern die suche neu ausführe
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                das merke ich nur, wenn ich bei jedem blättern die suche neu ausführe
                dann tue das! bei drei einträgen pro seite und häufiger änderung wirds aber recht chaotisch ...
                OffTopic:
                den teufel mit dem beelzebub vertreiben
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  sind schon mehr als drei einträge, aber da es sich um die portierung einer anwendung ins web handelt und bei dieser anwendung einfach eine listbox angezeigt wird, die nach und nach gefüllt wird und bei einer änderung im backendsystem entsprechend reagiert...
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Hm .. vielleicht nicht wirklich effizient, aber das einzige was mir im Moment dazu einfällt:

                    Abfrage durchführen -> alle Ergebnisse (array halt) und suchkriterien in Session klatschen -> bei Seitenwechsel ne Abfrage mit Suchkriterien absetzen, die nur die Anzahl der DS prüft -> Anzahl mit Arraygröße vergleichen -> wenn größer den oder die neuen Beiträge zusätzlich auslesen (müssten eben irgendwie zu identifizieren sein) -> die neuen Beiträg gesondert vor oder hinter der eigentlich Liste ausgeben

                    "Seit dem Absetzen ihrer Suchabfrage sind neue Beiträge hinzugekommen:
                    - Beitrag1
                    - Beitrag2"

                    Wie gesagt, nicht so wirklich toll .. aber was besseres fällt mir im Moment nicht ein (mir fällt ja nicht mal ne sinnvolle Signatur ein )
                    [color=red]Geht nicht[/color] ist keine Fehlermeldung

                    Kommentar


                    • #11
                      Original geschrieben von mrhappiness
                      ...
                      während du auf seite 2 bist, editiere ich beitrag 6, weil ich da aus versehen statt "sellerie" nur "selerie" geschrieben habe...
                      also ich sortiere ein Suchergebnis generell nicht nach IDs, denn dann tritt dein Problem auf , sondern immer nach Änderungsdatum, d.h. wiederum dass ich immer 2 DateTime Spalten in jeder Datentabelle habe, eine enthält Erstellungsdatum und die andere das Änderungsdatum.

                      Kommentar


                      • #12
                        Original geschrieben von asp2php
                        also ich sortiere ein Suchergebnis generell nicht nach IDs, denn dann tritt dein Problem auf , sondern immer nach Änderungsdatum, d.h. wiederum dass ich immer 2 DateTime Spalten in jeder Datentabelle habe, eine enthält Erstellungsdatum und die andere das Änderungsdatum.
                        was aber an seinem Problem eigentlich nix ändert ... wenn nun ein Beitrag hinzu kommt während er auf Suchseite 3 rumirrt, bekommt er den auch nicht angezeigt, weil dieser ja auf Seite 1 zu finden sein müsste
                        [color=red]Geht nicht[/color] ist keine Fehlermeldung

                        Kommentar


                        • #13
                          Original geschrieben von Big Chief
                          weil dieser ja auf Seite 1 zu finden sein müsste
                          es kommt darauf an wie mans sortiert

                          Kommentar


                          • #14
                            du sagst du sortierst nach Änderungsdatum ... also steht ein neuer Datensatz entweder am Anfang oder am Ende ... was für das Prob aber egal is
                            [color=red]Geht nicht[/color] ist keine Fehlermeldung

                            Kommentar


                            • #15
                              Original geschrieben von Big Chief
                              du sagst du sortierst nach Änderungsdatum ...
                              das stimmt, aber ich habe nicht gesagt, ob asc oder desc

                              also steht ein neuer Datensatz entweder am Anfang oder am Ende ...
                              richtig erkannt
                              was für das Prob aber egal is
                              denke ich nicht, wenn man dem User entsprechend mitteilt, dass die aktuellen Daten sich immer am Anfang bzw. am Ende befindet und durch Reload sich auch aktualisiert. Die meisten User (abgesehen von richtigen DAUs) wissen auch, dass man bei einer Multiuser(Web)Application immer das Problem hat, dass die Daten sich von einer Sekunde auf die nächste sich ändern könnte, und stellt sich auch darauf ein. Bei der Lösung mit der IDs hast du nicht die Möglichkeit zu sagen, welche Daten neu/aktuell sind, und welche nicht.

                              Kommentar

                              Lädt...
                              X