Editieren von Einträgen #2

Nucleus

Erfahrenes Mitglied
Hi Leute,
Also ich habe ne Textdatei und editiere die Einträge, was auch super funktioniert nur mein Problem ist das er nach dem editieren Absätze macht und ich nicht weiß wie ich sie löschen kann. Habs chon mit str_replace versucht geht auch nicht.
Kann mir jemand helfen BITTE

PHP:
$eintragnr = 5;
$nr = 5;

//Kann man durch Textfelder ändern
$neu1 = "Seas";
$neu2 = "Leute";
$neu3 = "100";

$neu = "$neu1#$neu2#$neu3#";
//ende
echo "$newtext";
$array = file("daten.txt");
$anzahl = count($array);

$eintrag = explode("#",$array[$eintragnr]);
for ($i = 0;$i<$anzahl;$i++){
echo "$i";
if ($nr == $i){
$eintrag = explode("#",$array[$i]);
$old = "$eintrag[0]#$eintrag[1]#$eintrag[2]#";
$newtext = $array;

echo "$old";
$newtext[$i] = str_replace("$old","$neu",$newtext[$i]);




  $fp=fopen("daten.txt","w+");
  $neu=implode("",$newtext);
  fwrite($fp,"$neu");
  fclose($fp);
  echo "<center>Änderung gespeichert!<br><br>
  <a href=\"use.php\">Zurück</a>";
}
}

Textdatei vorher:

addad#asdasda#dasdas#
adasdasdasd#asdasdasdas#asdasdas#
adasd#dafggf#gdfgg#
Seas#Leute#100#
dfgd#gfd#fdg#
Seas#Leute#100#

Textdatei nacher :

addad#asdasda#dasdas#


adasdasdasd#asdasdasdas#asdasdas#


adasd#dafggf#gdfgg#


Seas#Leute#100#


dfgd#gfd#fdg#


Seas#Leute#100#
 
bin mir nicht sicher, aber probier doch mal folgendes:

- nimm mal fputs() anstatt fwrite()
- gib mal die Länge des Strings mit an (dann werden eventuelle "\n" nicht mitgeschrieben)


Dunsti
 
Editieren ohne Absatz

Hallo,

ich habe mir ein paar Gedanken gemacht.

Der Ausgangspunkt ist der gleiche, jedoch lese
ich aus der daten.txt zeilenweise aus und schreibe
auch zeilenweise in eine datenNeu.txt.

Die Originaldaten werden vor den Überschreiben in
die datenSav.txt überführt, die bei jedem runn
erneuert wird.

Die Variable $nr bezeichnet die Zeile gezählt ab 0.

Hoffentlich hilft es

gruss
Peter

PHP
____________________________________________________________________



// Diese Variable wurde von mir nicht benutzt
$eintragnr = 2;

// bezeichnet die zu ändernde Zeile
// wenn hier > Gesamtzeilen,
// dann wird keine neue Veränderung vorgenommen
$nr = 3;
// Originaldatei
$arrDatei="daten.txt";
// Save der Originaldatei vor Überschreiben
$arrDateiSav="datenSav.txt";
// Datei zur Zwischenlagerung
$arrDateiNeu="datenNeu.txt";

// Eingeben der zu ändernden Daten
//Kann man durch Textfelder ändern
$neu1 = "Seas";
$neu2 = "Leute";
$neu3 = "100";

$neu = "$neu1#$neu2#$neu3#\n";


// überprüfen ob Datei existiert
if (file_exists($arrDatei))
{
// Auslesen der Daten aus externer Datei: eindim. Array
$auslesen=file($arrDatei);
// Umwandeln der Daten in mehrdim. Array
for ($i=0;$i<sizeof($auslesen);$i++)
{
$artNummer[$i]= explode("#",$auslesen[$i]);
} // Ende for Schleife
} // Ende if Schleife




// kontrollAusgabe des Array aus Originaldatei
for ($i=0;$i<sizeof($artNummer);$i++)
{
echo "Array Nr: [".$i."]==> Array: ";
while (list ($index,$inhalt)= each ($artNummer[$i]))
{
echo "[".$index."]=>".$inhalt." ";
}
echo "<br>";
} // Ende for

// Öffnen der Betreffenden Dateien
// zum Auslesen der benötigten Daten
$fp=fopen($arrDatei,"r");
// zum Schreiben der geänderten Daten
$fp2=fopen($arrDateiNeu,"w+");
$nl = chr(13) . chr(10);


// durchsuchen der Datei, bis Ende erreicht
while (! feof($fp) )
{
// Zeilenweises auslesen der Zeilen
$zeile = fgets($fp,4096);
// $nr Zeile erreicht Inhalt wird mit
// $neu geändert
if ($z==$nr)
{
fputs($fp2,$neu);
echo "<p>Das Array Nr: <b>".$nr."</b> wird ersetzt durch: <b>".$neu."</b><p>";
} // Ende if
// Andere Zeilen werden unverändert zurückgeschrieben
else
{
fputs($fp2,$zeile);
} // ende else
// ZeilenZähler wird inkrementiert
$z++;
} // Ende while
// Originaldatei schliessen
fclose($fp);
// Neue Datei schliessen
fclose($fp2);
// Sav Datei wird gelöscht
unlink ($arrDateiSav);
// Originaldatei wird umbenannt
rename ($arrDatei,$arrDateiSav);
// Neue Datei erhält Namen von Originaldatei
copy ($arrDateiNeu,$arrDatei);



