Mehrseitiges Formular mit Eingabeprüfung

ira704

Grünschnabel
Hallo Leute,
ich bastel z.Z. an einem Formular rum, das aus ca. 9 Seiten bestehen soll. Es soll so eine Art Umfragebogen sein für Studierende, die ein Erasmus-Auslandssemester gemacht haben und nun ihre Erfahrungen eingeben können.
Ich komme an einer Stelle nicht weiter.
Im form-Tag steht bei mir:
<form method="post" action="'.$PHP_SELF.'" name="Eingabenüberprüfung_1">
D.h., dass bei mir, nachdem der "Weiter"-Button geklickt worden ist, die selbe Datei aufgerufen wird und eine Eingabeüberprüfung gemacht wird (alle Felder sind Pflichtfelder).
Wenn nun alle Felder korrekt ausgefüllt worden sind, soll das weitere Formularblatt geöffnet werden. Das Ganze soll in der if(isset($submit))-Anweisung geschehen.
Ich weiß aber leider nicht, wie sich eine neue Seite von alleine aufrufen kann, ohne dass man dafür einen Button klickt.
Habe die Stelle in der Datei folgendermaßen gekennzeichnet:
//*************************************************************************************
//HIER!*******************hier soll sich die nächste Datei "Erf_Formular2.php" aufrufen!
//*************************************************************************************
PHP:
<?php
include('funktionen.php');
include ('cookbook.incdb.php');
$formanzeigen = "ja" ;
$Tablename='studierende';
$db = mysql_connect($server, $name, $pass) or print('Server konnte nicht verbunden werden');
mysql_select_db($dbname, $db) or print('Datenbank konnte nicht erreicht werden');
 
 
 
if(isset($submit))
{
// prüfen ob alle Felder ausgefüllt worden sind
if ( $vorname == "" ) 
	{ $no_vorname = "*" ; }
if ( $nachname =="") 
	{$no_nachname = "*";}
//prüft zunächst, ob das Feld gefüllt wurde 
if ($email=="") 
{
$no_email="*";
}
else
{
	 //die Funktion stammt aus der Datei "funktionen.php" und checkt die Richtigkeit der Eingabe
	if(emailRichtig($email))
	{
	}
	else
	{
	$no_korrekte_email="Bitte geben Sie eine gültige e-Mail Adresse ein!";
	}
} 
if ($beginn_monat =="-" or $beginn_jahr=="-") 
	{$no_datum_beginn="*";}
if ($ende_monat =="-" or $ende_jahr=="-") 
	{$no_datum_ende="*";}
if ($einsch_Dauer =="") 
	{$no_einsch_Dauer="*";}
if ($gr1=="" and $gr2=="" and $gr3=="" and $gr4=="" and $gr5=="" and $gr6=="" and $gr7=="") 
	{$no_gruende="*";}
//sobald mind. eine Frage nicht beantwortet worden ist, erscheint oben ein Hinweis
if($no_vorname!="" or $no_nachname!="" or $no_email!="" or $no_datum_beginn!="" or $no_datum_ende!="" or $no_einsch_Dauer!="" or $no_gruende!="")
{
$hinweis="Hinweis: Bitte machen Sie bei den mit * markierten Feldern eine Angabe!";
}
 
 
 
 
/*Sobald alle Felder ausgefüllt worden sind und die e-mail Adresse
korrekt ist, werden die erhobenen Daten in der DB gespeichert*/
	if($hinweis=="" and $no_korrekte_email=="")
{
$Tablename='studierende';
$db = mysql_connect($server, $name, $pass) or print('Server konnte nicht verbunden werden');
mysql_select_db($dbname, $db) or print('Datenbank konnte nicht erreicht werden');
 
$Query="INSERT INTO $Tablename (Vorname, Nachname, Email, Fachbereich) VALUES ('$vorname', '$nachname', '$email', '$fachbereich')"; 
print ("Die Anfrage is: <BR>$Query<P>\n");
 
 
 
//*************************************************************************************
//HIER!*******************hier soll sich die nächste Datei "Erf_Formular2.php" aufrufen!
//*************************************************************************************
 
 
if(mysql_db_query ($dbname, $Query, $db))
{
print ("die anfrage war erfolgreich!<br>\n");
}
else
{
print ("Nicht erfolgreich!<br>\n");
}
mysql_close($db);
} 
}
 
 
 
