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. |
blockquote
Random c&p Quote´s
aus der SQLite $DB
Was mich am Regen so nervt, ist seine Einstellung.<cite>cite</cite>
Immer von oben herab.
Das Leben ist zu kurz für... Egal was!
Denke daran,
wenn wir verhaftet werden... Du bist taub und ich spreche kein Deutsch!
Quelle: /blockquote
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 DATE_SUB() Interval
Alle Einträge von Heute, sieht in meinem Dashboard momentan so aus.
Auch hier konnte ich den Code weiter reduzieren.
SELECT * FROM `komm` WHERE `datum` >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
PHP Deprecated
Und noch ein PHP Deprecated ab PHP 8.1 ... wurde gerade beim refactoring der SQLite CRUD in die Fehlerlogs geschrieben. Dieses mal betrifft es meine htmlspecialchars()
Funktion und komischerweise nur bei meinem SQLite Script.
Passing null to parameter #1 ($string) of type string is deprecated
Aber auch hier habe ich schnell eine Lösung gefunden und die geht so:
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.
CRUD SQLite
Zu verschenken... eine voll funktionsfähige CRUD in PHP für SQLite3 in Simple 🙄
public function __construct($db) { $this->db = new SQLite3($db); $this->init(); }
ALTER TABLE
Die Position der neuen Spalte acht
direkt hinter die bereits existierende Spalte sieben
der SQL Tabelle hinzufügen.
ALTER TABLE zahl ADD acht varchar(191) AFTER sieben;
CREATE TABLE
Eine weitere Tabelle für die Datenbank.
Archiv2 v0.9
Alle Artikel nach Monat und Jahr gruppiert in einer Definitionsliste ausgeben.
SELECT Month(datum) AS Month, Year(datum) AS Year, titel, link FROM artikel WHERE status=1 ORDER BY datum DESC
Modul: Artikel Archive
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
Sitemap
Ich generiere hier mal eine dynamische Sitemap mit PHP und MySQL.
Der Inhalt dieser Sitemap ist für das menschliche Auge ungeeignet, klicken und glotzen nur auf eigene Gefahr. ?
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 = ' ';
Homepage wieder Online
Tag Nummer 6, Homepage funktioniert wieder.
Schlechtester Support aller Zeiten: [...]wir möchten Ihnen mitteilen BLA unsere Technik überprüft BLA eventuelle Fehler beseitigt BLA BLA BLA... Ich hab echt nen Hals.
TinyMCE 4.3
Es gibt wieder einige Neuerungen im TinyMCE, aber immer noch kein Images-Upload bzw. einen File-Manager.
Ein bischen JS und man bekommt wenigstens ein Images-Upload ganz ohne Plugin hin.
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 ?
PHP + MySQL Version
PHP + MySQL Aktualisiert.
- PHP-Version: 5.6.14 (alt: 5.5.12)
- phpMyAdmin 4.5.1 (alt: 4.4.61)
- MySQL 5.5.46 (alt: 5.5.44)
Neuer Server
Mein Hoster hat meinen Account jetzt auf einen anderen schnelleren Server migriert und auch schon das DNS Update durchgeführt.
Code
<!-- html --> <!doctype html> <meta charset="utf-8"> <title>Titel</title> <meta name="theme-color" content="black">
<!-- img --> <img src="..." loading="lazy" alt="">
<!-- link --> <a href="https://www.link.de">https://www.link.de</a>
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 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.
mysql_ ist veraltet
mysql_*
Warnung: Diese Erweiterung ist seit PHP 5.5.0 als veraltet markiert und wird in der Zukunft entfernt werden. Verwenden Sie stattdessen die Erweiterungen MySQLi oder PDO.
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:
Archiv Block
Viel Code für so ein simplen Archiv-Block, geht aber nicht kürzer :(
SELECT Month(adatum) AS Month, Year(adatum) AS Year, COUNT(*) AS eintraege FROM artikel WHERE astatus=1 GROUP BY Month(adatum), Year(adatum) ORDER BY adatum DESC
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.
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 artikel 2
Ich hab die Tabelle artikel
um die Spalte aklicks
erweitert.
PDO::PARAM_
Hier nur kurz eine PDO Funktionsweise mit bindParam
#prepare #bindParam #execute #PDO::PARAM
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.