Archiv verlassen und diese Seite im Standarddesign anzeigen : datei auslesen und bearbeiten....
jimipil
28.04.2002, 15:15:13
hi, hab ne anfänger frage ;)
ich hab auf dem server eine textdatei liegen...
die so aussieht
----
<?%HD 1024 plus#1,324#1994#April 27th 2002#1A Gerät, zu empfehlen...
%HDS 895 S#1800,--#1999#April 27th 2002#echt fertig dia schissl
%BR Vario#600,--#1997#04/27/2002#....nice :)
%hds 890#1300,--#1980#04/28/2002#uighd
---
jetzt möchte ich machen, dass ich immer die einzelnen zeilen löschen kann per php script....aber wie? das mit dem schreiben kireg ich durch tutorials hin....aber das mit dem löschen der einzelnen zeilen....
kann mir wer ein kompletes beispiel zeigen, weil ich bin php newbie...
thx
<?php
$inhalt = file('textdatei.txt');
$fp = fopen('textdatei.txt','w');
flock($fp,2);
while (list($inhalt_key,$inhalt_val) = each($inhalt)) {
if (!isset($HTTP_POST_VARS['delete'.$inhalt_key])) {
fwrite($fp,$inhalt_val."n");
}
}
flock($fp,3);
fclose($fp);
?>
Erläuterung:
In der ersten Anweisung wird deine Textdatei in ein Array eingelesen. Jedes Element des Arrays entspricht dabei einer Zeile.
In der While-Schleife wird das Array dann von 0 bis "zum Schluss" aufgelistet - 0 ist also die erste Zeile der Textdatei, 1 die Zweite usw.
Während die Schleife läuft, prüft PHP, ob 'delete"Nummer der Zeile"' per Post übermittelt wurde. Wenn nicht, dann wird die aktuelle Zeile in die Datei geschrieben - falls ja, wird nichts geschrieben (also wird die Zeile praktisch gelöscht).
Du brauchst dann natürlich noch ein Formular, dass dir die Zeilen der Textdatei und die dazugehörigen "delete's+Zeilennummer" auflistet.
jimipil
28.04.2002, 16:45:42
hmm irgendwie bringt er bei mir ein fehler Parse error: parse error in /home/www/philipp/.jimipil/eintrag/test.php on line 7
wenn ich das script ausführe....kannst du mir das bitte genauer erklären, weil das ist mein erstes php projekt ;)....
also so hab ich das gemacht neues file... test.php mit dem inhalt
---
<?php
$inhalt = file('data.dat');
$fp = fopen('data.dat','w');
flock($fp,2);
while (list($inhalt_key,$inhalt_val) = each($inhalt)) {
if (!isset($HTTP_POST_VARS['delete'.$inhalt_key])) {
fwrite($fp,$inhalt_val."
");
}
}
flock($fp,3);
fclose($fp);
?>
-----------
mach ich was falsch? und wie wäre das noch mit dem deleten ich versteh die sprache net ganz...sorry plz help
Ich bekomme keinen Parse Error... (hab deinen Post einfach kopiert).
Welche PHP-Version hast du?
jimipil
28.04.2002, 16:51:53
hier: http://www.mynet.at/philipp/.jimipil/eintrag/test.php
weiss es nicht
Erfährst du durch
<?php
phpinfo();
?>
jimipil
28.04.2002, 16:55:15
PHP Version 4.0.6
Hab's grad ausprobiert auf 4.0.6 - läuft ohne Parse Error ab.
Du hast wahrscheinlich dieses "& #123;"-Zeichen mitkopiert, oder?
Das ist ein Bug hier im Forum und soll eigentlich eine "{"-Klammer sein.
jimipil
28.04.2002, 17:04:07
jetzt gehts, ich sagte ja ich bin ein voller newbie ;)
aber kannste mir noch kurz erläutern wie des jetzt mit dem deleten geht? bitte
ich kenn mich mit der php fachsprache net....aus
danke im vorraus!
<?php
#Datenverarbeitung
if (isset($HTTP_POST_VARS['delete'])) {
$inhalt = file('textdatei.txt');
$fp = fopen('textdatei.txt','w');
flock($fp,2);
while (list($inhalt_key,$inhalt_val) = each($inhalt)) {
if (!isset($HTTP_POST_VARS['delete'.$inhalt_key])) {
fwrite($fp,$inhalt_val);
}
}
flock($fp,3);
fclose($fp);
}
#ENDE: Datenverarbeitung
#Datenausgabe
$inhalt = file('textdatei.txt');
echo '<form method="post" action="'.$HTTP_SERVER_VARS['PHP_SELF'].'">';
while (list($inhalt_key,$inhalt_val) = each($inhalt)) {
echo $inhalt_val.'<input type="checkbox" name="delete'.$inhalt_key.'"><br>';
}
echo '<input type="submit" name="delete"></form>';
#ENDE: Datenausgabe
?>
So, hier ein ganz einfaches Skript, dass dir den Inhalt der Datei "textdatei.txt" zeilenweise ausgibt und die dazugehörigen Checkboxen erzeugt.
Beim klick auf den Submit-Button werden dann die Zeilen gelöscht, die du angekreuzt hast.
In der Zeile mit "fwrite($fp,$inhalt_val);" hab ich das "
" weggelassen, mir ist nämlich aufgefallen, dass die file-Funktion die Zeilenumbrüche mitkopiert.
So, ich hoffe, damit ist alles klar :)
jimipil
28.04.2002, 17:31:23
aber noch ne frage, kann man das auch so machen dass er nur soviele kästchen macht wie in der datei zeilen sind?
muss net sein aber wäre nocht genialer :D
danke, danke dago
achja noch was hab grad bemerkt dass er die erste zeile in der txt nicht anzeigt!
nämlich diese
---
<?%HD 1024 plus#1,324#1994#April 27th 2002#1A Gerät, zu empfehlen...
---
Plz help...thx
Normalerweise tut er das auch, es sei denn, die Datei beinhaltet Leerzeilen oder Absätze.
Wenn dem so ist, kannst du die anzeige von weiteren Checkboxen durch eine If-Abfrage verhindern:
if (strlen($inhalt_val) > 2)
muss dann vor der echo-Ausgabe in der while-Schleife stehen.
achja noch was hab grad bemerkt dass er die erste zeile in der txt nicht anzeigt!
nämlich diese
---
<?%HD 1024 plus#1,324#1994#April 27th 2002#1A Gerät, zu empfehlen...
---
Plz help...thx
Hm... das liegt an dem "<?"... Weiß jetzt aber auch nicht, wie man das umgehen könnte.
Achso... Wenn du dir mal den Quelltext anschaust, wirst du bemerken, dass er die Zeile ausgibt, nur dass sie im Browser nicht angezeigt wird...
Tausch mal "$inhalt_val" durch "htmlentities($inhalt_val)" aus ;)
jimipil
28.04.2002, 18:16:30
aber das mit dem ersten eintrag...hmm kann man da vielleicht was an der eintragung verändern?
soll ichs mal posten? das eintragungs verfahren?
thx dago hast mir sehr viel geholfen! ;)
Geht es mit htmlentites etwa auch nicht?
jimipil
28.04.2002, 18:30:17
wo genau htmlentities($inhalt_val) hinkopieren....weil der befehl steht öfters drinnen, habs probeirt ueberall hinzukopieren aber dann wurde mir kein eintrag mehr angezeigt....plz help ;)
In der letzten While-Schleife ;)
jimipil
28.04.2002, 19:06:07
yeah, thx jetzt bin ich gluecklich ^^
danke...
vBulletin® v3.8.3, Copyright ©2000-2013, Jelsoft Enterprises Ltd.