Affenformular

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

asd1234

Neues Mitglied
16 April 2021
3
0
1
25
Hallo Zusammen,
ich bin gerade dabei eine Gästeliste zu erstellen, jedoch habe zuvor gar nichts mit PHP programmiert - ich bin PHP Anfänger )
1) Auf dem ersten Formular folgende Daten einzutragen:
- der Anlass (z.B. Geburtstag, Hochzeit, etc.)
- das Datum
- der Ort
- die Anzahl der Gäste
2) Die Angaben aus der ersten Formularseite werden als Text auf der zweiten Formularseite verwendet und entsprechend der Anzahl der Gäste werden Textfelder dargestellt, in die die Namen der Gäste eingetragen werden können.
3) Die dritte Seite enthält ebenso wie zuvor die zweite Seite die Angaben aus der ersten Formularseite als Text. Darunter werden die Namen der Gäste nummeriert und in alphabetischer Reihenfolge ausgegeben. Zusätzlich zur Ausgabe sollen die Daten im JSON-Format gespeichert werden.
Es soll alles in einer Datei index.php vorhanden sein.


Punkt 1, sowie 2 habe ich geschafft. Weiter komme ich irgenwie nicht. Else (Schritt 3) läuft nicht durch....

DANKE IM VORAUS


Hier ist Code:

PHP:
<?php
echo '<form action="" method="POST">';

$ort = isset($_POST['ort']) ? trim($_POST['ort']) : "";
$anzahl = isset($_POST['anzahl']) ? trim($_POST['anzahl']) : "";
$anlass = isset($_POST['anlass']) ? trim($_POST['anlass']) : "";
$date = isset($_POST['date']) ? trim($_POST['date']) : "";

/////// Schritt 1

if (empty($ort) || empty($anzahl) || empty($anlass)) {

    // Anlass
    if (empty($anlass)) {
        if ($_POST['schon_mal_abgesendet'] == "ja" ) {
            echo "<p>* Bitte Anlass auswählen</p>";
        }
    }

    echo '<p>Anlass: ';
    $select=array('','Geburtstag','Hochzeit','Konferenz');
    echo '<select name="anlass">';

    foreach ($select as $var){
        echo '<option value="'.$var.'">'.$var.'</option>';
    }
    echo '</select>';
    echo "<br><br>";

    // Datum
    if (empty($date)) {
        if ( $_POST['schon_mal_abgesendet'] == "ja" ) {
            echo "<p>* Bitte Datum auswählen</p>";
        }
    }

    echo 'Datum: ';
    echo '<input type="date" name="date" value="';
    echo $ort;
    echo '" size="35" maxlength="60">';
    echo "<br><br>";


    // Ort
    if (empty($ort)) {
        if ( $_POST['schon_mal_abgesendet'] == "ja" ) {
            echo "<p>* Bitte Feld Ort ausfüllen</p>";
        }
    }

    echo 'Ort: ';
    echo '<input type="text" name="ort" value="';
    echo htmlspecialchars($ort);
    echo '" size="20" maxlength="60">';
    echo "<br><br>";

    // Anzahl
    if (empty($anzahl)) {
        if ( $_POST['schon_mal_abgesendet'] == "ja" ) {
            echo "<p>* Bitte anzahl der Gäste eingeben</p>";
        }
    }

    echo 'Anzahl der Gäste: ';
    echo '<input type="number" name="anzahl" value="';
    echo $anzahl;
    echo '" size="4" maxlength="4">';
    echo "<br><br>";


    echo '<input type="hidden" name="schon_mal_abgesendet" value="ja">';

    echo '<br>';
    echo '<input type="Submit" name="" value="weiter">';
    echo '</form>';
    exit;

}

