Hallo, Gast
Du musst dich registrieren bevor du auf unserer Seite Beiträge schreiben kannst.

Benutzername
  

Passwort
  





Durchsuche Foren

(Erweiterte Suche)

Foren-Statistiken
» Mitglieder: 1
» Neuestes Mitglied: Joopi
» Foren-Themen: 529
» Foren-Beiträge: 761

Komplettstatistiken

Benutzer Online
Momentan sind 9 Benutzer online
» 0 Mitglieder
» 4 Gäste
AhrefsBot, Crawl, Owler, Semrush, bot

Aktive Themen
Monday - 15:00 CDT: Not a...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
Vor 55 Minuten
» Antworten: 0
» Ansichten: 0
Monday - 02:00 CDT: Not a...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
Gestern, 10:22
» Antworten: 0
» Ansichten: 3
Sunday - 15:00 CDT: Not a...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
12-10-2025, 11:42
» Antworten: 0
» Ansichten: 12
Sunday - 04:00 CDT: Not a...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
12-10-2025, 01:07
» Antworten: 0
» Ansichten: 18
Saturday - 17:00 CDT: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
12-10-2025, 01:59
» Antworten: 0
» Ansichten: 18
Saturday - 05:00 CDT: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
11-10-2025, 02:46
» Antworten: 0
» Ansichten: 20
Friday - 16:00 CDT: Not a...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
11-10-2025, 01:28
» Antworten: 0
» Ansichten: 20
Friday - 07:00 CDT: Not a...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
10-10-2025, 03:57
» Antworten: 0
» Ansichten: 23
Thursday - 08:00 CDT: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
09-10-2025, 05:09
» Antworten: 0
» Ansichten: 30
Wednesday - 21:00 CDT: No...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
09-10-2025, 05:30
» Antworten: 0
» Ansichten: 31

 
  Zufallszahl nutzen
Geschrieben von: Joopi - 07-01-2023, 11:25 - Forum: Programmieren - Keine Antworten

Heute hatte ich mal wieder eine Sache, bei der ich Dateinamen erstellen musste. Zur Differenzierung konnte ich keine abstrakten Dateinamen erstellen, sondern hatte eine feste Vorgabe. Damit dennoch individuelle Dateinamen erstellt werden konnten, habe ich die Möglichkeit der Zufallszahl genutzt.

Mit folgendem Befehl wird eine Zufallszahl im Bereich von 10000 bis 99999 ermittelt und in eine Variable geschrieben:

PHP-Code:
<?php
    $zufallszahl 
rand(1000099999);
?>

Diese Variable kann dann im weiteren Code verwendet werden.

Drucke diesen Beitrag

  Zeitstempel erstellen
Geschrieben von: Joopi - 07-01-2023, 11:25 - Forum: Programmieren - Keine Antworten

Um in PHP einen Zeitstempel zu erstellen, der im Frontmatter eine MarkDown-Datei in Hugo genutzt werden kann, ist folgende Syntax notwendig:

PHP-Code:
<?php
    
// setlocale(LC_ALL,'de');
    echo strftime('%Y-%m-%dT%H:%M:%S%z');
?>

Der Aufruf dieses sehr kurzes Scripts, erzeugt folgende Ausgabe:

Zitat:2021-10-12T20:37:11+0200

Diese Formatierung wird eben in MarkDown-Dateien benötigt, aus denen später in Hugo statischen HTML-Seiten erstellt werden. Das Datum dient der Sortierung.

Die Vorgabe aus dem Theme bzw. von Hugo ist eigentlich diese Schreibweise:

Zitat:2021-10-12T20:37:11+02:00

Nach einigen Tests und Betrachtung der HTML-Quelltexte kann ich nicht feststellen, dass es Unterschiede in der Verarbeitung gibt.

Drucke diesen Beitrag

  Zeilenumbruch entfernen
Geschrieben von: Joopi - 07-01-2023, 11:23 - Forum: Programmieren - Keine Antworten

Es gibt verschiedene Methoden, um unerwünschte Zeilenumbrüche aus einem Text zu entfernen. Ein für mich sehr gutes Vorgehen ist es, die möglichen Zeilenbrüche in einem Array aufzuführen und damit dann einen Ersetzen-Code zu formulieren:

PHP-Code:
<?php
    $stringtext 
str_replace(array("\r\n","\n","\r"),"",$stringtext);
?>

Die Zeilenumbrüche sind meist unsichtbar, daher kann durchaus alles bekannten Steuerzeichen in das Array aufgenommen werden.

Drucke diesen Beitrag

  vardump() auswerten
Geschrieben von: Joopi - 07-01-2023, 11:22 - Forum: Programmieren - Keine Antworten

