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
Lieber Gott
Lieber lieber Gott, ich wünsche mir ein fettes Bankkonto und einen schlanken Körper. Und bitte, bring das nicht wieder durcheinander.
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.
CREATE TABLE
Eine weitere Tabelle für die Datenbank.
üöä-ÜÖÄ
ü -- Ü -- ö -- Ö -- ä -- Ä 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.
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. ?
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 = ' ';
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 ;)
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 ?
Micro SD Karten Speedtest
Ich habe mal alle meine acht Micro SD-Karten einem Geschwindigkeitstest unterzogen.
Für den Speedtest habe ich auf das alt bewerte Programm H2testw (v1.4) von Heise zurückgegriffen und hier nun die Ergebnisse.
- 32GB (10) Transcend - Schlüsselbund
- Schreibrate: 18,2 MByte/s
- Leserate: 18,4 MByte/s
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.
SpyCam Power-Bank
Hier nun ein Testvideo meiner Spy Power Bank.
So eine Motion-Control Aufnahme ist immer 3 Minuten lang und hat dabei eine Grösse von etwa 175 MB im *.avi Format.
Spy Power Bank
Der Uwe hat mir mal wieder was zum Spielen hier gelassen, eine 3000mAh Power Bank mit versteckter HD 720p Kamera.
Im Standby können mit aktivierter Bewegungserkennung bis zu 48 Stunden aufgenommen und in kleine 3 Minuten AVI´s (H.264) auf eine bis zu 32 GB große Micro SD-Karte gespeichert werden.
Ich berichte in den Kommentaren.
Ein Box-Block
Die neusten bzw. letzten Einträge aus einer SQL Datenbank.
SELECT * FROM `daten` ORDER BY `id` DESC LIMIT 3
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 ?
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.