Problem mit der Formularverarbeitung

Muckel1986

Erfahrenes Mitglied
Guten Abend,

habe ein kleines Formular, mit dem ich einfach die Daten speichern möchte, die ich benötige. Habe es nun schon soweit gebracht, dass die Daten entgegengenommen werden und wieder ausgegeben werden können.

Nun habe ich im World-Wide-Web entdeckt, dass man Überprüfen kann, ob die php-Datei mit der das Formular verarbeitet werden soll, auch darüber aufgerufen wurde:
PHP:
if( isset($_POST['gesendet']) ) {
    // Eingabepruefung
    }
    else {
    header( 'Location: index.php' );
    exit();
    }
Das Beispiel ist für die method POST. Ich verwende allerdings GET. Habe das in den kurzen Zeilen geändert, doch ich lande damit nur noch auf dem Formular.

Dann würde ich die Werte des Formulars auch kontrollieren. Habe bis jetzt aber nur eine Überprüfung gefunden, ob sie leer sind:
PHP:
// Ueberpruefen der Werte
    unset($errors);
    if (empty($datumform))$errors[] = "Kein Datum angegeben!";
    if (empty($morgens))$errors[] = "Schmerzlevel fuer Morgens vergessen!";
    if (empty($mittags))$errors[] = "Schmerzlevel fuer Mittags vergessen!";
    if (empty($abends))$errors[] = "Schmerzlevel fuer Mabends vergessen!";
    if (empty($inr_wert))$errors[] = "INR-Wert vergessen!";

    if (empty($errors))
    {
        echo ("Alle Felder wurden ausgefuellt!");
    }
Die Ausgabe, dass alles Felder ausgefuellt wurden, klappt auch. Wenn ich aber welche leer lasse, dann erscheint der Text dahinter nicht. Gut, habe auch noch kein echo, aber wie mache ich das?

Dann war das ja nur eine Überprüfung, ob sie leer sind. Für das Datum müsste ich noch Überprüfen, ob es wirklich ein Datum ist. Und bei dem INR-Wert dürfen es nur Zahlen sein, mit max. zwei Kommastellen.

Könnt ihr mir dabei bitte helfen?
Vielen Dank
Muckel

P.S.: Die Datei zum Verarbeiten schaut so aus:
PHP:
// PHP-Script um das Formular zu verarbeiten
// und um es zu Ueberpruefen

// Formular-Daten an Variable uebergeben
    $datumform = $_GET["datum"];
    $morgens = $_GET["morgens"];
    $mittags = $_GET["mittags"];
    $abends = $_GET["abends"];
    $inr_wert = $_GET["inr"];

// Werte zum Testen ausgeben
    echo ("<strong>Es wurden folgende Werte eingegeben</strong><br />");
    echo ("Datum: " . $datumform . "<br />");
    echo ("Morgens: " . $morgens . "<br />");
    echo ("Mittags: " . $mittags . "<br />");
    echo ("Abends: " . $abends . "<br />");
    echo ("INR-Wert: " . $inr_wert . "<br />");

// Ueberpruefen der Werte
    unset($errors);
    if (empty($datumform))$errors[] = "Kein Datum angegeben!";
    if (empty($morgens))$errors[] = "Schmerzlevel fuer Morgens vergessen!";
    if (empty($mittags))$errors[] = "Schmerzlevel fuer Mittags vergessen!";
    if (empty($abends))$errors[] = "Schmerzlevel fuer Mabends vergessen!";
    if (empty($inr_wert))$errors[] = "INR-Wert vergessen!";

    if (empty($errors))
    {
        echo ("Alle Felder wurden ausgefuellt!");
    }

// Werte in Datei schreiben
Das Formular schaut so aus:
HTML:
<form action="verarbeitung.php" method="GET" name="formular">
    <strong>Datum:</strong>&nbsp;<input type="text" name="datum" value="" size="7" /><br />
    <strong>Morgens:</strong>&nbsp;<select name="morgens">
        <option>0</option>
        <option>1</option>
        <option>2</option>
        <option>3</option>
        <option>4</option>
        <option>5</option>
        <option>6</option>
        <option>7</option>
        <option>8</option>
        <option>9</option>
        <option>10</option>
    </select><br />
    <strong>Mittags:</strong>&nbsp;<select name="mittags">
        <option>0</option>
        <option>1</option>
        <option>2</option>
        <option>3</option>
        <option>4</option>
        <option>5</option>
        <option>6</option>
        <option>7</option>
        <option>8</option>
        <option>9</option>
        <option>10</option>
    </select><br />
    <strong>Abends:</strong>&nbsp;<select name="abends">
        <option>0</option>
        <option>1</option>
        <option>2</option>
        <option>3</option>
        <option>4</option>
        <option>5</option>
        <option>6</option>
        <option>7</option>
        <option>8</option>
        <option>9</option>
        <option>10</option>
    </select><br />
    <strong>INR-Wert:</strong>&nbsp;<input type="text" name="inr" size="3" /><br />
    <input type="submit" name="Absenden" value="Absenden" /> <input type="reset" name="Abbrechen" value="Abbrechen" />
</form>
Und das Ganze ist hier zu finden.
 
Guten Abend,

ob in den Feldern etwas eingegeben wurde, wollte ich so überprüfen:
PHP:
// Ueberpruefen der Werte
    if($_GET["datum"] == "") echo ("Sie haben kein Datum eingegeben.<br />");
    if($_GET["morgens"] == "") echo ("Sie haben kein Wert fuer Morgens eingegeben.<br />");
    if($_GET["mittags"] == "") echo ("Sie haben kein Wert fuer Mittags eingegeben.<br />");
    if($_GET["abends"] == "") echo ("Sie haben kein Wert fuer Abends eingegeben.<br />");
    if($_GET["inr"] == "") echo ("Sie haben kein Wert fuer INR-Wert eingegeben.<br />");
Für die normalen Textfelder klappt das auch. Bei den Auswahlfeldern (select option) klappt dies nicht, da dann standardmäßig die 0 Übertragen wird. Dies darf/soll aber nicht sein, da die 0 auch ein Wert ist, der angegeben werden kann.

Kann ich das nur beheben, in dem ich da ein weitere Zeile einbaue mit dem Inhalt "leer" und die Abfrage dann nach leer mache? Doch wirklich gefallen tut mir diese Notlösung nicht.

Hoffe ihr könnt mir helfen oder gute Tutorials zeigen.
Liebe Grüße
Muckel
 
Du hast kein Default gesetzt bei den Select options. Somit kommt da auch nicht 0 wenn nix gewählt wird. Du kannst mal die ganzen $_GET-Werte prüfen.
PHP:
var_dump($_GET);

Um 0 Als Standard zu setzen geht das mit dem option-Attribut 'selected'
HTML:
    <select name="abends">
        <option selected>0</option>
        <option>1</option>
        <option>2</option>
        <option>3</option>
        <option>4</option>
        <option>5</option>
        <option>6</option>
        <option>7</option>
        <option>8</option>
        <option>9</option>
        <option>10</option>
    </select>
 
Zuletzt bearbeitet:
Zurück