Das Debuggen von Programmcode habe ich nie richtig wahrgenommen und gelernt. In VBA kann ich das mittlerweile einsetzen, bei PHP habe ich wieder mal so meine Probleme. Nun weiß ich aber, dass ich mit var_dump() durchaus gute Erkenntnisse erzielen kann, wenn mal wieder etwas nicht funktioniert.

Insbesondere bei der Nutzung von Arrays und deren Inhalte kann ich überprüfen, ob ich die richtigen Ergebnisse erwarten kann.

Bei der Ermittlung der Breite eine Videos, welches über ein Array via GET als Link aufzurufen wurde, hatte ich Probleme, dass Ergebnis der Shell-EXEC in eine Variable zu bekommen. Durch var_dump() erst habe ich geschnallt, dass ich es mit einem Array zu tun hatte.

Und zwar habe ich den Inhalt von $_GET mittels var_dump() ausgewertet:

PHP-Code:
<?php
    var_dump
($_GET);
?>

Das Ergebnis war:

PHP-Code:
<?php
    
array(1) { ["video"]=> string(72"/TM2_1/serien/wilsberg/wilsberg_24_interne_affaeren_2008-zp7ayygia5q.mp4" }
?>

Damit war klar, dass ich ein Array als Ergebnis erhalten hatte. Wie aber nun das Ergebnis für meine Zwecke nutzen. Der komplette String aus Ordner und Dateiname sollte in dem Shell-EXEC-Statement als Variable genutzt werden, um die Breite zu ermitteln.

Eher durch Zufall wurde mir klar, dass in dem Array nur ein Element enthalten war - nämlich video.

Und wie ich gesehen konnte, wurde video in dem Tag für den HTML-Player als Variable für den source-Tag genutzt:

PHP-Code:
<?php
    
<source src=<?php echo $video?> type="video/mp4">
?>

Und damit war dann klar, dass ich für den absouten Dateinamen nun eine Variable $video würde nutzen können:

PHP-Code:
<?php
    $breite 
shell_exec("ffprobe -v error -select_streams v:0 -show_entries stream=width -of csv=s=x:p=0 " $video);
?>

Der Inhalt der Variablen $video war in diesem Falle:

PHP-Code:
<?php
    
/TM2_1/serien/wilsberg/wilsberg_24_interne_affaeren_2008-zp7ayygia5q.mp4
?>

Damit konnte ich die Breite nun in den HTML-Tag für den Player bei width einsetzen.

Der in den eckigen Klammern eines Arrays stehende Wert, ist die zu nutzenden Variable für die weitere Verwendung im Programmcode.

Drucke diesen Beitrag

  Datenbanken sichern
Geschrieben von: Joopi - 07-01-2023, 11:16 - Forum: Programmieren - Keine Antworten

Die Sicherung von Datenbank, MyIsam und/oder InnoDB, ist wichtig. MyIsam-Datenbanken können über deren Dateien gesichert werden, die (unter Debian) in /var/lib/mysql abgelegt werden. Das gilt nicht für InnoDB-Datenbanken.

Darum ist es sehr wichtig, dass von den Datenbanken sogannte Dumps gemacht werden. Dumps sind im Prinzip Sicherungen als Textdatei im sql-Format. Diese können bei Bedarf genauso wieder eingelesen werden.

Es gibt verschiedene Möglichkeiten der Sicherungsstrategie. Man kann einen Gesamtdump machen oder vielleicht eine Gruppe von Datenbanken zusammenfassen oder eben nur einzelne Datenbanken sichern. Die Befehle dazu, die über die Konsole abgesetzt oder in einem Script hinterlegt werden, sind nachfolgend beschrieben.

Sicherung einer einzelnen Datenbank mit Mitgabe des Passwortes:

Code:
user@rechner:~$ mysqldump -u user -h localhost --password="pwd" datenbank > one_database.sql

Sicherung mehrerer Datenbanken mit Mitgabe des Passwortes:

Code:
user@rechner:~$ mysqldump -u user -h localhost --password="pwd" --databases datenbank1 datenbank2 datenbank3 > several_databases.sql

Sicherung aller Datenbanken mit Mitgabe des Passwortes:

Code:
user@rechner:~$ mysqldump -u user -h localhost --password="pwd" --all-databases --events > all_databases.sql

Ich lasse jeden Abend über einen Cronjob von jeder Datenbank einen Dump erstellen, der dann als ZIP-Datei auf die Backup-Festplatte mit Datumsangabe im Dateinamen verschoben wird. Eine Sicherung in meiner Cloud werde ich mir noch überlegen, da ich auch eine Methode finden muss, wie ich ältere Sicherungen automatisiert löschen kann. Ansonsten mülle ich mir nach und nach die Cloud mit unnötigen Dateien voll.

Drucke diesen Beitrag

  Shellscript aufrufen
Geschrieben von: Joopi - 07-01-2023, 11:13 - Forum: Programmieren - Keine Antworten

Innerhalb eines PHP-Codes kann ein ausführbares Shellscript ausgeführt werden. Das geht mit shell_exec.

PHP-Code:
<?php
    $user 
shell_exec("id");
    echo "$user";
    $berechtigung shell_exec("ls -l mache_irgendwas.script");
    //funktioniert nur so (ohne ls -l):
    $berechtigung shell_exec("mache_irgendwas.script");
    echo "$berechtigung";
?>

In einem Shellscript habe ich Funktionen eingebaut, die Bilder renamen und resizen. Zwar bestehen diese Möglichkeiten auch innerhalb von PHP, aber ich benötige das Shellscript auch zu anderen Gelegenheiten. Daher wollte ich das Rad nicht neu erfinden.

Es mag sein, dass der geneigte PHP-Coder kurz vor einem Herzklabaster steht. Ich nutze das aber ausschließlich auf dem lokalen Rechner. Mir genügt es so und ich bin froh zu wissen, dass man überhaupt Shellscripte im PHP-Code integrieren kann.

Drucke diesen Beitrag

  Primäre Angaben zu Pfad und Datei
Geschrieben von: Joopi - 07-01-2023, 11:12 - Forum: Programmieren - Keine Antworten

Um Informationen zu einem Pfad und/oder einer Datei zu erhalten, wird in PHP die Funktion PATHINFO benutzt. In meinen Lernbeispielen habe ich bislang zwei verschiedene Arten der Anwendung gefunden. Die eine erzeugt ein Array, die andere nutzt eine Variable, die einen String auf nimmt und dann ein Array daraus macht. Oder so ähnlich. Besser kann ich es nicht erklären.

Das erste Beispiel erzeugt ein Array mit 4 Elementen:

PHP-Code:
<?php
    $dateiteile 
pathinfo("/media/work_bilder_decode/zz_temp/105b34dd5.jpg");

    echo "Das ist der erste Teil der Ausgabe:\n\n";

    echo "Pfad ohne Datei: " $dateiteile['dirname'], "\n";
    echo "Dateiname komplett: " $dateiteile['basename'], "\n";
    echo "Extension: " $dateiteile['extension'], "\n";
    echo "Dateiname ohne Extension: " $dateiteile['filename'], "\n";
?>

Die Ausgabe hier ist:

Zitat:Das ist der erste Teil der Ausgabe: 
  
Pfad ohne Datei: /media/work_bilder_decode/zz_temp 
Dateiname komplett: 105b34dd5.jpg 
Extension: jpg 
Dateiname ohne Extension: 105b34dd5

Das zweite Beispiel nimmt die Pfad-/Dateiangabe in eine String-Variable auf und wird erst später bei der Übernahme der 4 Bestandteile mit der **PATHINFO**-Funktion bestückt. Der Code sieht dann wie folgt aus:

PHP-Code:
<?php
    $dateiteile2 
"/media/work_bilder_decode/zz_temp/105b34dd5.jpg";

    $dir pathinfo($dateiteile2PATHINFO_DIRNAME);
    $base pathinfo($dateiteile2PATHINFO_BASENAME);
    $ext pathinfo($dateiteile2PATHINFO_EXTENSION);
    $datei pathinfo($dateiteile2PATHINFO_FILENAME);

    echo "Das ist der zweite Teil der Ausgabe:\n\n";

    echo "Pfad ohne Datei: " $dir .  "\n";
    echo "Dateiname komplett: " $base .  "\n";
    echo "Extension: " $ext .  "\n";
    echo "Dateiname ohne Extension: " $datei .  "\n";
?>

Die Ausgabe zu dieser Codierung sieht dann so aus (nicht anders als oben).

Zitat:Das ist der zweite Teil der Ausgabe: 
  
Pfad ohne Datei: /media/work_bilder_decode/zz_temp 
Dateiname komplett: 105b34dd5.jpg 
Extension: jpg 
Dateiname ohne Extension: 105b34dd5

Welche Art der Codierung später mal genutzt werden soll oder muss, hängt wohl davon ab, was man eigentlich erreichen möchte. Da beides zum gleichen Ergebnis führt, ist es vielleicht egal. Das wird sich später mal herausstellen müssen.

Im Moment bin ich froh, dass ich das endlich verstanden habe und nun auch anwenden kann. In Verbindung mit Dateilisten, die mittels Array bearbeitet werden, könnte diese neue Erkenntnis für meine Programmiervorhaben sehr von Vorteil sein.

Die einfache Anwendung von Arrays habe ich mitterweile auch einigermaßen gut verstanden.

Drucke diesen Beitrag

  mehrere Dateien löschen
Geschrieben von: Joopi - 07-01-2023, 11:09 - Forum: Programmieren - Keine Antworten

Das Löschen von Dateien in der Konsole kann relativ einfach mit rm erfolgen. Dieser Befehl steht für remove.

Will man mehrere Dateien löschen, die z.B. alle die Extension txt haben, so ist der Befehl rm *.txt anwendbar.

In einem PHP-Skript ist der Befehl unlink zum Löschen einer Datei aufzurufen. Allerdings kann man nicht, wie es in der Konsole möglich ist, einfach mehrere Dateien löschen, indem man so vorgeht wie beim Shellbefehl.

Um in einem Ordner mehrere Dateien zu löschen, die z.B. alle die Extension .md haben, ist folgende Codezeile im Skript notwendig:

PHP-Code:
<?php
    array_map
('unlink'glob"/home/tuennes/*.md"));
?>

