Über Textarea Dateien lesen und editieren geht nicht

webdesign

Mitglied
Hallo Zusammen

Ich möchte gerne eine Datei per include in einem textarea feld ausgeben, damit man sie dort bearbeiten kann. Danach möchte ich, dass der alte Text (der am Anfang in der Textarea geladen wurde) gegen den neuen Text, bzw. den geänderten Text in der Textarea ausgetauscht wird.
Ich habe etwas gebastelt, funktioniert jedoch nicht. Wenn ich etwas in die Textarea hinein schreibe, schreibt es mir immer nur "Array" in die Textdatei.

Hier einmal den Quelltext:

PHP:
<?php

 $replace_ausbildung = $HTTP_POST_VARS['replace_ausbildung'];
 $replace_theater = $HTTP_POST_VARS['replace_theater'];
 $replace_konzert = $HTTP_POST_VARS['replace_konzert'];
 $replace_unterricht = $HTTP_POST_VARS['replace_unterricht'];
 
 $datei1 = "dateiname.txt";
 
 $fehler = "<table width=\"100%\" ><tr><td width=\"10\">&nbsp;</td><td width=\"*\">ERROR. Keine Daten vorhanden!<a href='javascript:history.back()'><b> Bitte Hier klicken</b></a></td></tr></table>";
 
if(file_exists($datei1))
{
	if($post)
 	{ 
	$inhalt = file($datei1);
	
	// Neue Daten hinein schreiben.
	$fp = fopen($datei1,"w");
	$rep_old = "$inhalt";
	$rep_neu = "$replace_ausbildung";
	$inhalt = str_replace("$rep_old","$rep_neu",$inhalt);
	fputs($fp,$inhalt);
	fclose($fp);
	}
}
else 
{ 
echo"Es wurde keine Datei gefunden"; 
} 

?>

Kann mir jemand weiter helfen?
Ich bin schon sehr lange am suchen, habe jedoch nur Lösungen gefunden um einzelne strings aus der Datei auszutauschen und nicht den ganzen Inhalt einer Datei.

Vielen Dank schon mal.

Gruss Jonas
 
Hi!

Bevor ich mir jetzt deinen Code angucke und versuche, ihn zu verstehen, habe ich einen meiner Codes ein wenig nachbearbeitet:

PHP:
<?php
$data = 'DeineDatei.txt';

if (!file_exists($data))
  touch($data);

if (isset($_POST['textfeld']))
  {
  $text = trim($_POST['textfeld']);
  $f = fopen ($data, 'w');
  fwrite($f, stripslashes($text));
  fclose($f);
  }
$text = implode('', file($data));

?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Textdatei speichern</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<textarea name="text" rows="15" cols="80"><?php echo $text; ?></textarea><br>
<input type="submit" value="Speichern">
</form>

</body>
</html>
Ich hoffe, der Code bedarf keiner zusätzlichen Erklärung...

Viel Spaß ;)

Mamphil
 
Zuletzt bearbeitet:
Achso, dein Fehler ist ganz einfach das $inhalt = file($datei1); gewesen: Das muss heißen:
$inhalt = implode("", file($datei1));

Mamphil
 
Vielen Dank für die Antwort
Ich werde mir dann mal deinen Quelltext noch anschauen, vielleicht kann ich ja
aus meinem und deinem den Quelltext noche ein bisschen verschönern :)

Vielen Dank

Gruss Jonas
 
Hallo Mamphil

Ich habe jetzt mal etwas ausprobiert, geht aber nicht es zeigt mir immer eine Fehlermeldung.

Hier mein Text:

PHP:
<?php
 
 $datei1 = "dateiname1.txt";
 
 $fehler = "<table width=\"100%\" ><tr><td width=\"10\">&nbsp;</td><td width=\"*\">ERROR. Keine Daten vorhanden!<a href='javascript:history.back()'><b> Bitte Hier klicken</b></a></td></tr></table>";
 
if (!file_exists($datei1))
{
		touch($datei1); 
	}
	if($post)
	{
	$text = implode("", file($datei1));
	if (isset($_POST['replace_ausbildung'])){ 
	$text = trim($_POST['replace_ausbildung']); 
	$f = fopen ($datei1, 'w'); 
	fwrite($f, stripslashes($text)); 
	fclose($f); 
		}
 	}

?>

Die Fehlermeldung lauten:

Code:
Parse error: parse error, unexpected T_STRING in /home/www/web201/html/admin/biografie/lebenslauf/script.php on line 15

Ich weiss aber nicht was daran falsch ist.

Gruss Jonas
 
Hi!

1.) Rück mal deinen Code vernünftig ein und nicht ohne System!
Hier mal mit Einrückung à la PEAR:
PHP:
<?php

$datei1 = "dateiname1.txt";

$fehler = "<table width=\"100%\" ><tr><td width=\"10\">&nbsp;</td><td width=\"*\">ERROR. Keine Daten vorhanden!<a href='javascript:history.back()'><b> Bitte Hier klicken</b></a></td></tr></table>";

if (!file_exists($datei1)) {
  touch($datei1);
  }

