Formularfelder auf Eingabe überprüfen

Hi,

hier mal meine Version einer Formular-Verarbeitung :
PHP:
<?php
if (isset($_POST['submit']))
  {
  $name = $_POST['name']; // vereinfachte Verarbeitung
  if ($name == "") { $message = "Keinen Namen angegeben"; }
  else
    {
    // weitere Verarbeitung
    $message = "Verarbeitung erfolgreich";
    }
  }
?>
<form action="deine_datei.php" method="post">
  <?php echo $message; ?><br />
  <input type="text" name="name" value="<?php echo $name; ?>" /><br />
  <input type="submit" name="submit" value="absenden" />
</form>

Gruß, Mike
 
Also, jetzt funktioniert alles :)
Habe die Fehlermeldung noch in eine Box umgewandelt, damit es ein bisschen schöner aussieht (und natürlich um noch ein bisschen Eigeninitiative mit einzubringen, lieber timestamp ;) )

Hier noch mal ein Code-Beispiel:
PHP:
<?php
  if (!isset($_POST['Beitrag']) Or Trim($_POST['Beitrag']) == "") {
    $fehler = 1;
    $fehlertext = "Bitte geben Sie einen Beitrag ein.";
    
    ?>
    <script type="text/javascript">
    alert("<?php echo $fehlertext; ?>");
    </script>
    <?php

Vielen Dank an alle Helfer!
Liebe Grüße

Ich hätte da doch noch mal eine Frage...
Nach der Prüfung und erfolgreichem Speichern des Formulars werden in den Formularfeldern trotzdem noch die eingegebenen Daten angezeigt. Das soll aber eigentlich nicht so sein, da direkt unter dem Formular das Gästebuch inklusive dem neuen Eintrag angezeigt wird.
Ich weiß, dass ich die Variablen einfach über
PHP:
$Variable= " ";
wieder zurücksetzen kann, allerdings klappt es an keiner Stelle des Scriptes, egal, wo ich es einfüge.
Logisch wäre natürlich direkt nach dem Speichern:
PHP:
<?php
 //Wenn kein Fehler: Speichern
  if ($fehler == 0) {

    $sql = " INSERT INTO gbuch ";
    $sql .= " SET ";
    $sql .= " Name ='". $_POST['Name'] ."', ";
    $sql .= " Email ='". $_POST['Email'] ."', ";
    //UTC Zeit festlegen:
    date_default_timezone_set('Europe/Berlin');
    $sql .= " Datum ='". date("Y-m-d H:i:s") ."', ";
    $sql .= " Beitrag='". $_POST['Beitrag'] ."' ";
   
    ?>   
    <script type="text/javascript">
    alert("<?php echo "Eintrag gespeichert. Vielen Dank!" ?>");
    </script>
    <?php
    
    $_POST['Name'] = "";
    $_POST['Email'] = "";
    $_POST['Beitrag'] = "";
    
    //Zugriff auf die MySQL Datenbank:
    $db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
    if ( ! $db_link ){
      die('keine Verbindung zur Zeit m&ouml;glich - sp&auml;ter probieren ');
    }
    $db_sel = mysql_select_db( MYSQL_DATENBANK ) or die("Auswahl der Datenbank fehlgeschlagen");

    //Ausführen des mysql-Befehls/Speichern der Daten
    $db_erg = mysql_query( $sql );
    if ( ! $db_erg ){
      die('Ung&uuml;ltige Abfrage: ' . mysql_error());
    }

Das funktioniert aber leider nicht :(
Kann mir jemand helfen?
 
Zuletzt bearbeitet:
Falls die Reihenfolge immernoch so ist wie in den oberen Beiträgen ( erst Formular , dann PHP ) dann ist das doch völlig logisch das das nicht funktionieren kann.
Immerhin schreibst du die Variablen demnach erst in dein Formular und "löschst" sie erst danach.
 
Wenn ich Sie VOR der Ausgabe des Formulars lösche, klappt die Fehlerüberprüfung aber leider nicht mehr und die Variablen werden sofort nach dem Klick auf Speichern gelöscht. ;)
 
Hallo, da noch ein Anfänger bist, wie es schein, noch ein wichtiger Hinweis:
du musst vor der Speicherung der Daten in der Datenbank noch die zu speichernden Daten filtern, da deine Datenbank sonst ein offenes Scheunentor ist.
siehe http://de.wikipedia.org/wiki/SQL-Injection

Das geht mit mysql_real_escape_string(). Kleines Beispiel:
PHP:
$sql = "INSERT INTO tabelle (feld1, feld2) VALUES ('".mysql_real_escape_string('wert1')."', '".mysql_real_escape_string('wert2')."');";

mfg
 
Zuletzt bearbeitet:
Wenn ich Sie VOR der Ausgabe des Formulars lösche, klappt die Fehlerüberprüfung aber leider nicht mehr und die Variablen werden sofort nach dem Klick auf Speichern gelöscht.

Ich meinte auch eigentlich das du die komplette Reihenfolge eventuell umdrehen solltest.

Code:
if (Formular abgeschickt){
	Formular prüfen
	if(!fehler){
		Formular verarbeiten
		Formularwerte löschen
	}
}

Formular anzeigen
 
Hallo Leute,
ich habe ein kleines Problem mit meinem Formular oder mehr gesgat mit meiner Fehlermeldung den ich glaube ich sehe den Wald vor lauter Bäumen nicht mehr.

Ich habe folgendes Formular (habe es für hier gekürzt)
PHP:
<?php
if(isset($_POST['submit'])) {

###### vereinfachte Verarbeitung ######
	$vor = trim($_POST['vor']);
	
###### Überprüfung der Felder ######	
   if(empty($vor)) { 
        $hinweis = "Keinen Namen angegeben"; 
	} else {
        $hinweis = "";
      } 
	  
}      
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<title>Verarbeitung von Formularen</title>
		<link type = "text/css" rel = "stylesheet" href = "style.css" />
	</head>
	
	<body>
		<h1>Registrierung</h1>
			<div id="content">
			<form action="ausgabe.php" method="post">
				 <h3><?php echo $hinweis; ?></h3> 
            <label for="vor">Vorname*</label><br />
			<input name="vor" type="text" value="<?php echo $vor; ?>" /><br />

			<input type="submit" name="submit" value="absenden" /> 
			</form>
</body>
</html>

Wenn ich jetzt das Feld Vorname leer lasse dann sollte man mir eine Fehlermeldung ausgeben aber man leitet mich weiter auf die Datei ausgabe.php wo dann auch nichts angezeigt wird, weil dass Feld ja leer ist. Das ganze läuft erstmal ohne eine Datenbank da ich das ganze erstmal so auf XAMPP laufen habe zum testen (und ich bis jetzt zu faul war mir da eine Datenbank anzulegen). Ist das Feld ausgefüllt werde ich auch auf due ausgabe.php geleitet und der Inhalt wird ausgegeben. In der ausgabe.php steht nur

PHP:
echo "<p>" . $_POST["vor"] . "</p>";

Und dann hätte ich noch eine Frage und zwar ist es egal, ob ich mit empty oder isset abfrage ob etwas in dem Feld steht? Ist eins der beiden besser geeignet oder ist es egal?

Eine schöne Woche wünsche ich euch allen mit freundlichen grüßen
AHBL
 
Benutz empty, isset würde prüfen ob das Feld überhaupt im POST array existiert, du willst aber das es existiert UND nicht leer ist.

Dein Problem ist ja wohl logisch, wenn in deiner Form volgender action-Tag steht: action="ausgabe.php". Dadurch wirst du automatisch auf diese Seite weitergeleitet, wenn du auf Abesenden drückst. Lösung: Ersetze das ausgabe.php durch den namen der Datei, auf der das Formular ist. zB form.php oder index.php, je nach dem wie die Datei halt heißt :D
 

Neue Beiträge

Zurück