Werte aus PHP in HTML und zurück

Vertigo21

Erfahrenes Mitglied
Hallo zusammen.

Ich habe mal eine Eingabeformular in HTML für mein kleines News- Prog geschrieben und reiche die Eingaben ganz normal an PHP weiter.

Um auch die DAUs zu berücksichtigen möchte ich die Eingaben sichern, wenn z.B. keine Überschrift eingegeben wurde. Dazu speichere ich die Eingaben in globale Session- Variablen. Wurde nun keine Überschrift eingegeben wird zurück zu dem Eingabeformular geleitet und dort soll der bereits eingegeben Newstext wieder erscheinen und der DAU kann seine Eingaben vervollständigen.

Mein Problem ist jedoch, dass ich die Inhalte der Session- Variablen nicht in die HTML- Formularfelder zurückschreiben kann. Alle Eingaben werden korrekt in die Session- Variablen gespeichert (getestet), nur die Rückgabe funktioniert nicht.

Definition der Session- Variablen auf einer vorherigen Seite:
PHP:
 /*Dieser Register- Bereich ist auf einer vorherigen Seite definiert- ich habe ihn hier nur zum besseren Verständnis hingeschrieben*/
            
        session_start();
        session_register("SESSION_User"); 
        session_register("SESSION_ok1");
        session_register("SESSION_ok2");
        session_register("SESSION_ueberschrift");
        session_register("SESSION_inhalt");
       
        $_SESSION['SESSION_User']=$user;
        $_SESSION['SESSION_ok1']=TRUE;
        $_SESSION['SESSION_ok2']=TRUE;
        $_SESSION['SESSION_ueberschrift']="";
        $_SESSION['SESSION_inhalt']="";
            
            //***Ende des Bereichs***

Eingabeformular:
PHP:
             <?
         session_start();
  
           $html='
              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
             	 "http://www.w3.org/TR/html4/transitional.dtd">
             
              <html>
           <body link="blue" vlink="purple" alink="blue">
             
              <table border="0" width="768" cellspacing="5" bgcolor="white" align="center">
              <tr>
              <td align="left">
                <h3><b>Neue News erstellen</b></h3><p>
                <form action="makenews2.php" method="post">
             
              <hr>
              Art der News:<p>
             
              <select name="newsart" size="1">
              <option> Ankündigung
              <option> Allgemeiner Hinweis
           <option> WICHTIGER HINWEIS
              <option> Sonstiges
              </select>
              <p>
              <hr>
              Überschrift:<br>
              ';
              /*Hier wird eine Auswahl getroffen was als HTML angezeigt wird, abhängig von den Prüfungsvariablen*/
             		if($_SESSION['SESSION_ok1']==FALSE)
             	 {$html.='
   			<font face="Arial" color="red" size="-2">
             		  * Sie haben keine Überschrift eingegeben</font><br>
 			<p><input name="ueberschrift" size="30" value="
             			
             			'.$_SESSION['SESSION_ueberschrift'].'
             			
             			"><p><hr>
             			';
             		 } 
             	 
             		else 
             		 {
             			$html.='
             			 <input name="ueberschrift" size="30">
             			 <p>
             			 <hr>
             			';
             		 }
             			  
               /* Und das gleiche Spiel nocheinmal, dieses Mal aber für den Eingabetext*/
             		if($_SESSION['SESSION_ok2']==FALSE)
             	   {
             		$html.='
             		Newstext:<br>
             		<font face="Arial" color="red" size="-2">
 			* Sie haben keinen Text eingegeben</font><br>
             		<textarea name="newstext" rows="8" cols="30">
             			
             			'.$_SESSION['SESSION_inhalt'].'
             			
             			</textarea><p>
             			';
             		 }
             		 
             		else 
             		 {
             			$html.='Newstext:<br>
 			 <textarea name="newstext" rows="8" cols="30"></textarea>
             			 <p>
             			 ';
             		 }
             		 
             $html.='
 				<input type="submit" value="NEWS verfassen!">
             		  <input type="reset" value="Felder löschen">
             			</form></td>
             				 </tr>
             				 </table>
   				 <div align="center"
 			 	<font face="Arial"><a href="inhalt.php" target="rechts">Zurück</a></font><p>
             				 </div>
             				 </body>
             				 </html>
             				';
             
             //***Ausgabe des HTML- Codes*** 
              echo $html;
             ?>

