Problem mit Formularauswertung

soyo

Erfahrenes Mitglied
Juhuuu,

ich hab folgendes Problem und ich hoff das ihr mir helfen könnt:

Ich hab ein Formular mit ca 10 Elementen (text,checkbox,textarea ...).
Wenn man das Formular sendet wird es von einem kleinen PHPscript in der gleichen Datei überprüft ... soweit so gut .
Nun soll aber, wenn kein Fehler in der Eingabe endeckt wurde, eine Zusammenfassung angezeigt werden. Ich mach nun schon einige Jahre PHP aber auf solch ein Problem bin ich noch nicht gestoßen. Ich komm einfach nicht auf die Lösung. Meine Idee war eine kleine funktion zu schreiben, die ungefähr so ausschaut ...

PHP:
function goto($point){
  switch($point){
    case checkform :
    .
    . Formular eingaben überprüfen, wenn kein error($error = 0)
    if($error == 0) goto(summary);
    .
    break;
    case summary :
    .
    .  Zusammenfassung anzeigen
    .
    break;
    default:
    .
    . Formular ausgabe
    .    
  }
}

... nach einer kalten Dusche und wieder klaren Gedanken, war mir klar das die Idee doof war. Obwohl es so war ist, hoffe ich das ihr mein Problem versteht.

gruß soyo
 
Zuletzt bearbeitet:
PHP:
function checkForm() {
  // Eingaben ueberpruefen, true oder false zurueckgeben
}

if (checkForm()) {
  // Zusammenfassung
} else {
  // Formular ausgeben
}

hab ich dich richtig verstanden?
 
jop hast du.

nur soll die auswertung dann im gleichen browserfesnter ausgegeben werden. ich könnt über header(location ....); dann zu einer extradatei springen und die daten dort ausgeben lassen. aber wie speicher ich soviel daten ohne db ... $_POST fällt ja aus und $_GET erst recht.
 
Aber du kannst das doch in einer einzigen Datei regeln!

Beispiel:

PHP:
<?php

  function checkForm() {
    if (isset($_POST["test"]) && !empty($_POST["test"])) return true;
    else return false;
  }

  if ($_GET["action"] == "check" && checkForm()) { // aha, das formular wurde abgeschickt! ;) (und ist alles korrekt)
    echo "Das ist die Zusammenfassung:
      test: ".$_POST["test"]."
      etc
    ";    
  } else {

?>

<form method="POST" action="?action=check">
  <input type="text" name="test">
  <input type="submit" value="Abschicken">
</form>
 
Hab vergessen das else { wieder zuzumachen, nicht vergessen! ;)
gib bescheid, wenn das dein Problem glöst hat!
 
problem gelöst ... vielen dank ... hatte das mit den else schon gesehn ...

... programmiert man den ganzen tag nur irgendwelche doofen mysqlquerys und auf so eine lösung kommt man nich ... naja egal :rolleyes:
 
so nu hab ich noch ein Problem:

ich hab die funktion etwas nach meinen alten ansprüchen erweitert. es soll ausgegeben werden welches TF falsch ausgefüllt, bzw erst gar nicht ausgefüllt wurde:

PHP:
<?php
  
  function checkInput(){
    $error = 0;
    .
    .
    .
    if(empty($_POST['irgendeintextfeld'])){
      $error = 1;
      $msg = "Bitte Name eingeben";
    }
    if(empty($_POST['nocheintf'])){
      $error = 1;
      $msg .= "Bitte Email eingeben";
    }
    .
    .
    .
    if($error == 0) return true;
    else return $msg;
  }
  if ($_GET["action"] == "check" && checkInput()) {
    auswertung der daten ...
  } else { 
  
  /* 
  .
  etwas htmlzeugs
  . 
  */
  echo $msg;  // errorausgabe
 
  }
?>

funktioniert auch ohne Probleme. Nur wird schon bevor ich das Formular sende, der Errortext ausgegeben. Jemand eine Idee? :)

gruß thomas
 
Zurück