if($post) {
  $text = implode('', file($datei1));
  if (isset($_POST['replace_ausbildung'])) {
    $text = trim($_POST['replace_ausbildung']);
    $f = fopen ($datei1, 'w');
    fwrite($f, stripslashes($text));
    fclose($f);
    }
  }

?>
2.) Ich weiß nicht, welches Zeile 15 ist...

Mamphil
 
Zuerst einmal vielen Dank.

Es lag an der Gliederung, jetzt geht es.

Ich habe jetzt jedoch noch ein anderes Problem und zwar bei der Ausgabe.
Ich habe einen Adminbereich, wo ich die Einträge bearbeiten kann und ich habe einen Bereich zum zeigen.
Eine Möglichkeit wäre, dass ich die Datei einfach per include Befehl einfüge.
Dadurch wird aber der Text genau so ausgegeben, wie er in der Textdatei steht.
Ich möchte aber davor noch einige Dinge ändern zum anzeigen.

Ich habe etwas gebastelt, geht aber nicht. In dem Bereich, wo der Text angezeigt werden sollte erscheint nur der Text "Array" sonst nichts. Was ist falsch?
Kann mir jemand weiter helfen?

Hier der Quelltext:



PHP:
<?php

 $datei1 = "daten1.txt";
 $datei2 = "daten2.txt";
 $datei3 = "daten3.txt";
 $datei4 = "daten4.txt";


// die Einträge auslesen &anzeigen

	$text1 = file($datei1);
	$text2 = file($datei2);
	$text3 = file($datei3);
	$text4 = file($datei4);
	
	
			// Zeichen ersetzen
			$text1 = eregi_replace("ä","&auml;",$text1);
			$text1 = eregi_replace("ö","&ouml;",$text1);
			$text1 = eregi_replace("ü","&uuml;",$text1);
			$text1 = eregi_replace("<","&lt;",$text1);
			$text1 = eregi_replace(">","&gt;",$text1);
			$text1 = eregi_replace("copyrights","&copy;",$text1);
			$text1 = eregi_replace("ß","&szlig;",$text1);
			$text1 = eregi_replace("è","&egrave;",$text1);
			$text1 = eregi_replace("é","&eacute;",$text1);
			$text1 = eregi_replace("é","&eacute;",$text1);
			$text1 = eregi_replace('\"',"&quot;",$text1);
			$text1 = eregi_replace("\n","<br>",$text1);
			$ausbildung = $text1;
			
			$text2 = eregi_replace("ä","&auml;",$text2);
			$text2 = eregi_replace("ö","&ouml;",$text2);
			$text2 = eregi_replace("ü","&uuml;",$text2);
			$text2 = eregi_replace("<","&lt;",$text2);
			$text2 = eregi_replace(">","&gt;",$text2);
			$text2 = eregi_replace("copyrights","&copy;",$text2);
			$text2 = eregi_replace("ß","&szlig;",$text2);
			$text2 = eregi_replace("è","&egrave;",$text2);
			$text2 = eregi_replace("é","&eacute;",$text2);
			$text2 = eregi_replace("é","&eacute;",$text2);
			$text2 = eregi_replace('\"',"&quot;",$text2);
			$text2 = eregi_replace("\n","<br>",$text2);
			$theater = $text2;
			
			$text3 = eregi_replace("ä","&auml;",$text3);
			$text3 = eregi_replace("ö","&ouml;",$text3);
			$text3 = eregi_replace("ü","&uuml;",$text3);
			$text3 = eregi_replace("<","&lt;",$text3);
			$text3 = eregi_replace(">","&gt;",$text3);
			$text3 = eregi_replace("copyrights","&copy;",$text3);
			$text3 = eregi_replace("ß","&szlig;",$text3);
			$text3 = eregi_replace("è","&egrave;",$text3);
			$text3 = eregi_replace("é","&eacute;",$text3);
			$text3 = eregi_replace("é","&eacute;",$text3);
			$text3 = eregi_replace('\"',"&quot;",$text3);
			$text3 = eregi_replace("\n","<br>",$text3);
			$konzert = $text3;
			
			$text4 = eregi_replace("ä","&auml;",$text4);
			$text4 = eregi_replace("ö","&ouml;",$text4);
			$text4 = eregi_replace("ü","&uuml;",$text4);
			$text4 = eregi_replace("<","&lt;",$text4);
			$text4 = eregi_replace(">","&gt;",$text4);
			$text4 = eregi_replace("copyrights","&copy;",$text4);
			$text4 = eregi_replace("ß","&szlig;",$text4);
			$text4 = eregi_replace("è","&egrave;",$text4);
			$text4 = eregi_replace("é","&eacute;",$text4);
			$text4 = eregi_replace("é","&eacute;",$text4);
			$text4 = eregi_replace('\"',"&quot;",$text4);
			$text4 = eregi_replace("\n","<br>",$text4);
			$unterricht = $text4;
		
			// Daten ausgeben
			echo"<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
			<tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\"><b>Ausbildung:</b></td></tr><tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\">$ausbildung</td></tr><tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\">&nbsp;</td></tr>
			<tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\"><b>Theater:</b></td></tr><tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\">$theater</td></tr><tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\">&nbsp;</td></tr>
			<tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\"><b>Konzert:</b></td></tr><tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\">$konzert</td></tr><tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\">&nbsp;</td></tr>
			<tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\"><b>Unterricht:</b></td></tr><tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\">$unterricht</td></tr><tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\">&nbsp;</td></tr>
			</table>\n";