if ($formanzeigen == "ja" ) 
{
echo '
 
<form method="post" action="'.$PHP_SELF.'" name="Eingabenüberprüfung_1">
<div align="center"><span><font color="#DF0000"><strong>'.$hinweis.'</strong></font></span><br></div>
<fieldset>
<legend><b><font color="#0000DD">1. Angaben zur Person der/des Studierenden</font></b></legend>
<table width="100%">
<tr>
	<td><b>Vorname</b><span><font color="#DF0000"><strong>'.$no_vorname.'</strong></font></span><br>
	<input type="Text" name="vorname" value="'.$vorname.'"size="33%" maxlength="50"> 
	</td>
 
	<td><b>Nachname</b><span><font color="#DF0000"><strong>'.$no_nachname.'</strong></font></span><br>
	 <input type="Text" name="nachname" value="'.$nachname.'"size="33%" maxlength="50"> 
	</td>
 
	<td> <b>E-Mail Adresse</b> <span><font color="#DF0000"><strong>'.$no_email.'</strong></font></span>
	<font color="#DF0000"><strong>'.$no_korrekte_email.'</strong></font></span><br>
	<input type="Text" name="email" value="'.$email.'" size="33%" maxlength="50">
	</td>
</tr>
 
//............................
<div align="right"><input type="Submit" name="submit" value="Speichern & Weiter"></div>
</form>
'; //Ende der echo-Aufforderung
}
 
 
 
?>

