Zeiterfassung
Mit Vanilla PHP und Legacy Code die SQLite Datenbank befragt und die sagt:
Datum | Start | Ende | Pause | Zeit |
---|---|---|---|---|
23.10 | 08:00 | 17:00 | 60 | 8.0 |
24.10 | 08:00 | 17:00 | 60 | 8.0 |
25.10 | 08:00 | 17:00 | 60 | 8.0 |
26.10 | 08:00 | 17:00 | 60 | 8.0 |
27.10 | 08:00 | 17:00 | 60 | 8.0 |
Insgesamt: 40.0 Stunden. |
Ternären Operator
Im Backend lese ich mir mit meinem PHP CRUD Script alle Artikel aus der Datenbank ein und gebe diese in einer Tabelle aus.
Hier lasse ich mir unter anderem auch den Status der Artikel anzeigen. Je nach Status (1, 2 oder 3) wird die Zahl in einer anderen Farbe angezeigt.
IntlDateFormatter
Das Datum in der Datenbank liegt im Format 2023-03-19 07:18:22 vor.
Ein Code soll das Datum jetzt ohne Verwendung von setlocale
so umwandeln, das es komplett in Deutsch zu so einer Ausgabe kommt.
Am Sonntag, den 19. März 2023 um 07:18 Uhr
Ihr Datenvolumen ist zu 100% aufgebraucht
Ihr monatliches Highspeed-Volumen ist aufgebraucht und Ihre Surf-Geschwindigkeit reduziert sich nun bis einschließlich des nächsten Abrechnungstages (dem nächsten 21. des Monats) auf 64 kBit/s.
Jaaaaa, ich hab es gemerkt.
PHP Verbrauch und Kosten berechnen
Bisher speichere ich lediglich die Zählerstände $zaehler_neu
und $zaehler_alt
in der Datenbank und lasse PHP die Berechnung mit den vordefinierten Zahlen durchführen.
Nicht besonders elegant, aber es funktioniert zumindest schon mal.
$preis_kwh = '0.25'; $gebuehr = '5.19'; $abschlag = '85.00'; $verbrauch = $zaehler_neu - $zaehler_alt; $kosten = $verbrauch * $preis_kwh + $gebuehr; $differenz = $abschlag - $kosten;
Das Ergebnis lasse ich in eine Tabelle ausgeben:
SQL IN or NOT IN
Hey Datenbank, zeige mir nur die Daten mit der ID 6, 33 und der 47 an.
SELECT * FROM `daten` WHERE `id` IN (6,33,47)
Ne warte, anders herum...
SQL WHERE AND
Hey Datenbank, zeige mir bitte den Inhalt der ID 6 an, aber nur, wenn der "status" 1 ist.
SELECT * FROM `daten` WHERE `status`=1 AND `id`=6
Datenbank Abfrage mit zwei oder mehr Bedingungen.
NULL Datenbank
Der NULL
Werte (nicht das Wort an sich) in einer SQL Datenbank ist ein Zeichen für schlechtes Datenbank-Design. Hier sollte ein adäquater Ersatz oder die leeren Zeichenfolge ' '
verwendet werden.
JSON CRUD
Brauche ich zwar noch nicht, aber ich wollte mich Technisch schon mal mit JSON auseinander setzten. Also kurz eine JSON-Datei erstellt (brennholzverleih.json) und diese schnell via Textarea mit ein paar Daten befüllt.
Ein Datensatz sieht in etwa so aus:
Der Erbsenzähler im Faktencheck
Oder, wie schreibt der Anwalt Joachim Steinhöfel in seinem Blog:
Die Interview-Polizei von “Correctiv” fragt - Der Corona-“Erbsenzähler” antwortet.
Du hast das Video "Pandemie in Rohdaten" von Marcel Barz noch nicht gesehen? Jetzt aber schnell, hier guck.
Rohdaten der Pandemie
Der Informatiker Marcel Barz versucht mit den offiziellen Zahlen zu Sterbezahlen und Intensivbetten seinem Freund zu beweisen, das es sehr wohl eine Pandemie gibt... oder vielleicht doch nicht?
Eine Textdatei einlesen
Kompletten Inhalt ausgeben.
$flatfile = 'textdatei.txt'; $inhalt = file_get_contents($flatfile); echo $inhalt;
Nur Zeile 3 ausgeben.
CREATE TABLE
Eine weitere Tabelle für die Datenbank.
Virale Witze
Chuck Norris wurde positiv auf Corona getestet. Das Virus ist nun 14 Tage in Quarantäne!
Die Corona-Warn-App hat nur eine Funktion - Datenschutz
PASSWORD ARGON2ID
Durch das Updaten auf die PHP Version 7.4.4 funktionierten die User und die Password Class für mein 4CMS User Login nicht mehr.
Zwar war der password_hash
den ich dort verwendet habe sehr sicher, aber veraltet.
Ich habe daher die Registrierung und den Login nun komplett neu geschrieben und verwende zum verschlüsseln des Passwortes jetzt den Algorithmus Argon2id
.
password_hash()
password_verify()
Login Download: https://github.com/bUTschy/php-login
SQL Vergleichsoperatoren
Alle Einträge deren ID kleiner als 10 ist
SELECT * FROM `daten` WHERE `id` < 10
Alle Einträge deren ID größer 10 ist
SELECT * FROM `daten` WHERE `id` >= 10
Logbuch 140420
Daten v0.9 |
Update: 14.04.2020 - Logbuch
üöä-ÜÖÄ
ü -- Ü -- ö -- Ö -- ä -- Ä und er hier ß
Warum es mir wieder alle Umlaute in der Datenbank zerhaut ist mir ein Rätzel.
Update: Mein PSPad war der Übeltäter.
Scaremail Today
Hallo, mein Opfer
Ich schreibe Ihnen, weil Ich Malware auf die Porno-Website gesetzt habe, die Sie besucht haben. Mein Virus hat all Ihre persönlichen Daten gesammelt, und hat Ihre Kamera während Ihrer Masturbation eingeschaltet.
Windows 10 Datenverbrauch
Wie viele Bytes werden während einer Windows 10 Sitzung so über das Netzwerk empfangenen und gesendeten und wo finde ich die Statistik dazu?
Öffne dazu die Eingabeaufforderung cmd und gib dort den Befehl netstat -e ein.
utf8mb4
General error: 1366 Incorrect string value: '\xF0\x9F\x98\x81'
Nach dem ich den charset
für meine Datenbankverbindung von utf8
auf utf8mb4
umgestellt habe, kann ich jetzt Unicode in meine Datenbank schreiben, ohne diese Fehlermeldung da oben. ?
Externe Datensammler
Beim Besuch dieser Homepage sollen keinerlei personenbezogene Daten gesammelt und an externe Dienste weitergeleitet werden. Daher werde ich jetzt alle externen Dienste verbannen und durch eigene Funktionen ersetzen.
Externe Datensammler waren unter anderem:
Alle IP´s löschen
Jeder Kommentar in einem Artikel auf dieser Homepage beinhaltet auch die IP des Kommentierenden.
Will ich nach einer bestimmten Zeit diese IP´s aus allen bisherigen Kommentaren entfernen, führe ich in phpMyAdmin diesen SQL-Befehl in meiner Datenbank aus:
UPDATE kommentare SET kom_ip = ' ';
DSGVO
Die Datenschutz-Grundverordnung kurz DSGVO wurde verabschiedet und greift ab dem 25 Mai 2018
Für mich als Seiten-Betreiber bedeutet es, Dich als Besucher dieser Homepage mit einer Datenschutzerklärung darüber zu Informieren, was für Daten von Dir während Deines Besuches anfallen, was gespeichert wird und wie diese gespeicherten Daten verwendet werden.
IP-Cam Privater Bereich
Stichwort Datenschutz, auch das kann die Foscam Fi9826W.
Konfig -> Video -> Datenschutz -> Zugriff Privater Bereich.
PHP Mini PDO CRUD
Diese kleine Datenbank besteht aus nur einer einzigen Datei (index.php) in der wird alles gesteuert und sieht momentan so aus.
Lust zu Basteln ? dann lade dir das Script hier runter und mach es Schick, Schlank, Sicher, nur lass es in einer einzigen Datei, alles andere gibt es schon in Geiler ;)
Unicode vs. Latin-1
Wenn Daten als UTF-8 (Unicode) gespeichert wurde, aber als ISO 8859-1 (Latin-1) interpretiert werden, sieht das so aus:
ä ö ü
EU Cookies
Laut einer EU Datenschutzrichtlinie müsste ich euch darauf hinweisen, das hier auf der Homepage Cookies zum Einsatz kommen und wenn nicht, dann nicht.
NOT NULL DEFAULT
Wenn nun in der Datenbank-Tabelle:
`hits` int(11) NOT NULL DEFAULT '0',
Und im Script:
$hits = isset($_POST['hits']) ? trim($_POST['hits']) : 0;
Dann schreibt er auch eine 0 ?
Foscam SD als Netzlaufwerk
Um die Speicherkarte der Foscam IP-Kamera als Windows Netzlaufwerk einzurichten, basteln wir uns einfach einen passenden FTP-Link zusammen und der geht so.
1und1 DSL 50
Nun ist es Offiziell, wir wechseln von o2 (Alice DSL 16) zu 1&1 und holen uns dort eine DSL 50MBit/s Leitung für 23,49€ im Monat.
Und was kostet der ganze Kram jetzt wirklich ?
Meine digitalen Helfer
Vielleicht interessiert es ja den einen oder anderen welche Techniken, Dienste und Software ich auf und für diese Homepage verwende.
Update 12.02.2018 - Daten werden überarbeitet, waren nicht mehr Aktuell ;)
coming soon O.o
4CMS Passwörter
Wo wir gerade bei Sicherheit sind, ich habe hier im 4CMS eben mein Passwort in "demo" geändert und in der Datenbank sieht das Passwort "natürlich verschlüsselt (nicht mit md5 / sha1)" so aus:
$2y$10$JJbolR9cjToadUN87Mop0eEhjdq.Hm4/xzwG.4e7KnzVezYsW5.kG
Jetzt ändere ich das Passwort erneut und nenne es wieder einfach nur "demo" und speichere es ab und jetzt achtet mal auf den Hash:
COUNT und GROUP BY
Für eine Top 5 Liste brauche ich nur ein COUNT(*)
und GROUP BY()
an die Datenbank senden.
SELECT `buser`, COUNT(*) AS `zahl` FROM `box` GROUP BY `buser` ORDER BY `zahl` DESC LIMIT 5
Und schon habe ich die Top 5 Einträge und die Summe deren Einträge in einer Liste.
Hab ich in der Form schon für einige Blöck gebraucht.
Ein Forum
Ein einfaches kleines PHP Forum Modul wollte gebaut werden.
So schnappe ich mir eines meiner Content-Module, bediene mich an den Kommentar-Funktionalitäten des Artikel-Moduls und Clone die Datenbank-Tabelle vom Box-Modul (die besteht ja auch nur aus einer Tabelle) Tätäää... das kleinste und sicherste PDO Forum der Welt ist fertig.
Foscam FI9826W Demo
Wer sich hier mal die Qualität der neuste Indoor IP-Kamera von Foscam in Live ansehen möchte, braucht nur eine IP, einen Port und die Zugangsdaten in sein "bevorzugten" Viewer (z.b. TinyCam) eintragen.
- IP: https://gc8883.myfoscam.org
- PORT: 20070
- Username: user
- Passwort: user
FI9831W vs. FI9826W
Der Unterschied laut Datenblatt (foscam.com) alles soweit gleich, bis auf:
Foscam FI9831W | Foscam FI9826W |
---|---|
2.8 mm Linse mit 70° Winkel | 4-9 mm Fokal-Linse mit 35-70° Winkel |
11 IR LEDs | 13 IR LEDs |
SD-Karte | micro SD-Karte |
f: 2.8mm, F:2.4 | f: 4mm~9mm, F:1.8 |
3-fach Zoom | |
104,99 € (foscam.de) | 159,90 € (foscam.de) |
Ein Box-Block
Die neusten bzw. letzten Einträge aus einer SQL Datenbank.
SELECT * FROM `daten` ORDER BY `id` DESC LIMIT 3
WhatsApp Lesebestätigungen
Die Lesebestätigungen bei WhatsApp lässt sich nun deaktivieren, dazu muss man sich lediglich die neuste Version direkt bei Whatsapp.com holen.
Die aktuelle Version ist 2.11.444 und die bietet in den Einstellungen => Datenschutz eine Option namens "Read Receipts", dort einfach den Haken entfernen.
In Textdatei schreiben
Mal eben etwas in ein Datei schreiben.
$flatfile = 'textdatei.txt'; $inhalt = 'Datensatz für die Textdatei'; file_put_contents($flatfile, $inhalt, FILE_APPEND | LOCK_EX);
Zufall aus der Datenbank
Einen zufälligen Eintrag aus der Datenbank auslesen.
SELECT `titel` FROM `tabelle` ORDER BY RAND() LIMIT 1
Schon schlimm wenn man das nur mit einer Funktion RAND()
erledigen kann.
DELETE mit PDO
Einen Eintrag aus der SQL Datenbank löschen, die kürzest mögliche Schreibweise:
$stmt = $db->prepare('DELETE FROM `tabelle` WHERE `id` = :id'); $stmt->execute(array(':id' => $_GET['id']));
So verwende ich es hier im 4CMS.
config.php Nr. 2
Wir wollen eine Datenbank Verbindung mit einer MySQL-Datenbank herstellen.
Unsere Daten tragen wir hier ein:
define('DBTYPE','mysql'); define('DBHOST','localhost'); define('DBNAME','dein_datenbankname'); define('DBCHAR','utf8mb4'); define('DBUSER','dein_db_username'); define('DBPASS','dein_db_passwort');
Diese übergeben wir dann an unsere Verbindung:
Umlaute ÄÖÜäöü
Ich schreibe Umlaute mit TinyMCE und Tiny schreibt diese auch so in die Datenbank.
SQL RAND()
Einen zufälligen Datensatz mit RAND()
aus der Datenbank holen.
SELECT `titel` FROM `daten` ORDER BY RAND() LIMIT 1
mySQL SUM
Klickt man hier auf einen der Artikel, wird dieser Klick in die Zelle aklicks
in die Datenbank geschrieben und der Wert dort um einen erhöht.
if rowCount 0 else
Was ist, wenn es noch keinen Daten in der Datenbank gibt, muss man es Petzen ? Und wenn ja, wie ?
Daten von Heute
Für die schnelle Übersicht zwischendurch.
SELECT * FROM `tabelle` WHERE DATE_FORMAT(`datum`, '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d')
Zeigt dir alle Einträge der Tabelle "tabelle" dieser Woche an.
4CMS PDO Crud
CREATE, READ, UPDATE und DELETE wie ich es hier im 4CMS verwende.
Wenn ich einen Parameter an ein Prepared Statement binde, muss ich ihn nicht escapen.
Tabelle kategorie
In phpMyAdmin die Datenbank auswählen in dem unsere Tabelle kategorie
hinzugefügt werden soll
SQL -> SQL-Befehl(e) in Datenbank DEINEDATENBANK ausführen.