Wie an sinnvollsten eine Routine zum weiterklicken schreiben?

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

  • Wie an sinnvollsten eine Routine zum weiterklicken schreiben?

    Hallo Forum

    ich würde gerne eine Art Installationsprogramm schreiben, welches dem User nacheinander verschiedene Seiten zeigt, in denen er Eingaben tätigen muss. Am ehesten entspricht das Vorhaben einer Onlineumfrage oder einer Installationsroutine bei den bekannten CMS.

    Wie man solche Seiten hintereinander schaltet ist kein Problem.

    Mir geht es eher um Usability, und zwar vor allem um den Back-Button im Internetbrowser.

    Angenommen, ein User arbeitet die Routine durch und befindet sich aktuell auf Seite 5. nun fällt ihm ein, dass er auf Seite 4 oder 3 etwas vergessen hat und bedient ein oder zweimal den Backbutton des Browsers. Kann ich irgendwie steuern, was er dann zu sehen bekommen soll, oder zeigt der Browser stur Seite 4 und 3 so an, wie der User sie verlassen hat?

    Im Firefox kommt dann immer so ein Hinweis, dass die Seite mit Post-Dateien erstellt wurde und die erneut gesendet werden müssten. Auch wenn das auf eine Art und Weise ja eine hilfe darstellt, stört es doch den "Workflow". Kann man das irgendwie umgehen?

    Am idealsten wäre es natürlich, wenn das ganze ein Abbild der bekannten Installationsprogramme unter Windows wäre. Sprich der User kann sich vor-und zurückklicken wie er will, ohne dass er irgendwelche Meldungen bekommt, ohne dass alte Eingaben verloren gehen.

    Dazu kommt noch: Usereingaben finden ja üblicherweise über ein Formular statt, welches nur POST und GET zum Versenden anbietet. GET will ich eigentlich vermeiden, und POST macht vielleicht wegen den oben erwähnten Sachen Probleme.

    Was meint ihr dazu?

    Gruß

  • #2
    Zitat von INC. Beitrag anzeigen
    Was meint ihr dazu?
    Du möchtest dich eingehender mit dem Zusammenspiel zwischen dem Browser und der WebApplication beschäftigen, dann kommen solche Vorhaben/Forderungen nie in Frage.

    Kommentar


    • #3
      Nö, es ist ganz gut möglich. Du hast verschiedene Möglichkeiten. Eine wäre javascript und Cookies zu verwenden.

      Kommentar


      • #4
        Speichere die Formulardaten nach dem Abschicken in einer Session und leite per Location-Header auf das nächste Formular weiter.
        Beim Anzeigen eines Formulars setzt du die Werte aus der Session als Values der Inputs.
        So kann man die Back und Forward Buttons nutzen, sieht was man zuvor schon mal eingegeben hatte und kann es ändern.

        PHP-Code:
        <?php

        function validate($step$data) {
            switch (
        $step) {
                default: return !empty(
        $data['t'][$step]);
            }
        }

        function 
        save($step$data) {
            
        $_SESSION['data'] = array_merge($_SESSION['data'], $data);
        }

        function 
        read($step$name) {
            
        //session_start();
            
        return isset($_SESSION['data'][$name][$step])
                ? 
        $_SESSION['data'][$name][$step]
                : 
        null;
        }

        session_start();
        $step = isset($_REQUEST['step']) ? (int)$_REQUEST['step'] : 1

        if (isset(
        $_REQUEST['submit'])) {
            if (
        validate($step$_REQUEST)) {
                
        save($step$_REQUEST);
                
        $step++;
                
        header('Location: '.$_SERVER['PHP_SELF'].'?step='.$step);
            } else {
                
        $error 'All fields required!';
            }
        }

        ?>
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
            "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
        <html>
        <head><title></title></head>
        <body>
        <?php if (isset($error)) echo '<p>'.$error.'</p>'?>
        <form method="post" action="<?php echo $_SERVER['PHP_SELF'].'?step='.$step?>">
        <?php
        for ($i 1$i <= $step$i++) {
            echo 
        '<input type="text" name="t['.$i.']" value="'.read($i't').'" /><br />';
        }
        ?>
        <input type="submit" name="submit" value="ok" />
        </form>
        </body>
        </html>
        Das soll nur zeigen, was ich meine. Du würdest natürlich nicht alle vorherigen Inputs erneut ausgeben (for-Schleife). Das ist hier nur zur Kontrolle drin.

        Kommentar

        Lädt...
        X