Planung/Porgrammierstil: PHP Navigation für Such- und Anzeigeergebnisse

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

  • Planung/Porgrammierstil: PHP Navigation für Such- und Anzeigeergebnisse

    hallo
    ich habe nicht direkt ein Problem, ich würde gern wissen ob ich bei einer Applikation korrekt vorgegangen bin:

    Ich habe eine Applikation geschrieben, wo verschiedene User sich auf einer Seite registrieren und einloggen können.

    Dazu gehören ein paar Scripte, mit denen sich der Administrator ebenfalls einloogen, und eben verschiedenste Dinge administrieren kann: Stammdaten der User einsehen, ändern, Acc. freischalten, sperren, PW versenden, User löschen usw.usw.

    Wenn 'Administrator' sich einlogt, sieht er als erstes die Zahlen der neu angemeldeten, aktivierten, gesperrten User. Als nächstes kann er diese anklicken und bekommt eine Tabelle mit den wichtigsten Stammdaten seiner User.

    - Das als ganz grober Überblick, nun versuch ich in kurzer Form auf den Punkt zu kommen:

    In eben dieser Listenansicht soll er stets nur eine definierte max. Anzahl an Reihen sehen - also brauche ich eine Seitennavigation.
    Und die habe ich bisher wie folgt realisiert:

    Ich mache direkt beim Einloggen 4 verschiedene Query: [COLOR=darkblue]SELECT ID from `$usertable` WHERE 'Bedingung'..[/COLOR] für alle geforderten Kategorien (z.Zt. 4). Die IDs schreibe ich einfach als [COLOR=firebrick]Array [/COLOR] in eine SESSION - zusammen mit den jeweiligen Anzahlen, die der Query ja auch liefert. Es gibt auch eine Freitextsuche, wird diese ausgeführt, so schreibe ich die gefundenen IDs, Anzahl ebenfalls als [COLOR=firebrick]Array [/COLOR] in die SESSION. Mit den Arrays in der SESSION habe ich dann die Listennavigation realisiert:

    Da ich [COLOR=darkblue]$max_anzuzeigen[/COLOR] kenne, kann ich auch gleich die [COLOR=darkblue]$anzahl_seiten[/COLOR] für alle Kategorien bestimmen und in der SESSION ablegen. In meiner Navi kann ich nun bequem die SESSION auslesen und über eine [COLOR=darkblue]for() [/COLOR] Schleife sowohl die Navigation bauen, als auch für die Darstellung die SELECTs absetzen.

    Es gibt für User und Administrator jeweils nur eine einzige mySQL Tabelle.

    so ich hoffe ich habe die Kernfunktionen prägnant beschrieben (?)
    Meine Frage lautet nun, ist diese Vorgehensweise geschickt oder würdet ihr mir was sinnvolleres empfehlen?

    Und nebenbei: zur Darstellung nehme ich die SMARTY
    Danke, Gruß

  • #2
    Wie stellst du denn sicher, dass die Daten in der Session noch dem Zustand der DB entsprechen?

    Kommentar


    • #3
      Der Stand entspricht dem beim Einloggen, da wird die SESSION erzeugt, die beim Ausloggen gelöscht wird.
      Wenn sich mitten im Admin.vorgang jemand registriert/löscht, der wird nicht erfasst, stimmt... ein Schwachpunkt. Naja die Freitextsuche erfasst jedenfalls alles.
      Vorschläge?

      Kommentar


      • #4
        Normalerweise holt man sich nicht alle Datensätze und cacht diese irgendwo (bei dir in der Session), sondern du holst dir die Anzahl der Datensätze direkt von der Datenbank mit einem "select count(*)"-Query und selektierst für die Befüllung der Tabelle nur die aktuell anzuzeigenden Daten mit einer entsprechenden Query und einem "limit $seitenzahl*$eintraege_pro_seite, $eintraege_pro_seite".

        Und hier kannst du dann zum Beispiel die Datensatzanzahl oder die Daten einzelner Seiten cachen, natürlich mit entsprechender Aktualitätsprüfung.

        Kommentar


        • #5
          ja das klingt eleganter und einfacher. in der Navi hätte ich dann schliesslich nur noch sowas wie ne schleife über...
          PHP-Code:
          <a href='index.php?cat=$category&seite=$seite> [ $seite ] </a> 
          richtig?

          und der [COLOR=darkblue]SELECT[/COLOR] mit [COLOR=darkblue] "limit $seitenzahl*$eintraege_pro_seite, $eintraege_pro_seite"[/COLOR] stellt mir sicher daß ich auf jeder Seite die richtigen Daten bekomme und auch kein Datensatz verloren geht? Dann ist das in der Tat besser.

          Vielen Dank

          Kommentar


          • #6
            Naja, du musst ein wenig aufpassen, wenn jemand per Hand die Seitenzahl in der URL ändert, könnte es sein, dass das Statement keine Ergebnisse liefert, aber sonst ist das so unproblematisch.

            Kommentar


            • #7
              PHP-Code:
               "limit $seitenzahl*$eintraege_pro_seite$eintraege_pro_seite
              ... nette Lösung!

              Kommentar

              Lädt...
              X