Ceres82: nach FORM SUBMIT an php, funktioniert Startseite nicht mehr

Hallo HTML-ler.

Ich versuche nun schon seit mehr als einer Woche ein Problem zu lösen.

Ich habe da eine startseite.html auf der links ein DIV ist, welches ich als Menü benutze und rechts vom DIV befindet sich noch ein iFrame, in dem je nach gewähltem Menü die Inhalte dargestellt werden.

So, wenn ich nun links im Menü ein Formular (form.php) aufrufe, wird es im iFrame dargestellt. Dort kann ich es ausfüllen und per Submit Button mit POST an auswertung.php schicken.

Diese auswertung.php empfängt die Daten vom Formular und macht entsprechend dann eine Ausgabe im iFrame.
Nur nach der Ausgabe funktioniert mein Menü im linken DIV nicht mehr.
Wenn ich aber mein Formular nur aufrufe ohne es zu submitten, funktioniert mein Menü noch, also alle Menü Punkte können angeklcikt werden und es wird entsprechend im iFrame dargestellt. Nur nach Submit nicht mehr. Es scheint so, als würde ich irgendwie den Bezug zur startseite.html verlieren, wenn nach dem Submit die auswertung.php die Ausgabe im iFrame macht! Ich muss auch dazu sagen, dass ich in der auswertung.php noch eine weitere php-Datei include bevor ich die Ausgabe mache, wenn das hier für euch von Bedeutung sein sollte...

Versteht ihr in etwa was ich meine?