Und das Überprüfungsformular mit MySQL:
PHP:
        <?
         session_start();
        //***Eingaben sichern***
        $_SESSION['SESSION_ueberschrift']=$_POST["ueberschrift"];
        $_SESSION['SESSION_inhalt']=$_POST["newstext"];
        
        
        //***Datenbankvariablen Werte zuweisen***
         $art = $_POST["newsart"];
         $timestamp = time();
         $autor = $_SESSION['SESSION_User'];
        
          if ($_POST["ueberschrift"]!="")
          {$ueberschrift=$_POST["ueberschrift"];$_SESSION['SESSION_ok1'] = TRUE;}
          else
          {$_SESSION['SESSION_ok1'] = FALSE;}
        
          if ($_POST["newstext"]!="")
          {$inhalt = $_POST["newstext"];$_SESSION['SESSION_ok2'] = TRUE;}
          else
          {$_SESSION['SESSION_ok2'] = FALSE;}
        
        
          if ($_SESSION['SESSION_ok1'] == TRUE && $_SESSION['SESSION_ok2'] == TRUE)
           {
        //***Verbindung zur Datenbank aufbauen***
        		$mysql_user = 'root';
        		$mysql_pw   = '';
        		$mysql_host = 'localhost';
        		$mysql_db   = 'news_db';
        
        		mysql_connect($mysql_host, $mysql_user, $mysql_pw);
        		mysql_select_db($mysql_db);
        				
        //***Daten in die DB schreiben***
 		if(mysql_query("INSERT INTO tbl_news VALUE ('$art','$timestamp','$autor','$ueberschrift','$inhalt','')"))
        		{
        //***Sicherungsvariablen im Falle eines Erfolges löschen***
        		 $_SESSION['SESSION_ueberschrift']="";
        	   $_SESSION['SESSION_inhalt']="";
 		 echo '<font face="Arial"><b><h3>News erfolgreich verfasst</h3></b></font>';
        	   echo "<meta http-equiv='refresh' content='2; URL=sub1.php'>";
        		}
        		else
        		{
 		 echo 'Art: '.$art.'<br>Timestamp: '.$timestamp.'<br>Autor: '.$autor.'<br>Überschrift: '.$ueberschrift.'<br>Inhalt: '.$inhalt.'<p>';		
 		 echo '<b>Ein Fehler trat beim Schreiben in die Datenbank auf!</b>';
        		 echo "<meta http-equiv='refresh' content='2; URL=makenews.php'>";
        		}
        	 }
        
          else
           {
           echo "<meta http-equiv='refresh' content='0; URL=makenews.php'>";
           }
        
        ?>
 
Zuletzt bearbeitet:
Hi

wenn ich dich richtig verstanden habe, ist dein Problem, das die Eingaben deines Benutzers nicht vollständig sind und diese dann im Formular nicht angezeigt werden.
Wenn du das formular wieder aufrufst übergibt doch einfach die Daten nochmal.
Oder versuch es doch mal mit header('location:xyz.de') wieder auf das Formular zuverweisen. Dann müsste es auch keine Prbleme mit den sessio-Variablen geben.
 
Nein, nicht ganz. Wie du ja sicherlich weißt gibt es immer wieder Leute, die sich ein wenig dusselig anstellen bei Eingabeformularen und vergessen es schon mal wichtige Dinge niederzuschreiben.

Wenn sie das dann tatsächlich mal tun, z.B. die Überschrift der News, so sollen die bisherigen Eingaben, z.B. der News- Text, in die jeweilige globale Variable geschrieben werden. Nun erfolgt eine Weiterleitung zurück zum Eingabeformular. Hier wird dann dem User an der betreffenden Stelle ein kleiner Hinweistext eingeblendet werden wo er denn seine Eingaben vergessen hat.
Damit aber die bisher eingegebenen Sachen nicht auf diesem langen Weg verloren gehen brauche ich die globalen Variablen.

Woran es jetzt aber scheitert ist wohl ein Verständnisproblem meinerseits im Zusammenspiel zwischen PHP und HTML. Die Inhalte der globalen Variablen möchte ich jezt wieder im HTML- Formular angezeigt bekommen.

In diesem Falle handelt es sich um ein Textfeld und ein Textarea. Im normalen HTML (ganz ohne PHP) kann man solchen Felder im Voraus Inhalte geben, z.B.
HTML:
<input name="ueberschrift" size="30" value="Dies ist der Inhalt">
bzw.
HTML:
<textarea name="newstext" rows="8" cols="30">Dies ist der Inhalt</textarea>

Genau das habe ich hier versucht, nur dass ich eben den Inhalt nicht von Hand eintragen wollte, sondern mit Hilfe meiner PHP-Variablen. Und das klappt leider nicht.

Nun wollte ich wissen, ob ich schlicht nur einen Fehler gemacht habe, oder ob es auf diese Weise unmöglich ist...
 
Zuletzt bearbeitet:
Das Ganze nochmal in vereinfachter Version. Vielleicht wird es dann klarer:

PHP:
<?
     $text1="Testüberschrift";
     $text2="Dies ist der laaaange Text";
     
     $html='
     
     <html>
     <body>
     
     <form>
     <input name="ueberschrift" size="30" value="';
     
     $html.=$text1;
     
     $html.='"><p>
     <textarea name="newstext" rows="8" cols="30">';
     
     $html.=$text2;
     
     $html.='</textarea>
     
     </form>
     
     </body>
     </html>
     ';
     
     echo $html;
     ?>

[EDIT]
Sag mal, was ist das denn? Ich habe exakt diesen Code bei mir grade getestet und er FUNKTIONIERT?! Ich werde hier noch verrückt! :mad:

Erst mal nachforschen wo dann in meiner komplexeren Version der Fehler steckt... BRRRRR
[/EDIT]
 
Zuletzt bearbeitet:
Sorry das ich dir nicht weiterhelfen konnte. Hab dich wohl mißverstanden. Bin auch etwas schnell über den Text gerast, hatte nur ne kurze Pause!
 
Danke trotzdem. Wegen dir habe ich meinen Beitrag noch einmal überdacht und die vereinfachte Version geschrieben.

So bin ich ja überhaupt erst auf den Fehler gekommen, also hast du mir am Ende doch geholfen!

Übrigens: Die komplexere Version funktioniert jetzt auch. Ich hatte an einer anderen Stelle, die ich hier nicht gepostet hatte (der Artikel hätte sonst alle Dimensionen gesprengt), einen Denkfehler.
Jetzt bin ich wieder gut gelaunt! ;)
 
Zurück