in txt datei sachen am anfang einfügen

Brauni

Erfahrenes Mitglied
servus

ist es möglich per php eine txt datei zu bearbeiten um eine zeichenkette am anfang der datei anzuhängen und zu speichern?
 
PHP:
<?php

//alte Dateiinhalte holen
$old_content=implode("",file('datei.endung'));

//Neue Zeichenkette
$new_string="Hallo, das nen neuer Text";

//Verbinden der alten und der neuen Zeichenkette
$new_content= $new_string . $old_content;

//Datei schreiben
$fh=fopen('datei.endung','a');
fwrite($fh,$new_content);
fclose($fh);

?>

^^das wäre eine Möglichkeit....
 
ich hab in einer fariable $fertigername den dateinamen stehen nur er findet diese datei nicht und er erstellt auch eine datei mit dem namen $fertigername
 
Man könnte es aber auch noch viel Primitiver machen.

Man liest die Datei in die du rein schreiben willst aus und schreibst deine neuen rein. Dann fügst du die alten an.

Das müsste dann so aussehen:

PHP:
$file="produkte.txt";

$fp=@fopen($file, "r") or die ("Konnte $file nicht lesen");

while(! $feof($fp)) {

$products=fgets($fp, "1024");

}

$fp2=@fopen($file, "w") or die("Konnte $file nicht schreiben 1");

$fputs($fp, $neues); //$neues steht für deine aktuellen Daten
fclose($fp2);


$fp3= @fopen($file, "a") or die("Konnte $file nicht anfügen 2");

$fputs($fp3, $products);

fclose($fp3);

Je einfacher desto mehr muss man schreiben wie man hier sieht. Aber als Notlösung ginge das auch. Nur ich denke mal das dadurch bei stark frequentierten Seiten der Traffic in die höhe schnellt bzw. den ASCII Files die Luft ausgeht.

MfG
 
@Krypthonas:
Dein Code macht eigentlich genau das selbe wie der von Sir Robin... ok, außer dass du zuerst in die Datei schreibst, sie erneut öffnest und dann erst die alten Daten reinschreibst (ist mir unerklärlich, wieso du das machst)... aber wieso sollte sich dadurch der Traffic erhöhen? Und wenn das eine Notlösung ist, wie sieht dann eine Alternativlösung aus?

Wer's Quick&Dirty mag:
// edit: Kleine Abänderung im Code...
PHP:
$datei = "daten.dat";
$neuedaten = "blablubb\n";
$altedaten = join("",file($datei));
fwrite(fopen($datei,"w"),$neuedaten.$altedaten);
Ist aber nicht wirklich zu empfehlen ;) Wollte nur zeigen dass man ein und den selben Effekt mit von der Ausführung her recht unterschiedlichen Codes erreichen kann.

@Brauni: Wird eine Fehlermeldung ausgegeben? Wenn ja, wo und welche?
 
Zuletzt bearbeitet:
Dein Code macht eigentlich genau das selbe wie der von Sir Robin... ok, außer dass du zuerst in die Datei schreibst, sie erneut öffnest und dann erst die alten Daten reinschreibst

Richtig. Deswegen ist es ja eine Notlösung. Wenn man wie in meinen Beispiel immer wieder die Datei öffnet und schliesst usw. usf. entsteht für den Betrachter selbst kein großer Unterschied bei der Geschwindigkeit. Der Traffic wird dadurch trotzdem mehr erhöht als wenn ich die File nur einmal oder 2mal öffne. Der Server hat dann weniger zu tuen.

Und wenn das eine Notlösung ist, wie sieht dann eine Alternativlösung aus?

Hhhmm deine? Naja ich mein die die Robin vorgestellt hat, war kompakter als meine und deswegen ist sie auf jeden Fall besser. Deswegen ist meine in der Hinsicht eine Notlösung und deine auch (haste ja selbst gesagt).

MfG
 
achja ein kleines prob hab ich noch:

ich hab ja jetzt die txt datei und daraus mache ich eine html datei
hab ich auch zusammen gebracht nur es ist immer ein zeilenumbruch bei jeder zeile.
er nimmt die txt nicht 1:1

ps: vielelicht ein bisl kompliziert funzt aber zu 90% *g*

code:
PHP:
//rename
$filename = $picture1;
$ende = strlen($filename);
$anfang = $ende - 3;
$dateiendung = substr($filename, $anfang, $ende);
$dateiname = substr($filename, 0, $anfang);

$dateiendung = "txt";
$fertigername = $dateiname;
$fertigername  .= $dateiendung ;

$mysqlname = $dateiname;
$mysqlname .= "htm";

if(rename("pics/$picture1", "pics/$fertigername"))  
echo "Datei wurde umbenannt";
else  
echo "Datei konnte nicht umbenannt werden";

include(mysqlconnect.php);
$var = "insert into daten (benutzername, datum, nfoname, titel) values ('$benutzername', '$datum', '$mysqlname', '$titel')";
$result = mysql_db_query("nfo", $var);

$num = mysql_affected_rows();
if ($num>0)
{
	header ("Location: index.php");
	printf("OK!!");
}
else
{
	echo "Es ist ein Fehler aufgetreten, ";
}



//von txt zu html
$file="pics/$fertigername";

//alte Dateiinhalte holen
$old_content=implode("",file($file));

//$old_content = nl2br($old_contentt);

//Neue Zeichenkette
$new_string="<html>
<head>
<title>Untitled Document</title>
</head>

<body bgcolor=black text=white>
<table align=center cellspacing=2 cellpadding=2 border=0>
<tr>
    <td>
<pre style='padding:10px;border-width:1px;border-color:black;border-style:solid;background-color:black;color:White;font-family:Terminal,Courier'>
";

//Verbinden der alten und der neuen Zeichenkette
$new_content= $new_string . $old_content;

//Datei schreiben
$dateiendung = "htm";
$htmlname=$dateiname;
$htmlname.=$dateiendung;
$htmlnamee = "pics/";
$htmlnamee .= $htmlname;
printf("<br>");
printf("<br>");
printf($htmlnamee);


$fh=fopen($htmlnamee,'a');




fwrite($fh,$new_content);
fwrite($fh, "</pre>
</td>
</tr>
</table>
</body>
</html>");
fclose($fh);

unlink("$file");
 
Zuletzt bearbeitet:
Ähm Reima? Ich weis nicht ob das normal ist aber ich glaube nicht das das der richtige Ort ist um sinnlose Diskussionen zu führen.

Du kannst ja einen extra Thread auf machen wenn es dir besser passt... ;)
 
Zurück