?>

Vielen Dank

Gruss Jonas
 
Hi!

Immer wenn "Array()" auf dem Bildschirm steht, versuchst du per echo oder print einen Array auszugeben. Du musst aber einen Schlüssel (der selbst kein Array ist) ausgeben!

BTW:
1.) Kennst du die Funktion htmlentities?
2.) Du musst Ausgaben nicht durch echo '....'; machen. Schreib einfach
PHP:
?>Hier kommt der undynamische HTML-Code hin<?php
und gut ist ;) Du kannst das auch in geschwungenen Klammern { } machen (z. B. in einem if-Block).
3.) Wie kommst du auf diese seltsame Einrückung? (nach dem ersten Kommentar 4 Spaces, nach dem zweiten noch viel mehr)

Mamphil
 
Hallo

Vielen Dank für diese super Funktion, hat mir einiges an Arbeit erspart :)

Die Einrückung ist nicht absichtlich, bei mir sieht das leider häufig so aus, wenn ich noch daran arbeite, erst wenn es zum Schluss geht, ordne ich das schön ein. Ist doof, ich weiss, muss ich mir abgewöhnen.

Das mit dem Text dazwischen habe ich nicht ganz verstanden. Meinst du damit, dass ich die Ausgabe nicht im PHP Bereicht definieren soll? So wie ich das verstanden habe, kann ich also das, was ich im echo Befehl am Schluss geschrieben habe, auserhalb des PHP Bereiches schreiben, stimmt das?
Oder wäre es möglich, dass du mir das in einem kleinen Beispiel erklären könntest?
Vielen Dank.

Gruss Jonas
 
Hi!

Dies hier ist ziemlich ekelig, weil unübersichtlich:
PHP:
<?php

// ...

echo"<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
            <tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\"><b>Ausbildung:</b></td></tr><tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\">$ausbildung</td></tr><tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\">&nbsp;</td></tr>
            <tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\"><b>Theater:</b></td></tr><tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\">$theater</td></tr><tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\">&nbsp;</td></tr>
            <tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\"><b>Konzert:</b></td></tr><tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\">$konzert</td></tr><tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\">&nbsp;</td></tr>
            <tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\"><b>Unterricht:</b></td></tr><tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\">$unterricht</td></tr><tr><td width=\"10\" align=\"center\" valign=\"top\">&nbsp;</td><td align=\"left\" valign=\"top\" width=\"*\">&nbsp;</td></tr>
            </table>\n"; 

// ...

?>

Das würde ich so machen:
PHP:
<?php

// ...
if ($I_want_to_echo_something) {
?>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="10" align="center" valign="top">&nbsp;</td>
	<td align="left" valign="top" width="*"><b>Ausbildung:</b></td>
  </tr>
  <tr>
    <td width="10" align="center" valign="top">&nbsp;</td>
	<td align="left" valign="top" width="*"><?php echo $ausbildung; ?></td>
  </tr>
  <tr>
    <td width="10" align="center" valign="top">&nbsp;</td>
	<td align="left" valign="top" width="*">&nbsp;</td>
  </tr>
  <tr><td width="10" align="center" valign="top">&nbsp;</td>
    <td align="left" valign="top" width="*"><b>Theater:</b></td>
  </tr>
  <tr>
    <td width="10" align="center" valign="top">&nbsp;</td>
    <td align="left" valign="top" width="*"><?php echo $theater; ?></td>
  </tr>
  <tr>
    <td width="10" align="center" valign="top">&nbsp;</td>
	<td align="left" valign="top" width="*">&nbsp;</td>
  </tr>
  <tr>
    <td width="10" align="center" valign="top">&nbsp;</td>
    <td align="left" valign="top" width="*"><b>Konzert:</b></td>
  </tr>
  <tr>
    <td width="10" align="center" valign="top">&nbsp;</td>
    <td align="left" valign="top" width="*"><?php echo $konzert; ?></td></tr>
  <tr>
    <td width="10" align="center" valign="top">&nbsp;</td>
	<td align="left" valign="top" width="*">&nbsp;</td>
  </tr>
  <tr>
    <td width="10" align="center" valign="top">&nbsp;</td>
    <td align="left" valign="top" width="*"><b>Unterricht:</b></td>
  </tr>
  <tr>
    <td width="10" align="center" valign="top">&nbsp;</td>
	<td align="left" valign="top" width="*"><?php echo $unterricht; ?></td>
  </tr>
  <tr>
    <td width="10" align="center" valign="top">&nbsp;</td>
	<td align="left" valign="top" width="*">&nbsp;</td>
  </tr>
</table>
<?php
  } // end echoing (c;
// ...

?>
Ich empfinde das als sehr viel übersichtlicher!

Mamphil
 
Zurück