Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] MYSQLi Abfrage mit unbekannter Start- und Endposition (Pagination)

Einklappen

Neue Werbung 2019

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

  • [Erledigt] MYSQLi Abfrage mit unbekannter Start- und Endposition (Pagination)

    Hallo,

    ich hoffe ich bin hier im richtigen Forum/Unterforum gelandet. Ich versuche seit Tagen eine eigentlich simple Sache zu lösen, doch mir wollen einfach nicht die richtigen Schlagwörter zum Suchen einfallen.

    Ich habe eine Tabelle mit benutzergenerierten Beiträgen, die jeweils als Prädikat 'Privacy' den Wert 'Public' oder 'Friends' haben können. In einer zweiten Tabelle sind die Freundschaften der einzelnen Benutzer eingetragen. Wenn nun jemand also einen Beitrag sucht, sollen nur die öffentlichen Beiträge und die seiner Freunde angezeigt werden. Das Problem ist nun die Seitennavigation. Ich lese erst alle Beiträge aus der Datenbank aus, die dem Suchbegriff entsprechen. Diese wiederum verarbeite ich in einer While-Schleife (-> fetch()), in derer ich eine Funktion auslöse, um zu überprüfen ob der Benutzer die Rechte hat, einen Beitrag sehen. Wenn dies nicht zutrifft, wird der Beitrag mit einem Continue übersprungen. Bei Erfolg wird der Beitrag in ein Array geschrieben und eine Variable hochgezählt, um die maximale Ausgabe von 20 Posts nicht zu überschreiten. Hat der Benutzer auf der ersten Seite 4 Beiträge übersprungen, stimmt auf Seite 2 der Startpunkt bei einer normalen Limit Seitennavigation natürlich nicht mehr. Aus diesem Grund habe ich die Sprünge in einer Session gespeichert, um dies zu umgehen. Dies funktioniert allerdings logischerweise nur, wenn der Benutzer stur von Seite zu Seite geht. Seitensprünge von z.B. 1 zu 4 funktionieren so nicht mehr. Hier müsste ich also eigentlich den ganzen Bereich von Seite 1-4 abgrasen und nur die letzten 20 Beiträge ausgeben. Bei wachsendem Datenaufkommen befürchte ich aber einen Einbruch der Performance.

    So weit verstanden? Danke schon einmal fürs Durchlesen.

    Meine Frage ist nun, geht das ganze auch einfacher? Ich habe diesbezüglich leider ein riesiges Brett vor dem Kopf und bin mit meinen 10 Monaten PHP/MYSQL Erfahrung auch noch nicht besonders versiert. Mein einziger anderer Ansatz wäre, die Daten einmal komplett auszulesen, in ein Session-Array zu speichern und darüber die Seitennavigation zu ermöglichen.

    Vielen Dank im Vorraus für Hilfe jeder Art. Der Blitz soll mich treffen, falls das doch ein schon öfter durchgekautes Thema ist.

    Viele Grüße.

    UPDATE Ein Kollege hat mich mit dem Schlagwort 'Subselect' auf die richtige Bahn gebracht. Vielleicht hilft das dem ein oder anderem ebenfalls weiter.

Lädt...
X