InternInhaltsverzeichnisGlossarBausteineLinklisteTutorialsKommentare

Thema: Mit PHP schreiben und lesen Artikel anzeigen

Alberto ✶✶✶✶✶ schrieb am Mittwoch, den 24 Februar 2021 #1
Danke für die guten Snippets, hat mir sehr weitergeholfen.
Cyril ✶✶✶✶✶ schrieb am Donnerstag, den 15 April 2021 #2
Ich versuche aus einer Datei die letzte Zeile auszugeben, funktioniert aber nicht. Was mach ich da falsch?

<?php

$daten = file("logs/log_April_21.txt");
// Letzte Zeile ausgeben
echo $daten[-1];

?>
Werner schrieb am Freitag, den 16 April 2021 #3
Da muss zuerst ermittelt werden, wie groß, das Array ist mit: count($daten).
Der Index im Array fängt dann schon bei 0 an, deswegen wird: von $anzahl eine Index-Zahl abgezogen
$anzahl -1.

$daten[0]
$daten[1]
$daten[2]
$daten[3]
usw.

Hier die Lösung:

1
2
3
4
5
6
7
<?php
$daten 
file("test.csv");
$anzahl count($daten);

// Letzte Zeile ausgeben
echo $daten[($anzahl -1)];
?>
Gast ✶✶✶✶ schrieb am Dienstag, den 31 August 2021 #4
Hallo Werner!
Alles schön und gut,lesen und schreiben mit PHP
funktioniert sehr gut.Ich habe selber ein php Skript
programmiert,das selbst die Formulareinträge überprüft
und auf der Textdatei vergleicht,bei übereinstimmung gibt
Daten aus.Wenn ich aber Fehler ausgeben will,wenn die
Daten nicht existieren,gibt den Fehler von der Fehlerseite
oft in mehreren Zeilen aus. Ich habe alles mögliche versucht
den Fehler einmal auszugeben,hat nicht funktioniert.Außer
Die Fehlermeldung oft wiederholt.

Grüße

Gast
Werner schrieb am Mittwoch, den 1 September 2021 #5
Hallo Gast,
ohne dass du mir den Quelltext zeigst, kann ich da leider nicht helfen!
Clemens schrieb am Freitag, den 24 September 2021 #6
Hallo Herr Zenk,
ich habe das Beispiel oben auf der Seite in eine Datei datei.php gepackt. Das Ausführen
mit php datei.php funktioniert. Dann habe ich eine kleine Datei datei.html

<form action="datei.php">
<input type="submit" value="ausführen" />
</form>

erstellt und versucht, die datei.php aus dem Browser heraus auszuführen, was aber
mißlang. Ist das grundsätzlich nicht möglich, oder habe ich etwas vergessen ?
Werner schrieb am Samstag, den 25 September 2021 #7
Mit:
<form action="datei.php">
<input type="submit" value="ausführen" />
</form>
wird nur die Datei aufgerufen, egal ob das eine HTML oder PHP-Datei ist.
Das ist genauso, wie wenn ein Link zu einer anderen Seite aufgerufen wird.

Das obere (erste) Beispiel funktioniert allerdings nur einmal, wenn die Datei "test.txt" erstellt wurde, dann wird diese beim zweiten Aufrufen nicht noch einmal erstellt.
Clemens schrieb am Montag, den 27 September 2021 #8
Hallo Herr Zenk,
ich denke, ich habe eine Lösung gefunden, die aber nur bedingt mit PHP zu tun hat.
In Ubuntu kann man eine Datei test.txt nur im Ordner /tmp erstellen, es hat also mit
den Rechten zu tun. Aber ich hätte noch ein anderes Problem, von dem ich nicht weiß,
ob PHP dafür ausgelegt ist. Die Datei

<?php
echo "Hallo Welt";
?>

schreibt "Hallo Welt", egal ob ich sie im Terminal oder im Browser ausführe.

Die Datei

<?php
shell_exec("/usr/bin/leafpad");
?>

öffnet den Texteditor Leafpad nur im Terminal. Gibt es eine Anweisung, die Leafpad
(oder eine andere Anwendung) aus dem Browser heraus öffnet ?
Werner schrieb am Montag, den 27 September 2021 #9
Mit der Entwicklungsumgebung XAMPP (auch für Linux - apachefriends.org/de/index.html) kann man mit PHP Dateien erzeugen, die im Pfad des lokalen Webservers liegen.
Thomas schrieb am Mittwoch, den 29 Dezember 2021 #10
Guten Morgen Herr Zenk!

Ich habe da ein Problem, vielleicht haben Sie einen rat für mich:

Ich habe eine Textdatei(beispiel.txt) die folgendes beiinhaltet:

Storniert:
Kunde:
eMail:
Telefon:
Bestelldatum:
Tag:
Artikelnummer:
Preis:
Größe:
Länge:
Höhe:
Grund:

Die Datei lese ich aus und schneide Zeilen von - bis aus um sie in einer seperaten Datei zu speichern. Das klappt mit diesem Code auch ganz gut:

<?php
$text = file_get_contents("Beispiel.txt");
preg_match("/^Tag:(.*?)^Höhe:(.*?)$/msu", $text, $matches);
#echo nl2br($matches[0]); //Nur für Testzwecke
file_put_contents("Auswertung.txt", $matches[0]);
?>

Nun kann es aber sein, dass in dieser Textdatei zusätzlich noch die Werte "Storniert:" und "Grund:" als Zeilenanfang drinstehen. Ich möchte also Überprüfen, ob "Storniert" vorhanden ist und dann die Zeilen von Storniert bis Grund ausgeben, ansonsten die Zeilen Tag bis Höhe! Folgendes habe ich probiert:

<?php
$text = file_get_contents("Beispiel.txt");
$suchwort = "Storniert:";
$position = strpos($text, $suchwort);
if($position !==FALSE) {
preg_match("/^Storniert:(.*?)^Grund:(.*?)$/msu", $text, $matches); }
else {
preg_match("/^Tag:(.*?)^Höhe:(.*?)$/msu", $text, $matches);
}
echo nl2br($matches[0]);
file_put_contents("Auswertung.txt", $matches[0]);
?>

Wenn die Werte "Storniert" und "Grund" drin stehen, gibt er mir das aus und speichert es auch. Stehen die Werte nicht drin, dann wird die else-Anweisung nicht ausgeführt sondern ein "Warning: Undefined array key 0..." ausgegeben?!

Was mache ich denn da falsch?
Können Sie mir einen Rat geben?

Mit freundlichen grüßen

Thomas