// Kontroll-Ausgabe der geänderten Daten aus datenNeu.txt
// überprüfen ob Datei existiert
if (file_exists($arrDateiNeu))
{
// Auslesen der Daten aus externer Datei: eindim. Array
$auslesenNeu=file($arrDateiNeu);
// Umwandeln der Daten in mehrdim. Array
for ($i=0;$i<sizeof($auslesenNeu);$i++)
{
$artNummerNeu[$i]= explode("#",$auslesenNeu[$i]);
} // Ende for Schleife
} // Ende if Schleife


// Ausgabe des Array aus Neu
for ($i=0;$i<sizeof($artNummerNeu);$i++)
{
echo "Array Nr: [".$i."]==> Array: ";
while (list ($index,$inhalt)= each ($artNummerNeu[$i]))
{
echo "[".$index."]=>".$inhalt." ";
}
echo "<br>";
}
_____________________________________________________________________

ende Schnipsel
 
@snail & @Dunsti -> Danke für eure Hilfe funkt aber nicht.ABER DANKE AUF JEDENFALL.

@petermedien -> gute überlegung und es funkt auch :) Danke für die Hilfe. Hab noch ne Frage : Kann ich das in meinem Tutorial posten.Aber Danke für deine Hilfe!!

Frage an alle:
Wie lange Programmiert ihr schon ? Machts ihr das beruflich oder zum Spass ?
 
In tutorial posten

Hallo nucleos,

klar kannst Du das bei Dir auch Posten, wenn Du willst.

Kannst dann ja meine eMail petermedien@gmx.net anhängen,
falls noch Fragen oder Anregungen kommen.

Mit PHP bin ich jetzt seit etwa einem Monat intensiv am
schreiben, im Rahmen meiner Ausbildung zum
Multi-Media-Programmierer

Angefangen habe ich erst mit HTML, CSS und JavaScript
und mit ActionScript in Flash.
Vorher habe ich schon ein bisschen was in C++ und Perl gemacht.

Also bis dann

Gruss Peter
 
Anmerkung zu Schnipsel

Habe ich vergessen zu erwähnen:

in meinem Obigen Code kannst Du natürlich auch die
$neu1 bis 3 variabel aus Textfeldern belegen, die mit
z.b. $HTTP_POST_VARS[Name] übertragen werden.

Die $nr ersetzt eine Zeile, wenn die Zeilennummer
gezählt ab 0 kleiner gleich der Gesamtzeilen aus daten.txt
ist. Ist sie Gesamtzeilen+1 so wird eine neue Zeile angehängt.

zu Deiner $neu noch eine Anmerkung:
$neu = "$neu1#$neu2#$neu3#";

wenn Du die Eingabefelder als
name="neu[]" multible
bezeichnest kannst Du das ganze variabel halten,
auch in bezug der zu speichernden Daten.

die Variable $neu würde dann so zusammengesetzt:

for ($i=0,$i<sizeof($HTTP_POST_VARS[neu],$i++))
{
$neu= "$neu#$HTTP_POST_VARS[neu[$i]]"
}
$neu = "$neu\n"; // für neue Zeile

Somit müsste die Länge der $neu Variablen durch die
Anzahl der Eingabefelder automatisch bestimmt werden.
(war so ein Blitzgedanke von mir, hoffentlich futzt das)

könnte auch sein, dass das ankommende Array erst umgespeichert
werden muss:

$neueDaten=$HTTP_POST_VARS[neu];
for ($i=0,$i<sizeof($neueDaten),$i++))
{
$neu= "$neu#$neueDaten[$i]"
}
$neu = "$neu\n";
bin mir aber nicht so ganz sicher.


Ansonsten lasse in der ursprünglichen Form

$neu = "$neu1#$neu2#$neu3#";

das letzte # weg, da sonst ein leeres Array erzeugt wird.
Zudem müsste noch ein \n dran, als Neue Zeile.

$neu = "$neu1#$neu2#$neu3\n";

so würde ich sagen sieht es im jetzigen Script besser aus

Gruss
Peter
 
ich fang auch jetzt an zu studieren und zwar Informatik an der Bak.
Aber ich weiß noch nicht welchen Zweig ich nehmen soll. Entweder Medieninformatik oder Software & Engineering.Auf jedenfall will ich mit Datenbanken und Internet zu tun haben.(Vor allem Php)
Will auch einige projekte machen: 2 habe ich schon selber geschrieben ein Gästebuch auf Textbasis und eine Shoutbox(alles selber geschrieben).Würde gerne noch mehr schreiben *gg*. Aber alleine ist das immer sehr viel arbeit.

Danke für deine Hilfe muss mir den Code mal anschauen.

Hier der Link zum Tutorial :

Link

Is ja klar das ich dich auch erwähne.
Hoffe das passt so. Wenn dir noch etwas einfällt zum Txt Tutorial dann werde ich es dazuposten.

mfg nucle
 
Alles klar,

ich werde auf jeden fall, wenn ich was interessantes
habe an Dich denken.

Hast Du schon mal in CURL reingeschaut, oder
hast Du interesse an der neuen Sprache??

Ich habe im Programming, sonstiges angefangen im
forum darüber etwas zu sammeln, schau doch mal rein.

bis dann

Gruss
Peter
 
Ja gehört habe ich schon einmal was von Curl - Interesse hab ich schon. Hast du einige Links damit ich mal mehr informationen hab.
Wie leistungsstark ist eigentlich Curl ? Sowie Php oder beser ?

Hast lust mal etwas gemeinsam zu Proggen? Is nur ne Frage. *gg*

mfg Nucle
 
Zurück