Ich hoffe, es kann mir einer helfen...Irgendwie kommt mir das Problem sehr trivial vor, finde aber trotzdem keine Lösung...:(
Viele Grüße,
I.
 
wenn alles ok ist soll er weiterleiten... (ich hoff ich hab das richtig verstanden)

versuch es mal so: Nichts ausgeben (ist wichtig, weder html noch echt/print)
und dann die funktion

header("Location: Erf_Formular2.php");

Das müsste gehen. Es entspricht einer Weiterleitung auf die andere Seite.
 
Du hast das Problem richtig verstanden.
Hab gerade an die besagte Stelle die header-funktion eingefügt:
PHP:
 <?php
include('funktionen.php');
include ('cookbook.incdb.php');
 
$formanzeigen = "ja" ;
$Tablename='studierende';
$db = mysql_connect($server, $name, $pass) or print('Server konnte nicht verbunden werden');
mysql_select_db($dbname, $db) or print('Datenbank konnte nicht erreicht werden');
 
 
 
 
if(isset($submit))
{
// prüfen ob alle Felder ausgefüllt worden sind
if ( $vorname == "" ) 
	{ $no_vorname = "*" ; }
if ( $nachname =="") 
	{$no_nachname = "*";}
//prüft zunächst, ob das Feld gefüllt wurde 
if ($email=="") 
{
$no_email="*";
}
else
{
	 //die Funktion stammt aus der Datei "funktionen.php" und checkt die Richtigkeit der Eingabe
	if(emailRichtig($email))
	{
	}
	else
	{
	$no_korrekte_email="Bitte geben Sie eine gültige e-Mail Adresse ein!";
	}
} 
if ($beginn_monat =="-" or $beginn_jahr=="-") 
	{$no_datum_beginn="*";}
if ($ende_monat =="-" or $ende_jahr=="-") 
	{$no_datum_ende="*";}
if ($einsch_Dauer =="") 
	{$no_einsch_Dauer="*";}
if ($gr1=="" and $gr2=="" and $gr3=="" and $gr4=="" and $gr5=="" and $gr6=="" and $gr7=="") 
	{$no_gruende="*";}
//sobald mind. eine Frage nicht beantwortet worden ist, erscheint oben ein Hinweis
if($no_vorname!="" or $no_nachname!="" or $no_email!="" or $no_datum_beginn!="" or $no_datum_ende!="" or $no_einsch_Dauer!="" or $no_gruende!="")
{
$hinweis="Hinweis: Bitte machen Sie bei den mit * markierten Feldern eine Angabe!";
}
 
 
 
 
/*Sobald alle Felder ausgefüllt worden sind und die e-mail Adresse
korrekt ist, werden die erhobenen Daten in der DB gespeichert*/
	if($hinweis=="" and $no_korrekte_email=="")
{
$Tablename='studierende';
$db = mysql_connect($server, $name, $pass) or print('Server konnte nicht verbunden werden');
mysql_select_db($dbname, $db) or print('Datenbank konnte nicht erreicht werden');
 
$Query="INSERT INTO $Tablename (Vorname, Nachname, Email, Fachbereich) VALUES ('$vorname', '$nachname', '$email', '$fachbereich')"; 
print ("Die Anfrage is: <BR>$Query<P>\n");
 
//*************************************************************************************
//HIER!*******************hier soll sich die nächste Datei "Erf_Formular2.php" aufrufen!
//*************************************************************************************
header("Location: Erf_Formular4.php");
 
if(mysql_db_query ($dbname, $Query, $db))
{
print ("die anfrage war erfolgreich!<br>\n");
}
else
{
print ("Nicht erfolgreich!<br>\n");
}
mysql_close($db);
} 
}
 
 
 
 
 
if ($formanzeigen == "ja" ) 
{
echo '
 
<form method="post" action="'.$PHP_SELF.'" name="Eingabenüberprüfung_1">
 
<div align="center"><span><font color="#DF0000"><strong>'.$hinweis.'</strong></font></span><br></div>
 
<fieldset>
<legend><b><font color="#0000DD">1. Angaben zur Person der/des Studierenden</font></b></legend>
<table width="100%">
<tr>
	<td><b>Vorname</b><span><font color="#DF0000"><strong>'.$no_vorname.'</strong></font></span><br>
	<input type="Text" name="vorname" value="'.$vorname.'"size="33%" maxlength="50"> 
	</td>
 
	<td><b>Nachname</b><span><font color="#DF0000"><strong>'.$no_nachname.'</strong></font></span><br>
	 <input type="Text" name="nachname" value="'.$nachname.'"size="33%" maxlength="50"> 
	</td>
 
	<td> <b>E-Mail Adresse</b> <span><font color="#DF0000"><strong>'.$no_email.'</strong></font></span>
	<font color="#DF0000"><strong>'.$no_korrekte_email.'</strong></font></span><br>
	<input type="Text" name="email" value="'.$email.'" size="33%" maxlength="50">
	</td>
</tr>
</table>

Daraufhin kam die Meldung:
Warning: Cannot add header information - headers already sent by (output started at c:\daten\funktionen.php:8) in c:\daten\erf_formular1.php on line 67

Eine WEiterleitung hat nciht funktioniert...

hhmm...anscheinend gibt´s da einen Konflikt bei dem header...
 
Die header()-Information muß als erste ausgegeben werden, bevor irgendwelche andere Zeichen an den Browser gesendet werden.
 
Ja, dann wurde vorher eine ausgabe gemacht.
du musst den print wegmachen. Dann gehts.

Bzw. den print in n if und dann nur header senden wenn du nix ausgibst!
 
Das Problem ist aber, dass die Weiterleitung als Reaktion auf einen bestimmten Zustand erfolgen soll und nicht von vornherein.

Die Weiterleitung soll erfolgen, wenn in der If-Anweisung ein bestimmtes Kriterium erfüllt ist, also mitten im Code!
Ich frage mich, wie andere mehrseitige Umfragen diesbezüglich programmiert werden..
irina
 
Du mußt ja nicht alles direkt ausgeben, sondern kannst deine Ausgabe in Variablen zwischenspeichern und diese erst zum Schluß ausgeben.
 
habe jetzt alle print-anweisungen aus der if(isset($submit))-Anweisung rausgenommen, und es funktioniert immer noch nicht.
Am besten, es könnte einer mal konkret in meinen Code was schreibe, wie es funktionieren würde. Das wäre eine große Hilfe!

PHP:
<?php
include('funktionen.php');
include ('cookbook.incdb.php');
$formanzeigen = "ja" ;
$Tablename='studierende';
$db = mysql_connect($server, $name, $pass) or print('Server konnte nicht verbunden werden');
mysql_select_db($dbname, $db) or print('Datenbank konnte nicht erreicht werden');
 
 
 
if(isset($submit))
{
// prüfen ob alle Felder ausgefüllt worden sind
if ( $vorname == "" ) 
	{ $no_vorname = "*" ; }
if ( $nachname =="") 
	{$no_nachname = "*";}
//prüft zunächst, ob das Feld gefüllt wurde 
if ($email=="") 
{
$no_email="*";
}
else
{
	 //die Funktion stammt aus der Datei "funktionen.php" und checkt die Richtigkeit der Eingabe
	if(emailRichtig($email))
	{
	}
	else
	{
	$no_korrekte_email="Bitte geben Sie eine gültige e-Mail Adresse ein!";
	}
} 
if ($beginn_monat =="-" or $beginn_jahr=="-") 
	{$no_datum_beginn="*";}
if ($ende_monat =="-" or $ende_jahr=="-") 
	{$no_datum_ende="*";}
if ($einsch_Dauer =="") 
	{$no_einsch_Dauer="*";}
if ($gr1=="" and $gr2=="" and $gr3=="" and $gr4=="" and $gr5=="" and $gr6=="" and $gr7=="") 
	{$no_gruende="*";}
//sobald mind. eine Frage nicht beantwortet worden ist, erscheint oben ein Hinweis
if($no_vorname!="" or $no_nachname!="" or $no_email!="" or $no_datum_beginn!="" or $no_datum_ende!="" or $no_einsch_Dauer!="" or $no_gruende!="")
{
$hinweis="Hinweis: Bitte machen Sie bei den mit * markierten Feldern eine Angabe!";
}
 
 
 
 
/*Sobald alle Felder ausgefüllt worden sind und die e-mail Adresse
korrekt ist, werden die erhobenen Daten in der DB gespeichert*/
	if($hinweis=="" and $no_korrekte_email=="")
{
$Tablename='studierende';
$db = mysql_connect($server, $name, $pass);// or print('Server konnte nicht verbunden werden');
mysql_select_db($dbname, $db) ;//or print('Datenbank konnte nicht erreicht werden');
 
$Query="INSERT INTO $Tablename (Vorname, Nachname, Email, Fachbereich) VALUES ('$vorname', '$nachname', '$email', '$fachbereich')"; 
//print ("Die Anfrage is: <BR>$Query<P>\n");
 
 
if(mysql_db_query ($dbname, $Query, $db))
{
//print ("die anfrage war erfolgreich!<br>\n");
}
else
{
//print ("Nicht erfolgreich!<br>\n");
}
mysql_close($db);
}
 
 
//*************************************************************************************
//HIER!*******************hier soll sich die nächste Datei "Erf_Formular2.php" aufrufen!
//*************************************************************************************
header("Location: Erf_Formular2.php");
 
}
 
 
if ($formanzeigen == "ja" ) 
{
echo '
 
<form method="post" action="'.$PHP_SELF.'" name="Eingabenüberprüfung_1">
<div align="center"><span><font color="#DF0000"><strong>'.$hinweis.'</strong></font></span><br></div>
<fieldset>
<legend><b><font color="#0000DD">1. Angaben zur Person der/des Studierenden</font></b></legend>
<table width="100%">
<tr>
	<td><b>Vorname</b><span><font color="#DF0000"><strong>'.$no_vorname.'</strong></font></span><br>
	<input type="Text" name="vorname" value="'.$vorname.'"size="33%" maxlength="50"> 
	</td>
 
	<td><b>Nachname</b><span><font color="#DF0000"><strong>'.$no_nachname.'</strong></font></span><br>
	 <input type="Text" name="nachname" value="'.$nachname.'"size="33%" maxlength="50"> 
	</td>
 
	<td> <b>E-Mail Adresse</b> <span><font color="#DF0000"><strong>'.$no_email.'</strong></font></span>
	<font color="#DF0000"><strong>'.$no_korrekte_email.'</strong></font></span><br>
	<input type="Text" name="email" value="'.$email.'" size="33%" maxlength="50">
	</td>
</tr>
</table>
 
<table>
<tr>
	<td><b>Fachbereich</b><br>
	<select size="1" name="fachbereich">
	<option>FB I - Erziehungs- und Sozialwissenschaften</option>
	<option>FB II -Kulturwissenschaften un &Auml;sthetische Praxis</option>
	<option>FB III - Informations- und Kommunikationswissenschaften</option>
	 </select> 
	 </td>
</tr>
 
 
<fieldset>
<legend><b><font color="#0000DD">2. Dauer des Studienaufenthaltes und Motivation</font></b></legend>
<table width="100%" >
<tr>
<td width="50%"> <b> a) Aufenthaltsbeginn</b><span><font color="#DF0000"><strong>'.$no_datum_beginn.'</strong></font></span><br>
	Monat: 
	<select size="1" name="beginn_monat">
	<option value="-"'.(($beginn_monat=="-") ? "selected" : "").' >-</option>
	<option value="Januar"'.(($beginn_monat=="Januar") ? "selected" : "").'>Januar</option>
	 <option value="Februar" '.(($beginn_monat=="Februar") ? "selected" : "").'>Februar</option>
	<option value="März"'.(($beginn_monat=="März") ? "selected" : "").'>M&auml;rz</option>
	<option value="April"'.(($beginn_monat=="April") ? "selected" : "").'>April</option>
	<option value="Mai" '.(($beginn_monat=="Mai") ? "selected" : "").'>Mai</option>
	<option value="Juni"'.(($beginn_monat=="Juni") ? "selected" : "").'>Juni</option> 
	<option value="Juli"'.(($beginn_monat=="Juli") ? "selected" : "").'>Juli</option>
	<option value="August"'.(($beginn_monat=="August") ? "selected" : "").'>August</option>
	<option value="September"'.(($beginn_monat=="September") ? "selected" : "").'>September</option>
	<option value="Oktober"'.(($beginn_monat=="Oktober") ? "selected" : "").'>Oktober</option>
	<option value="November"'.(($beginn_monat=="November") ? "selected" : "").'>November</option>
	<option value="Dezember"'.(($beginn_monat=="Dezember") ? "selected" : "").'>Dezember</option>
	</select>
Jahr:
	<select size="1" name="beginn_jahr">
	<option value="-"'.(($beginn_jahr=="") ? "selected" : "").'>-</option>
	<option value="2001"'.(($beginn_jahr=="2001") ? "selected" : "").'>2001</option>
	<option value="2002"'.(($beginn_jahr=="2002") ? "selected" : "").'>2002</option>
	<option value="2003"'.(($beginn_jahr=="2003") ? "selected" : "").'>2003</option>
	<option value="2004"'.(($beginn_jahr=="2004") ? "selected" : "").'>2004</option>
	<option value="2005"'.(($beginn_jahr=="2005") ? "selected" : "").'>2005</option>
	<option value="2006"'.(($beginn_jahr=="2006") ? "selected" : "").'>2006</option>
	</select>
	 </td>
 
	 <td width="50%"><b>Aufenthaltsende</b><span><font color="#DF0000"><strong>'.$no_datum_ende.'</strong></font></span><br>
	 Monat: 
	<select size="1" name="ende_monat">
	<option value="-"'.(($ende_monat=="-") ? "selected" : "").' >-</option>
	<option value="Januar"'.(($ende_monat=="Januar") ? "selected" : "").'>Januar</option>
	 <option value="Februar" '.(($ende_monat=="Februar") ? "selected" : "").'>Februar</option>
	<option value="März"'.(($ende_monat=="März") ? "selected" : "").'>M&auml;rz</option>
	<option value="April"'.(($ende_monat=="April") ? "selected" : "").'>April</option>
	<option value="Mai" '.(($ende_monat=="Mai") ? "selected" : "").'>Mai</option>
	<option value="Juni"'.(($ende_monat=="Juni") ? "selected" : "").'>Juni</option> 
	<option value="Juli"'.(($ende_monat=="Juli") ? "selected" : "").'>Juli</option>
	<option value="August"'.(($ende_monat=="August") ? "selected" : "").'>August</option>
	<option value="September"'.(($ende_monat=="September") ? "selected" : "").'>September</option>
	<option value="Oktober"'.(($ende_monat=="Oktober") ? "selected" : "").'>Oktober</option>
	<option value="November"'.(($ende_monat=="November") ? "selected" : "").'>November</option>
	<option value="Dezember"'.(($ende_monat=="Dezember") ? "selected" : "").'>Dezember</option>
	</select>
Jahr:
	<select size="1" name="ende_jahr">
	<option value="-"'.(($ende_jahr=="") ? "selected" : "").'>-</option>
	<option value="2001"'.(($ende_jahr=="2001") ? "selected" : "").'>2001</option>
	<option value="2002"'.(($ende_jahr=="2002") ? "selected" : "").'>2002</option>
	<option value="2003"'.(($ende_jahr=="2003") ? "selected" : "").'>2003</option>
	<option value="2004"'.(($ende_jahr=="2004") ? "selected" : "").'>2004</option>
	<option value="2005"'.(($ende_jahr=="2005") ? "selected" : "").'>2005</option>
	<option value="2006"'.(($ende_jahr=="2006") ? "selected" : "").'>2006</option>
	</select>
	 </td>
</tr>
</table><br>
 
<b>b) Halten Sie die Dauer Ihres Studienaufenthaltes f&uuml;r:</b><span><font color="#DF0000"><strong>'.$no_einsch_Dauer.'</strong></font></span>
<input type="radio" name="einsch_Dauer" value="1"'.(($einsch_Dauer=="1") ? "checked" : "").'>zu kurz
<input type="radio" name="einsch_Dauer" value="2"'.(($einsch_Dauer=="2") ? "checked" : "").'>zu lang
<input type="radio" name="einsch_Dauer" value="3"'.(($einsch_Dauer=="3") ? "checked" : "").'>genau richtig
<br><br>
<b>c) Aus welchen Gr&uuml;nden strebten Sie einen Studienaufenthalt im Auslandan?</b><span><font color="#DF0000"><strong>'.$no_gruende.'</strong></font></span>
	<table width="100%" >
	<tr>
	 <td width="33%"><input type="checkbox" name="gr1" value="akad"'.(($gr1=="akad") ? "checked" : "").'>akademische </td>
	 <td width="33%"><input type="checkbox" name="gr2" value="kult"'.(($gr2=="kult") ? "checked" : "").'>kulturelle </td>
	 <td width="33%"><input type="checkbox" name="g23" value="freunde"'.(($gr3=="freunde") ? "checked" : "").'>Freunde im Ausland </td>
	</tr>
	<tr>
	 <td width="33%"><input type="checkbox" name="gr4" value="berufl"'.(($gr4=="berufl") ? "checked" : "").'>berufliche Pl&auml;ne </td>
	 <td width="33%" ><input type="checkbox" name="gr5" value="umgeb"'.(($gr5=="umgeb") ? "checked" : "").'>eine neue Umgebung </td>
	 <td width="33%"><input type="checkbox" name="gr6" value="europ"'.(($gr6=="europ") ? "checked" : "").'>Europ&auml;ische Erfahrung </td>
	</tr>
</table>
	andere:
	<input type="Text" name="gr7" value="'.$gr7.'" size="30" maxlength="100">
</fieldset><br>
 
<div align="right"><input type="Submit" name="submit" value="Speichern & Weiter"></div>
</form>
'; //Ende der echo-Aufforderung
}
 
 
 
?>
Danke..:)
i.
 
Zurück