Fehler beim speichern in Datei!

Seven Secrets

Erfahrenes Mitglied
Hallo,

Ich habe einen Scriptvorschalg von dieser Seite genommen und angepasst. Nun habe ich leider das Problem, daß ich das ausgelesene nicht korrekt zurück speichern kann. kann mir jemand helfen.

Script:

PHP:
<html> 
<head> 
<title>Online- Editor</title> 
<meta name="author" content="MrFISHMAN"> 
</head> 
<body> 
<form action="edit.php" method="POST"> 
<div align="center"> 
<h2><a href="edit.php">Der Online Editor</a></h2> 
<?php 
$dir = "./"; 
if($action=="") 
{ 
?> 
<table border="0"> 
<tr> 
<td>Neues Dokument erstellen</td> 
<td><input maxlength="20" type="Text" name="file_new"></td> 
<td><input type="Submit" name="action" value="neu"></td> 
</tr> 
<tr> 
<td>Dokument öffnen</td> 
<td><select name="file_edit" size="1"> 
<?php 
$handle = opendir($dir); 
while($file = readdir($handle)) 
{ 
   if(ereg("\.csv$",$file)) 
   { 
    echo "<option value=\"$file\">$file</option>"; 
   } 
} 
closedir($handle); 
?> 
</select></td> 
<td><input type="Submit" name="action" value="oeffnen"></td> 
</tr> 
</table> 
<h3>ACHTUNG: Es wird nicht geguckt ob die Datei existiert<br> 
Vorhandene Dateien werden überschrieben (gilt für neu)</h3> 
<?php 
} 
if($action=="neu" | $action=="oeffnen") 
{ 
if($action=="neu") 
{ 
$file_name=$file_new.".csv"; 
$f = fopen($dir.$file_name,"w"); 
if ($f) 
{ 
  fwrite($f,""); 
  fclose($f); 
} 
} 
else $file_name = $file_edit; 
echo "[$file_name]"; 
 
$contents = file_get_contents($dir.$file_name); 
$array = explode(chr(13), $contents);
for($n=0;$n<count($array);$n++)
{
$daten = explode(";",$array[$n]);
$beitrag = $daten[0];
$info = $daten[1]; 
$dauer = $daten[2]; 
if($beitrag == "") exit;
print " <br><br><input type=\"beitrag\" name=\"beitrag\" value=\"$beitrag\">
    <textarea name=\"info\" cols=\"35\" rows=\"3\" wrap=\"OFF\" id=\"info\">$info</textarea> 
    <input type=\"dauer\" name=\"dauer\" value=\"$dauer\"><br><br>
";
}
?>
<br> 
<input type="Submit" name="action" value="speichern">&nbsp;&nbsp;<input type="reset"> 
<input type="hidden" name="file_name" value="<?php echo $file_name; ?>"> 
<?php
} 
if($action=="speichern") 
{ 
$f = fopen($dir.$file_name,"w"); 
if ($f) 
{ 
  fwrite($f,$dokument); 
  fclose($f); 
} 
?> 
<h3>Datei wurde erfolgreich unter "<?php echo $file_name; ?>" gespeichert!</h3> 
<input type="hidden" name="action" value=""> 
<a href="edit.php">zurück zum Hauptmenü</a> 
<?php 
} 
?> 
</div> 
</form> 
</body> 
</html>

Gruß Martin
 
Keine, er speichert ja auch angeblich richtig ab! Nur ist die datei dann leer! Ich denke mir, ich muß jedes Feld einzeln speichern. Nur wie?
 
Aha! jetzt weiß ich woran es liegt. $dokument war im Ursprünglichen Script mal der Inhalt der gesamten Datei. Da ich aber nun einzlne Arrays daraus mache, muß ich diese dann wohl zurück gegeben. Das heißt dann wohl eine Schleife im, die Array bis x so zurück gibt, das die Datei nach und nach wieder voll geschriebenm wird.

so dann:

Beitrag1;Info1;Dauer1
Beitrag2;Info2;Dauer2
.
.
.
BeitragX;InfoX;DauerX

Die einzelnen Datensätze sind dann durch Chr(13) getrennt. Nur eben wie?
 
In etwa so sieht dann schlussendlich die ausgabe aus...:

PHP:
<?
	// TRENNZEICHEN
	$separator = (chr(13)) ;
	$zeilenumbruch = (chr(23));
	
	// ZEICHENKETTE ERSTELLEN
	for(i=0;$<=$n;i++){
		$dokument .= $array[$i,0].$separator.$array[$i,1].$separator.$array[$i,2].$zeilenumbruch;
	}
?>

Das Symbol für Zeilenumbruch weiss ich nicht, findest du aber bestimmt auf php.net
 
Zeilenumbruch ist dabei nicht unbedingt wichtig, das das Chr(13) ja ein Kästchen ist, das so interpretiert wird. Warum schreibst du dann Zahlen hinter das $array $i, die Datensätze können sich ja auch in der Anzahl ändern.
 
das ist war, darum ein mehrdimensionales array...

$i gibt zeile (geht $n zeile für zeile durch)
und 0 ist die aktuelle row

schau ma das script an, welches er gepostet hat oben... hab darauf bezug genommen...
 
Ich weiß nicht vieleicht verstehe ich das jetzt ja auch falsch. Alos, wenn er so ausliest:

PHP:
for($n=0;$n<count($array);$n++) 
{ 
$daten = explode(";",$array[$n]); 
$beitrag = $daten[0]; 
$info = $daten[1]; 
$dauer = $daten[2]; 
if($beitrag == "") exit; 
print " <br><br><input type=\"beitrag\" name=\"beitrag\" value=\"$beitrag\"> 
    <textarea name=\"info\" cols=\"35\" rows=\"3\" wrap=\"OFF\" id=\"info\">$info</textarea> 
    <input type=\"dauer\" name=\"dauer\" value=\"$dauer\"><br><br> 
"; 
} 
?>

Dann speichert er doch nix wirklich in einzelne Variablen, sondern gibt sie ja nur für den Moment so aus, oder?

Das ausgelesen Ergebnis sieht dann wie eine Datenbak aus. Das soll dann wieder zurück gespeichert werden. Die Datei brauch dabei keine Zeilen und SPalten, einfach nacheinander weg.
 
Zuletzt bearbeitet:
Zurück