/////// Schritt 2
elseif (isset($_POST['anlass']) || isset($_POST['datum']) || isset($_POST['ort']) || $_POST['subject'] == "")
{

    echo "Anlass: " . $anlass . "<br>";
    echo "Datum: " . $date . "<br>";
    echo "Ort: " . $ort . "<br>";
    echo "Anzahl der Gäste: " . $anzahl . "<br>";


        if (( $_POST['subject'] == "" ) && ( $_POST['schon_zweimal_abgesendet'] == "ja" ))
        {
            // Punkt 5: Fehlermeldung - Feld Nachname ausfüllen
            echo "<p>Hinweis: Bitte Feld Gast ausfüllen</p>";
        }

        $start = 1;
        $stop = $_POST['anzahl'];
        for ($count = $start; $count <= $stop; $count++) {
            // Punkt 6: Feld "zeichnen" für Nachname
            echo "<p>  $count  Gast: ";
            ?><input type="text" name="subject"> <br><?php
        }

        echo '<input type="hidden" name="schon_zweimal_abgesendet" value="ja">';

        echo '<br>';
        echo '<input type="submit" name="vorschau" value="Weiter zur Vorschau">';

    echo '</form>';
    exit;

    }
/////// Schritt 3
    else  {
        echo "Vorschau:";
        echo "Anlass: " . $anlass . "<br>";
        echo "Datum: " . $date . "<br>";
        echo "Ort: " . $ort . "<br>";
        echo "Anzahl der Gäste: " . $anzahl . "<br>";


        $text = $_POST['subject'];
        $text = explode(" ", $text);
        natCaseSort($text);
        foreach ($text as $element) {
            echo $element . "<br>";
        }


    }

        $error = false;

    // Alle POST-Daten mit foreach() auslesen und überprüfen
        foreach ($_POST as $field => $content) {
            if (empty($content)) {
                echo "Das Feld $field enthält keinen Text!<br />";
                $error = true;
            }
        }


        if (!$error) {
            echo "Ort: " . $_POST["ort"] . "<br>"
                . "Anzahl Gäste:" . $_POST["anzahl"] . "<br>" . "Gäste:" . $_POST["subject"];


            // Dateinhalt wird gelöscht
            file_put_contents("myfile.json", "");

            // Alle POST-Daten mit foreach() auslesen und im JSON-Format speichern
            foreach ($_POST as $field => $content) {
                if (!empty($content)) {
                    $json = json_encode($content);
                    file_put_contents("myfile.json", $json, FILE_APPEND);
                }
            }
        }
 
Zuletzt bearbeitet:

m.scatello

Senior HTML'ler
15 Februar 2017
1.590
185
63
Das Script in gekürzter Form:
PHP:
$ort = isset($_POST['ort']) ? trim($_POST['ort']) : "";
$anzahl = isset($_POST['anzahl']) ? trim($_POST['anzahl']) : "";
$anlass = isset($_POST['anlass']) ? trim($_POST['anlass']) : "";
$date = isset($_POST['date']) ? trim($_POST['date']) : "";

/////// Schritt 1

if (empty($ort) || empty($anzahl) || empty($anlass))
{
}
/////// Schritt 2
elseif (isset($_POST['anlass']) || isset($_POST['datum']) || isset($_POST['ort']) || $_POST['subject'] == "")
{
}
else 
{
}
Wie sollte das Script denn den else-Zweig erreichen?
 

asd1234

Neues Mitglied
16 April 2021
3
0
1
25
Ich verstehe es so:

Schritt 1 - Seite 1: Formularfelder anzeigen lassen, diese sind noch leer.
- der Anlass (z.B. Geburtstag, Hochzeit, etc.)
- das Datum
- der Ort
- die Anzahl der Gäste

wenn Ort, Anzahl und Anlass sind leer -> Felder anzeigen

Schritt 2 ->
wenn Anlass, Datum, Ort deklariert sind und sich von Null unterscheiden -> Felder für Namen anzeigen
Anlass, Datum und Ort -> in Variablen $ort, $anlass und $date gespeichert

Schritt 3: sonst
 

basti1012

Senior HTML'ler
26 November 2017
1.612
173
63
Minden
basti1012.de
Mal was anderes, hat jetzt nicht viel mit dein Fehle zutun.
Im Schritt 2 , else bla steht das
PHP:
isset($_POST['datum'])
Wo kommt den das Datum her?

Den anderen Fehler würdest du vielleicht auch selbe finden, mach die Konsole auf und schau was im Request steht .
Wann ist welcher Post Leer oder gar nicht vorhanden!
Du kannst das auch im print_r($_POST); ausgeben lassen, dann kommst du vielleicht selber darauf