Damit werden alle Dateien in dem vorgegebenen Ordner gelöscht, die die Extension .md haben.

Zitat:glob — Findet Dateinamen, die mit einem Muster übereinstimmen

Drucke diesen Beitrag

  Formularfeld trimmen
Geschrieben von: Joopi - 07-01-2023, 11:06 - Forum: Programmieren - Keine Antworten

Dann und wann schleichen sich beim Eingeben von Werten gerne mal Leerzeichen am Beginn oder Ende ein. Besonders dann, wenn man diese Werte aus anderen Texten oder Webseiten kopiert und in die Zwischenablage eingügt. Die Leerzeichen werden dann mit in die Datenbank geschrieben und führen oftmals dazu, dass später diese Werte bei Suchabfragen nicht im Ergebnis auftauchen.

Hier hilft die Funktion trim.

PHP-Code:
<?php
    trim
($_REQUEST['n_ipdec_von']);
?>

PHP-Code:
<?php
    $n_ipdec_von 
trim($_REQUEST["n_ipdec_von"]);
?>

Analog zur Prüfung, ob ein Formularfeld überhaupt gefüllt ist, ist das Trimmen m.E. eine unverzichtbare Maßnahme, um eben keine falschen Werte in die Tabellen zu erfassen.

Drucke diesen Beitrag

  Error-Reporting