Ich hoffe echt, dass mir jemand weiter helfen kann :-)

  1. hi,
    was heißt denn, "funktioniert nicht mehr".

    ggfs. hilft statt <a href="abc/def.html">def</a> <a href="/abc/def.html">def</a>

    der "trainling slash" wäre der unterschied. damit du nicht relativ zu letzten aufgerufenen seite stehst?

    ansonsten gibt es bei frames/iframes ja noch das "target" - Attribut zu berücksichtigen, also auf welches fenster sich der link bezieht.

    mfg

    tami

    1. Mit funktioniert nicht mehr meine ich, dass die Links im Menü nicht mehr reagieren. Ich kann klicken was ich will. Da tut sich nichts mehr.

      Was deinen Vorschlag betrifft, ich habe meine links so geschrieben wie du es erwähnst.

      Nach dem im iFrame eine Ausgabe gemacht wurde, muss ich meine komplette startseite.html refreshen damit meine Links im Menü wieder funktionieren.

      1. und Wenn ich meine komplette startseite.html refreshe ist natürlich auch die Ausgabe im iFrame wieder weg, was ich nicht bezwecken möchte.

        1. Ich füge mal meinen Code an um das ganze zu veranschaulichen:

          startseite.html

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"  
             "http://www.w3.org/TR/html4/frameset.dtd">  
            
            
          <html>  
            
          <head>  
            
          <body bgcolor="white" link="0066FF" onload="ausgabebereich.location.href='abgleich.php' ">  
            
            
          <!-- Navigationsmenü -->  
          <div id="div_navi" name="navigation">  
          	<table><td id="navi_ueberschrift"> Navigation </td></table>  
            
          	<table id="tabelle">  
          		<tbody>  
          			<a href="form.php" target="ausgabebereich" ><tr><td style="text-decoration:none; color:white" > Menü 1 </td></tr></a>  
          			<a href="xxx.php" target="ausgabebereich" ><tr><td style="text-decoration:none; color:white" > Menü 2 </td></tr></a>  
          			<a href="xxx.php" target="ausgabebereich" ><tr><td style="text-decoration:none; color:white" > Menü 3 </td></tr></a>  
          		</tbody>  
          	</table>  
          	  
          	<table id="tabelle2">  
          		<tbody>  
          			<a href="del_sperr_datei.php" target="ausgabebereich" ><tr><td style="text-decoration:none; color:white" >Sonstiges</tr></td></a>  
          		</tbody>  
          	</table>  
          	  
          </div>  
            
          <!-- Ausgabebereich -->  
          <iframe id="ausgabebereich" name="ausgabebereich" class="ausgabebereich" >  
            
          </iframe>  
            
          </body>  
          </html>
          

          form.php

          <form method="post" action="auswertung.php"  name="abschicken" >	  
            
          	<!-- Welche Art Nachricht soll versendet werden	-->  
          	<a href="#" ><div class="box1_msg" onclick="showonlyone('popup_msg');" style="text-decoration:none; color:white">MSG-Ausgabe wählen</div></a>  
          	<div class="versteckt" id="popup_msg" style="z-index:1; width: 190px; height:118px; overflow:hidden; position:absolute; top:78px; left:265px; background:white; border:0px solid black;">	  
          		<a href="#" onClick="document.getElementById('popup_msg').style.display='none';" style="text-decoration:none; color:black; font-weight:bold" id="schließen1"> x </a>  
          		<div  class="message" style="width: 190px; position:absolute; top:0px; left:0px; font-family: Arial; font-size: 18px; color: #000000; line-height: 20px;">		  
          			<table>  
          				<colgroup>  
          					<col width="30">  
          					<col width="170">  
          				</colgroup>  
          				<tbody>  
          					<br>  
          					<tr><td><input type="checkbox" name="msg" value="Störungs - MSG"></td><td>Störungs - MSG</td></tr>  
          					<tr><td><input type="checkbox" name="msg" value="Good - MSG"></td><td>Good - MSG</td></tr>  
          					<tr><td><input type="checkbox" name="msg" value="Info - MSG"></td><td>Info - MSG</td></tr>  
          					<tr><td><input type="checkbox" name="msg" value="Übergabe - MSG"></td><td>Übergabe - MSG</td></tr>  
          				</tbody>  
          			</table>  
          		</div>  
          	</div>  
          	  
          	<!-- Welche Anwendung(en) betrifft es	-->  
          	<a href="#" ><div class="box1_anw" onclick="showonlyone('popup_anw');" style="text-decoration:none; color:white">Anwendung wählen</div></a>  
          	<div class="versteckt" id="popup_anw" style="z-index:1; width: 180px; height:117px;; overflow:hidden; position:absolute; top:112px; left:265px; background:white; border:0px solid black; ">	  
          		<a href="#" onClick="document.getElementById('popup_anw').style.display='none';" style="text-decoration:none; color:black; font-weight:bold" id="schließen2"> x </a>  
          		<div style="width: 170px; position:absolute; top:0px; left:0px; font-family: Arial; font-size: 18px; color: #000000; line-height: 20px; ">	  
          			<table>  
          				<colgroup>  
          					<col width="30">  
          					<col width="170">  
          				</colgroup>  
          				<tbody>  
          				<br>  
          					<tr><td><a href="#" onclick='checkbox()'>alle</a></td></tr>  
          					<tr><td><input type="checkbox" name="anw[]" onclick="menu_ausblenden()" value="Anwendung 1"></td><td>Anwendung 1</td></tr>  
          					<tr><td><input type="checkbox" name="anw[]" onclick="menu_ausblenden()" value="Anwendung 2"></td><td>Anwendung 2</td></tr>  
          					<tr><td><input type="checkbox" name="anw[]" onclick="menu_ausblenden()" value="Anwendung 3"></td><td>Anwendung 3</td></tr>  
          				</tbody>  
          			</table>  
          		</div>  
          	</div>  
          	<input type="submit" id="senden" name="senden" value="Mail abschicken" onclick="return prüfung()" >  
          </form>
          
          Auswertung.php  
            
          <?php  
            
          	//**** Daten aus Formular empfangen ****  
          	$msg= $_POST["msg"];  
          	$anw= $_POST["anw"];  
          	  
            
          	echo 'E-Mail wurde verschickt!';  
          		  
          		//**** Hier wird die Email-Nachricht ****  
          		ob_start();  
          		include("mail.php");  
          		$message = ob_get_contents();  
          		ob_end_flush();							// Ausgabe am Bildschirm  
          		//ob_end_clean();  
            
          		  
          		$to      = 'xxxx@test.de';  
          		$header  = "MIME-Version: 1.0\r\n";  
          		$header .= "Content-type: text/html; charset=iso-8859-1\r\n";  
            
          		$subject = 'Test Email über PHP versendet';  
            
          		  
          		//**** Email verschicken ****  
          		mail($to, $subject, $message, $header);
          ~~~?>  
            
          Mail.php  
            
          ~~~html
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"  
             "http://www.w3.org/TR/html4/frameset.dtd">  
            
            
          <html>  
          <head>  
          <style type="text/css">  
          	body {font-family:arial }  
          	h1 {font-size:30px; font-weight:bold; color:black; background-color:#; }  
          	h2 {font-weight:bold; font-weight:bold; text-decoration: underline;}  
          	  
          	p {font-size:16px; color:black;}  
            
          </style>  
            
            
          <body>  
          	<h1><font color='red'>Störungsmeldung für <?php echo "$anw[0], $anw[1] und $anw[2]"; ?> </font></h1>  
            
              <p><br>Sehr geehrte Damen und Herren, <br><br>  
            
          			für folgende LOHN-Produkte ==> <?php echo "$anw[0], $anw[1] und $anw[2]"; ?> <br><br>  
            
          			ist derzeit eine Störung / Verzögerung aufgetreten!  
              <table>  
          		<colgroup>  
          		<col width="180">  
          		<col width="230">  
          		</colgroup>  
          			  
          			<tr><td style="background-color:#D8D8D8">Ausfallursache:</td> <td style="background-color:#F2F2F2"> irgendein text </td></tr>  
            
          			<tr><td style="background-color:#D8D8D8">Voraussichtliche Dauer:</td> <td style="background-color:#F2F2F2"> blab la bla </td></tr>  
            
          	</table>  
            
                      Bitte geben Sie diese Information weiter.  <br><br><br>  
            
          			Mit freundlichen Grüßen    <br><br>  
          </p>  
            
          </body>  
          </html>
          
          1. Hallo,

            Ich füge mal meinen Code an um das ganze zu veranschaulichen:

            und schon sieht man ein paar böse Fehler. Ob die das beschriebene Verhalten auslösen ... schwer zu sagen.

            startseite.html

            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"

            "http://www.w3.org/TR/html4/frameset.dtd">

            <html>

            <head>

            <body bgcolor="white" link="0066FF" onload="ausgabebereich.location.href='abgleich.php' ">

              
            Ähm ... Kein title-Element im head? Kein schließendes Tag für head?  
            Und vor allem: Du beziehst dich auf einen frameset-DOCTYPE, baust aber gar kein Frameset.  
              
            
            > `<table><td id="navi_ueberschrift"> Navigation </td></table>`{:.language-html}  
              
            Fehler: td kann nicht direkt Kind von table sein, da fehlt mindestens mal ein tr. Und eine Tabelle mit nur einer Zelle würde ich "degeneriert" nennen. Zumindest ist das nicht das geeignete Element.  
              
            
            > ~~~html
            
            <table id="tabelle">  
            
            > 		<tbody>  
            > 			<a href="form.php" target="ausgabebereich" ><tr><td style="text-decoration:none; color:white" > Menü 1 </td></tr></a>  
            > 			<a href="xxx.php" target="ausgabebereich" ><tr><td style="text-decoration:none; color:white" > Menü 2 </td></tr></a>  
            > 			<a href="xxx.php" target="ausgabebereich" ><tr><td style="text-decoration:none; color:white" > Menü 3 </td></tr></a>  
            > 		</tbody>  
            > 	</table>
            
            

            Fehler: Auch ein Link (a-Element) kann kein Kind von table oder tbody sein. Das a-Element muss in diesem Fall komplett *innerhalb* der Zelle stehen, alles andere ist grob fehlerhaft.

            <iframe id="ausgabebereich" name="ausgabebereich" class="ausgabebereich" >

            </iframe>

              
            Na, jetzt übertreibst du es aber mit der Benennung ...  
              
            
            > ~~~html
            
            <form method="post" action="auswertung.php"  name="abschicken" >	  
            
            >   
            > 	<!-- Welche Art Nachricht soll versendet werden	-->  
            > 	<a href="#" ><div class="box1_msg" onclick="showonlyone('popup_msg');" style="text-decoration:none; color:white">MSG-Ausgabe wählen</div></a>
            
            

            Fehler: Ein a-Element darf keine Blockelemente als Kinder haben (außer in HTML 5). Außerdem: Wozu ein Link, der nur auf den Anfang der aktuellen Seite verlinkt?

            	<table>  
            
              		<colgroup>  
              			<col width="30">  
              			<col width="170">  
              		</colgroup>  
              		<tbody>  
              			<br>  
              			<tr><td><input type="checkbox" name="msg" value="Störungs - MSG"></td><td>Störungs - MSG</td></tr>
            
              
            Das hatten wir sinngemäß schon mal: Auch br kann kein Kind von tbody sein. Wozu überhaupt ein br?  
              
            
            > ~~~php
            
            Auswertung.php  
            
            >   
            > <?php  
            >   
            > 	//**** Daten aus Formular empfangen ****  
            > 	$msg= $_POST["msg"];  
            > 	$anw= $_POST["anw"];
            
            

            Wozu das Umkopieren der Variablen?

            echo 'E-Mail wurde verschickt!';

            Das weißt du zu diesem Zeitpunkt noch gar nicht. Genaugenommen weißt du es am Ende des Scripts auch noch nicht.

            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"

            "http://www.w3.org/TR/html4/frameset.dtd">

              
            Und schon wieder kündigst du ein Frameset an, wo keins ist.  
              
            Wenn du jetzt noch erklären könntest, wie diese vier Dokumente miteinander interagieren sollen - mir ist das nämlich zu konfus, um mich da durchzukämpfen, und ich bin überzeugt, dass man das deutlich vereinfachen könnte.  
              
            Also: startseite.php enthält ein iframe. In dieses iframe wird sofort (onload) abgleich.php geladen. Dieses Dokument erwähnst du aber nirgends weiter.  
            Dann gibt es anscheinend eine Datei form.php, von der ich nicht weiß, wie die ins Konzept passt. Oder ist das nur ein Zuordnungsfehler, und das soll eigentlich abgleich.php sein?  
            Und form.php übergibt die Formulardaten schließlich an auswertung.php, wo eine Mailnachricht generiert wird. Dass da auch noch ein mail.php includiert wird, treibt die Verschleierung noch weiter - zumal ein komplettes HTML-Dokument mit html-Element, head und body \*in ein anderes\* eingefügt wird. Wozu du nach noch mit output buffering hantierst, ist mir auch schleierhaft.  
              
            Aber wenn ich Browser wäre, wüsste ich nach dem Durcheinander auch nicht mehr, ob ich Männlein oder Weiblein bin. Ich glaube, das Beste wäre hier: Abreißen und neu aufbauen - und zwar systematisch und mit Ordnung.  
              
            Ciao,  
             Martin  
            
            -- 
            Alleine sind wir stark ...  
            gemeinsam sind wir unausstehlich!  
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
            
            1. Servus Der Martin,

              danke für deine Analyse. Hab einiges gleich angepasst.
              Was aber das "<a>"-Element betrifft, wenn es nur innerhalb eine Zelle stehen darf, warum funktioniert es auch so?
              Ich habe es deswegen so platziert, damit die ganze Zeile als Link erkannt wird sobald man drüber fährt mit der Maus. Sonst wäre wirklich nur die Schrift an sich klickbar. Zumindest kommt es so bis jetzt zu keinem Fehler.
              Den DOCTYPE habe ich angepasst. hab früher mal was mit Frames gemacht und einfach dann den DOCTYPE kopiert. Er kommt nun nur noch einmal vor in meinen Dateien!

              Wenn du jetzt noch erklären könntest, wie diese vier Dokumente miteinander interagieren sollen - mir ist das nämlich zu konfus, um mich da durchzukämpfen, und ich bin überzeugt, dass man das deutlich vereinfachen könnte. <<

              Der Ablauf ist wie folgt:
              "startseite.php" (abgleich.php wird sofort geladen, ist aber eine andere Baustelle) wird aufgerufen. Links hab ich ein kleines Menü mit ein paar Auswahlmöglichkeiten, u.a. der Menüpunkt der "form.php" aufruft. Rechts vom Menü ist das iFrame.
              Im "form.php" kann ich nun meine Daten ins Formular eingeben und dann per POST an "auswertung.php" schicken.
              "auswertung.php" empfängt die Daten aus "form.php" wertet aus und includiert "mail.php" (da steht nur der Mailtext drinnen). Am Ende macht "auswertung.php" eine Ausgabe im iFrame.

              So also der Ablauf.
              Mittlerweile kann ich das Menü links nach der Ausgabe anklicken. Vorher tat sich da ncihts.
              Wenn ich also drauf klicke auf eines der Menüpunkte links , öffnet sich alles in einem neuem Tab.
              Ich will aber das es im iFrame ausgegeben wird. Wie am Anfang.
              Das Target-Attribute habe ich drinnen. Am Anfang funktioniert es, nach der Ausgabe von auswerten.php im iFrame wird alles in einem neuem Tab geöffnet. Ich muss dann startseite.php refreshen, damit wieder alles im iFrame dargestellt wird.

              Wozu du nach noch mit output buffering hantierst, ist mir auch schleierhaft. <<

              ich brauche das Buffering, um den Mailtext aus mail.php in $message speichern zu können.
              Denn wenn ich $message = include("mail.php"); schreibe, bekomme ich als Ausgabe "1".

              Dannke bisher für deine Unterstützung ;-)

              1. Om nah hoo pez nyeetz, Ceres82!

                Bitte lass die Zitatmarkierungen so wie sie sind. Wenn du sie durch eigene ersetzst, werden sie nicht mehr hervorgehoben.

                Was aber das "<a>"-Element betrifft, wenn es nur innerhalb eine Zelle stehen darf, warum funktioniert es auch so?
                Ich habe es deswegen so platziert, damit die ganze Zeile als Link erkannt wird sobald man drüber fährt mit der Maus. Sonst wäre wirklich nur die Schrift an sich klickbar. Zumindest kommt es so bis jetzt zu keinem Fehler.

                Die doctype-Deklaration schreibt das so vor. a-Elemente sind inline-Elemente, vereinfacht stehen sie nur innerhalb einer Zeile, im Gegensatz etwa zu h1, welches stets eine neue Zeile beginnt. Auch in HTML5 darf a nicht Kind von table sein.

                Die Browser hingegen sind tolerant, du darfst dich aber nicht darauf verlassen.

                Matthias

                --
                Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Schaf und Schaffner.