Formular über mehrere Seiten

  • Hallo


    Ich hab mir den PHP-Kurs angeschaut um PHP-Grundlagen nachzuholen. (mySQL steht mir noch bevor)


    Da hab ich gesehen, wie Axel nacheinem Formulareintrag immer die selbe Seite wieder aufruft und dann abfrägt. ob die Felder eingetragen sind. Wenn dies der Fall ist, zeigt er eine Bestätigung.


    kann ich anstelle der Bestätigung auch ein weiteres Formular erstellen?


    Da mein Datenbankeintag ca. 35 Felder beträgt, möchte ich diesen Eintrag über 4-5 Seiten (Abschnitte) machen.


    Mit jedem aufruf der Seite würde ich abfragen, ob die Felder auch ausgefüllt sind und dementsprechend ein Formular weiter gehen.


    Ist diese Methode üblich? Oder ist es richtig für jeden Abschnitt eine neue Seite zu bauen?


    Besen Dank schon jetzt für eure Hilfe.


    Gruss


    Philipp

  • ein Beispiel oder ähnliches für den aufbau wäre vllt nicht schlecht... aber ich denke schon dass das geht, wenn man dann durch das so macht:

    PHP
    <!--Variablen natürlich definieren-->
    
    
    
    
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <!--Formular-->
    <input type="submit" name="weiter" />
    <!--Auf Fehler natürlich prüfen, wenn keine Fehler, Eingaben in den Variablen speichern und weitergeben-->


    danach wird sozusagen ein neues Formular erstellt...


    oder statt du

    PHP
    <?php echo $_SERVER['PHP_SELF']; ?>

    (auf die eigene Seite leiten) nimmst, kannst du natürlich auch z.B. weiter.php (Name erfunden) eintragen, dann wird das Formular auf die neue Seite geleitet. Bei dieser Methode musst du allerdings deine Variablen auf die neue Seite mitschleppen und reinschreiben...

  • Du hast z.B. 4 verschiedene Seiten formular1.php bis formular4.php
    Wenn dein Formular jetzt abgesendet wurde und alle Daten erfolgreich eingetragen und gespeichert worden sind, kannst du mit

    PHP
    header( 'location: formular2.php');


    einfach weiterleiten zur nächsten Datei..

  • Meine erste Idee war auch das ich für jeden Formular-Teil eine neue Seite mache.


    Bei der ersten Seite mache ich den Datensatzeintrag und auf allen weiteren Seiten hab ich dann den letzten Datensatz abgefragt und dann weitergegeben. Da hab ich dann eben die Variabel mitschleppen müssen.


    Ich dacht mir, wenn ich im ersten Formular den Datensatz erzeuge, und wenn alles ausgefüllt ist, weiter zum nächsten Formular, da werde ich dann den Datensatz abfragen, den ich eben erstellt habe. Uns so würde ich alle Formulare weiter erstellen.


    das Seite1.php, Seite2.php, Seite3.php etc. wollte ich eben vermeiden.


    Gruss
    Philipp

  • dann musst du mit dem

    PHP
    <form method="post" action="<?php $_SERVER['PHP_SELF']; ?>

    arbeiten


    Wenn du jetzt noch ein Beispiel hättest wäre das wunderbar ;)

  • naja dann machst du es eben so das du 4 PHP variablen mit dem html für das form hast und jenachdem wie weit man gekommen ist die jeweilige var im formular geechot wird, die Daten musst du halt in ner Session ( $_SESSION ) speichern oder direkt verarbeiten.

  • [...]die Daten musst du halt in ner Session ( $_SESSION ) speichern.


    Oder, da du ja nach jeder Formular-Unterseite bereits eine Eingabeprüfung machen willst, direkt die Teildaten in die Tabelle eintragen.


    Bei so einem Vorhaben wäre dann eine persistente (dauerhafte) DB-Verbindung von Vorteil, soll heißen, einmal am Anfang die Verbindung herstellen und dann offen lassen, bis alle Daten drin sind.
    PDO ist dabei Gold wert, allerdings fortgeschritten.


    Also, Anfängerversion: In einer Session zwischenspeichern
    Fortgeschritten: persistente Verbindung und Prepared Statements via PDO


    Für beides findest du hier Hilfe ;)

  • [PHP]
    <?php


    // Session starten
    session_start();


    // Prüfen ob der Benutzer angemeldet ist
    if (!$_SESSION['angemeldet'])
    {
    // Zum Login umleiten
    header( 'location: index.php' );
    exit;
    }



    $server = "****";
    $benutzer = "***";
    $passwort = "****";
    $datenbank = "******";


    $dbconnection =mysql_connect($server, $benutzer, $passwort) or die ("Fehler mysql_connect: ".mysql_error());
    mysql_select_db($datenbank) or die ("Fehler bei select_db: ".mysql_error());


    $id = $_SESSION['angemeldet'];


    include("rechteranking.php");


    $datenabfrage = mysql_query("SELECT * FROM RL_RechnungID WHERE id='$id'");
    $benutzerabfrage = mysql_query("SELECT * FROM autority WHERE id='$id'");
    $vorstandsabfrage = mysql_query("SELECT * FROM VP_ProtokollID WHERE id='$id'");


    include("ansprache.php");


    ?>
    [/PHP]


    wäre dies ein bsp (aus meinem Login) für eine dauerhafte Verbindung oder hab ich das jetzt falsch verstanden?

  • Nein.
    siehe: https://php.net/manual/de/pdo.connections.php#example-866

    Zitat

    Viele Webanwendungen profitieren von persistenten Verbindungen zum Datenbankserver. Persistente Verbindungen werden nicht am Ende des Skripts geschlossen, sondern werden gecacht und wiederverwendet, wenn ein anderes Skript eine Verbindung mit denselben Daten anfordert. Der Cache an persistenten Verbindungen erlaubt Ihnen, den Overhead zu vermeiden, wenn jedesmal eine neue Verbindung geöffnet wird, sobald ein Skript mit der Datenbank kommunizieren muss, was sich in einer schnelleren Anwendung widerspiegelt.


    aber wie The Scout schon sagte: das ist um einiges fortgeschritten.

  • Das MUSS man vor allem nicht so machen - die Auswahlmöglichkeiten sind hier nicht "Session oder persistente Datenbankverbindung" sondern "Session oder direkt in die DB schreiben (wenn möglich mit persistenter Verbindung, muss aber nicht)"

  • Aber ist meine Überlegung denn richtig, dass ich dem ersten Formulardie Seite noch einmal aufrufe und danach das zweite, resp. dritte,vierte Formular aufrufe?


    Ober ist es üblich, daraus mehrere Seiten zu gestalten?


    Es geht mir erst einmal um die Überlegung, wie ich die Seite/n aufbauen soll. Wird es eine Seit, oder ist es üblich/"richtig", mehrere zu verwenden?

  • In deinem Dateisystam ist eine einzelne Übersichtlicher, In der Datei selber ist es startk von dir abhängig wie (un)übersichtlich es ist.
    Richtig/Falsch gibts nicht

  • Dann empfiehlst Du mir für jedes Formular eine Seite zu basteln?
    Da ich immer noch Anfänger bin neigt dies wohl eher zur Übersicht des ganzen Projektes. Ich kann es dann später immer noch umbauen.wenn ich dann mal etwas mehr Erfahrung habe.


    Vielen Dank
    Gruss
    Philipp

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!