Geschrieben von: Joopi - 07-01-2023, 11:03 - Forum: Programmieren - Keine Antworten

Wenn man ein PHP-Skript erstellt, dann kommt es unweigerlich zu Problemen, weil der Programmcode nicht korrekt ist. Nach meinem Verständnis gibt es drei Kategorien von Meldungen, die PHP ausgibt:

  • PHP Notice
  • PHP Warning
  • PHP Error

Während der Entwicklungsphase macht es Sinn, die Meldung ausgeben zu lassen, um schnell auf Fehler im Programmcode oder -logik reagieren zu können.

Aber auch während der Entwicklungsphase kann es sinnvoll sein, das Error-Reporting einzuschränken oder gar zu unterbinden. Das muss dann jeder Programmierer mit sich selber ausmachen.

Es gibt nun mehrere Möglichkeiten, die ich nutzen könnte. Will ich z.B. zu einer Codezeile verhindern, dass eine PHP-Meldung ausgegeben wird, so kann dies über das **@**-Zeichen gesteuert werden.

PHP-Code:
<?php
    $parts 
= @$structure->parts;
?>

Mit dem @-Zeichen wird die Ausgabe einer möglichen Meldung verhindert, sollte z.B. in der Struktur gar kein Element *parts* enthalten und für den kompletten Programmablauf nicht hinderlich sein.

Um im gesamten Programm wirklich alle Fehlermeldungen zu unterbinden, sollte in der ersten Zeile des PHP-Skripts folgendes stehen:

PHP-Code:
<?php
    error_reporting
(0);
?>

Das ist natürlich nicht gut, denn sollte es Fehler geben, die sich wirklich, und vor allem negativ, auf den Programmablauf auswirken, ist man mit

PHP-Code:
<?php
    error_reporting
(E_ALL & ~E_NOTICE);
?>

besser bedient.

Wie gesagt, in der Entwicklung eines PHP-Skripts sind Meldungen wichtig für den Programmierer. Sobald das Tool fertig und produktiv gehen kann, sollten auf jeden Fall die Meldungen unterbunden werden. Was geht es dem gemeinen Internet-User an, welche Meldungen ein Skript aus welchen Gründen auch immer verursacht.

Drucke diesen Beitrag