Gerold: Link ruft PHP Funktion auf

Hallo Community!

Ich habe lange nichts mehr mit PHP programmiert und bin stark Java vorbelastet.
Habe mich nun ein wenig der OOP in PHP gewidmet und ich krieg eine Sache nicht hin:

Ich habe eine Tabelle mit mehreren Zeilen:

Inv.Nr | Titel | Autor |
------------------------
001       aa       AA
002       bb       BB

Die Bezeichnungen Inv.Nr, Titel etc sind Klassen mit den Variablen sortType und der Funktion changeSortType().

Die Funktion changeSortType wechselt den sortType entweder auf ASC oder DESC.

Ich würde nun gerne diese Klassen als Link darstellen und bei einem Klick darauf die Funktion changeSortType() aufrufen, sodass der sortType geändert und danach die Tabelle entsprechend neu sortiert ausgegeben wird.

Ich hoffe, dass ich mich verständlich ausgedrückt habe und jmd mir bei diesem delikaten Problem weiterhelfen kann (Lösungsvorschläge ohne Java-Script sind bevorzugt :))

MfG Manuel

  1. Hi!

    Ich würde nun gerne diese Klassen als Link darstellen und bei einem Klick darauf die Funktion changeSortType() aufrufen, sodass der sortType geändert und danach die Tabelle entsprechend neu sortiert ausgegeben wird.

    Klassen als Link darstellen? Klicks rufen Funktionen auf dem Server auf? HTML-Links haben nicht mit OOP-Klassen zu tun. Links rufen auch keine Funktionen auf, sondern veranlassen einen Browser zu Requests. Die Parameter des Requests kannst du mit PHP auswerten und daraufhin eine Klasse aufrufen. Auch eine Java-Anwendung kann da nichts anderes machen. Wenn dir in Java ein Framework komfortablerweise etwas anderes simuliert hat, dann freu dich und fang nun an, die Grundlagen der Webprogrammierung zu erlernen.

    Lo!

    1. Hallo dedlfix,

      Links rufen auch keine Funktionen auf, sondern veranlassen einen Browser zu Requests. Die Parameter des Requests kannst du mit PHP auswerten und daraufhin eine Klasse aufrufen.

      Würde das Sinn machen:
      1. Beim Klicken des Links, den Parameter ASC oder DESC übersende
      2. Diese Werte dann in der Klasse, z.B. TableSorter, verwende.
      3. Dort mit den Werten arbeite und als Ausgabe die Seite erneut mit neu sortierter Tabelle aufrufe?

      Oder widerspricht das erneut der Logik der Webprogrammierung?

      MfG Manuel

      1. Hallo,

        Würde das Sinn machen:

        1. Beim Klicken des Links, den Parameter ASC oder DESC übersende
        2. Diese Werte dann in der Klasse, z.B. TableSorter, verwende.
        3. Dort mit den Werten arbeite und als Ausgabe die Seite erneut mit neu sortierter Tabelle aufrufe?

        Würde es denn keinen Sinn machen? Wenn ja, warum nicht?

        zwischen 1 und 2 besteht grunzipiell erstmal gar keine Beziehung. Wenn du in der Lage bist, eine Beziehung zwischen 1 und 2 zu erklären, dann weisst du auch, ob deine Darstellung Sinn macht. Dito für 2 und 3.

        Ciao, Frank

  2. Hello,

    Ich hoffe, dass ich mich verständlich ausgedrückt habe und jmd mir bei diesem delikaten Problem weiterhelfen kann (Lösungsvorschläge ohne Java-Script sind bevorzugt :))

    Was daran 'delikat' sein soll, entzieht sich momentan meiner Vorstellungskraft.

    Du kannst eine Zustandsbindung benutzen. Mit Hilfe dieser kannst Du dann Requests spezialisieren. Es muss also nicht jedes Mal der gesamte Query-String neu übertragen werden, sondern nur das, was sich ändern soll in der Response.

    Die generelle Bindung kannst Du per Cookie erreichen, die speziellere musst Du allerdings in jedem Request mit übermitteln, da der Server sonst nicht wissen kann, in welchem "Fenster" Du dich gerade befindest und welche Darstellung dort gerade aktuell war.

    Also

    • Cookie für die Session
    • Identifier in jedem Link oder jeder Post-Gruppe für das aktuelle Fenster
    • Link- oder Postparameter für die gewünschte Aktion

    Link- oder Action-Ziel kann dann immer identisch sein, z.B. "index.php"

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  3. Danke, Tom und dedlfix, für eure schnellen Antworten.

    Ich war dann wohl mit meinem Denkansatz komplett auf dem Holzweg.
    Danke für eure Hinweise dafür, werd das Problem nun  wohl anders angehen müssen und mich natürlich noch etwas weiter in der Webprogrammierung fortbilden, damit so ein faux pas nicht erneut passiert.

    MfG Manuel