Hallo, Gast |
Du musst dich registrieren bevor du auf unserer Seite Beiträge schreiben kannst.
|
Foren-Statistiken |
» Mitglieder: 1
» Neuestes Mitglied: Joopi
» Foren-Themen: 462
» Foren-Beiträge: 639
Komplettstatistiken
|
Benutzer Online |
Momentan sind 14 Benutzer online » 0 Mitglieder » 9 Gäste AhrefsBot, Bytespider, DotBot, Semrush, bot
|
|
|
Fehlerbehandlung |
Geschrieben von: Joopi - 07-01-2023, 09:51 - Forum: Programmieren
- Keine Antworten
|
|
Wenn über ein HTML(PHP)-Formular Daten in eine Tabelle geschrieben werden sollen, dann sollte auch eine Fehlerbehandlung erfolgen.
Mit diesem Code-Schnipsel kann man die Fehlermeldung und die Fehlernummer anzeigen lassen, die ausgegeben werden, wenn es zu einem Fehler kommen sollte. Der Datensatz sollte dann auch nicht in der Tabelle erscheinen.
PHP-Code: if(mysqli_error($db)) { echo "<p>Das ist der Fehler: " . mysqli_error($db) . " und der Fehlercode:" . mysqli_errno($db) . "</p>"; echo "<a href=\"mail_add.php\"><img border=\"0\" src=\"header_button3.php?text=Mailaddi&font=4\"></a>\n"; }
Die Prüfung erfolgt über die Datenbankverbindugn **\$db**. Die Fehlerausgabe erfolgt mit Klartext und mit Fehlernummer.
|
|
|
Datensätze aller Tabellen in der Datenbank |
Geschrieben von: Joopi - 07-01-2023, 09:49 - Forum: Programmieren
- Keine Antworten
|
|
Wenn man wissen will, wie viele Datensätze in den diversen Tabellen einer Datenbank enthalten sind, kann man das mit einem Befehl ermittlen:
Code: SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'datenbankname';
|
|
|
Datenbank erstellen |
Geschrieben von: Joopi - 07-01-2023, 09:48 - Forum: Programmieren
- Keine Antworten
|
|
Sofern ich Datenbanken auf der Konsole anlege, benutze ich folgenden Befehl:
Code: CREATE DATABASE datenbankname DEFAULT CHARACTER SET utf8 COLLATE utf8mb4_general_ci;
|
|
|
Daten erfassen |
Geschrieben von: Joopi - 07-01-2023, 09:47 - Forum: Programmieren
- Keine Antworten
|
|
Es gibt zwei gute Möglichkeiten, um Datensätze in eine MySQL-Tabelle zu erfassen. Über **INSERT INTO** kann man entweder die **Values**-Variante nehmen (die Erfassung mehrerer Datensätze ist möglich) oder mit **SET** (es kann nur ein Datensatz erfasst werden).
Zwei Varianten der Datenerfassung:
Code: mysql> INSERT INTO tabelle (nname, vname, erfassung) VALUES ("Mustermann","Klaus",NOW());
Code: mysql> INSERT INTO tabelle SET nname="Mustermann", vname="Klaus", erfassung=NOW();
Erklärung:
Wie bereits oben erwähnt ist die SET-Variante ausschließlich für die Erfassung eines einzelnen Datensatzes vorgesehen. Insbesondere Neulinge, die die Syntax von MySQL noch nicht so gut beherrschen, sollten sich in der ersten Zeit mit dieser Anweisung begnügen. Ich spreche da aus Erfahrung.
Update:
Die obige Erklärung habe ich vor ca. 15 Jahren geschrieben. Heute kann ich darüber lachen. Aber wenn man von der Thematik keine Ahnung hat, dann sind die einfachen Formen der Handhabung immer noch die besten. Heutzutage kommt es produktiv nicht mehr vor, dass ich Datensätze via Konsolenbefehl in die Tabellen erfasse. Wenn ich etwas teste, dann kann das vorkommen.
|
|
|
Bestimmte Anzahl von Zeichen ausgeben |
Geschrieben von: Joopi - 07-01-2023, 09:44 - Forum: Programmieren
- Keine Antworten
|
|
Eine Tabelle mit einem Fließtext als Feldinhalt ist nicht besonders schön. Sofern der Text nicht maßgeblich ist, sondern nur als Füllmenge gedacht ist, macht es Sinn, die Ausgabe des Textes auf eine gewisse Anzahl Zeichen zu begrenzen. In einem SQL-Statement könnte das wie folgt aussehen:
Code: $erg = mysqli_query($db, "SELECT id, substring(mailtext,1,250) FROM tabelle ORDER BY id");
Damit werden ab Zeichen 1 entsprechend viele Zeichen des Textes, sofern vorhanden, ausgegeben. Der Rest wird nicht angezeigt.
Dieser Teil des Statements ist der wichtig Teil:
Zitat:substring(mailtext,1,250)
Somit kann man Tabellen auch mit dem Feld für Fließtext füllen, um dem Betrachter dieses zu zeigen.
Es macht Sinn, daraus einen Teaser zu generieren, sodass vielleicht ein Link angesetzt werden kann, um den gesamten Text anzeigen zu lassen.
|
|
|
Alle Zeichen in Kleinschreibung ändern |
Geschrieben von: Joopi - 07-01-2023, 09:42 - Forum: Programmieren
- Keine Antworten
|
|
Wenn in einer Spalte einer Tabelle String in Groß- und Kleinschreibung vorhanden sind, dann kann man diese in einem Schwung in Kleinbuchstaben konvertieren. Die Syntax dazu ist:
Code: UPDATE tabelle SET katname = LOWER(katname);
Das Konvertieren kann auch mit UPPER in Großbuchstaben erfolgen.
|
|
|
Wartezeit einsetzen |
Geschrieben von: Joopi - 07-01-2023, 06:20 - Forum: Programmieren
- Keine Antworten
|
|
Dann und wann, besonders beim Testen, kann es hilfreich sein, wenn die Ausführung des Skripts für einige Zeit ausgesetzt wird. Eine Wartezeit eben.
In Python lässt sich dieses wie folgt realisieren:
Code: #!/usr/bin/env python3
import time
time.sleep(5)
Mit dieser Anweisung wird die Ausführung des Skripts für 5 Sekunden ausgesetzt.
|
|
|
Doku Git und GitHub |
Geschrieben von: Joopi - 07-01-2023, 03:20 - Forum: Programmieren
- Keine Antworten
|
|
Die Nutzung von Git und GitHub kann in Projekten von Vorteil sein. Hier dokumentiere ich, wie Git zu nutzen ist. Die Nutzung von GitHub ist sekundär, denn dieses benötige ich nur, sollte ich meine Projekte im Internet öffentlich machen wollen.
Ich nutze zum Üben die Lehrgangsreihe von The Net Ninja.
Meine eigenen Vorbemerkungen:
Es macht im Grunde genommen Sinn, dass die Projekte, an denen gearbeitet wird, zentral auf dem lokalen Rechner abgelegt werden. Somit ist auch nur ein Oberprojektordner notwendig. Dieser Oberprojektordner wird dann wiederum mit weiteren Ordnern je Einzelprojekt bestückt. Diese Ordner werden, sofern sie von Git zu nutzen sind, später durch die Initialisierung zu Repositories. Um nämlich Git in Gänze richtig zu nutzen, müssen Git-Repositories angelegt sein.
Das bedeutet, dass in dem Projektordner ein versteckter Ordner .git angelegt wird, in dem dann alle Veränderungen nachgehalten, also getrackt, werden.
Nachdem Git installiert wurde
Code: git config --globel user.name Tuennes
Code: git config --globel user.email tuennes@yahoo.de
Damit ist Git personalisiert.
Um festzustellen, welcher User für Git angelegt werde, ist folgender Befehl auf der Konsole abzusetzen.
Code: git config user.name
Projekt initialisieren
Mit diesem Befehl wird das Repository initiiert. Innerhalb des Ordner bzw. des Repositories können weitere Ordner erstellt werden. Auf der Konsole kann direkt mit dem Befehl ```touch``` eine leere Textdatei erzeugt werden, z.B. index.html.
Welche Dateien sind im Repo
Dieser Befehl zeigt alle im Repo vorhandenen Dateien und deren aktuellen Status.
Ein Status ist z.B. untracked. Das bedeutet, die Datei ist da, aber noch nicht in der Staging-Area enthalten.
Dateien, die noch nicht in der Staging-Area sind, werden in der Farbe Rot dargestellt. Dateien, die bereits hinzugefügt wurden, werden in der Farbe Grün angezeigt.
Die textliche Beschreibung ist aber auch ausreichend, um zu erkennen, welche Dateien hinzuzufügen sind. Das muss nicht einzeln geschehen.
Datei in Staging-Area hinzufügen
Um eine Datei in die Staging-Area hinzuzufügen, bedarf es nur dem vorgenannten Befehl.
Datei aus Staging-Area löschen
Code: git rm --cached index.html
Sofern eine Datei im Repo nicht mehr benötigt wird, kann sie mit dem vorgenannten Befehl aus der Staging-Area herausgelöscht werden. Das bedeutet nicht, dass die Datei physisch gelöscht wurde. Sie ist nur nicht mehr im Repo.
Alle Dateien hinzufügen
In einem großen Projekt wäre es sehr aufwendig, wenn jede einzelne Datei, die erstellt wurde, dem Repo hinzuzufügen wäre. Mit dem vorgenannten Befehl werden alle neuen Dateien, die noch nicht im Repo sind, hinzugefügt.
Wichtig ist, dass zu bestehenden Dateien, die geändert wurden, entsprechende Mitteilungen über den Grund der Änderung, vermerkt werden. Das ist das Kommittment, welches sehr wichtig ist.
Ein Kommitment absetzen
Code: git commit -m "added index and styles files"
Dieser Befehl ist relativ global und bezieht sich nicht auf einzelne Dateien, sondern auf die Dateien, die neu sind bzw. geändert wurden.
Die Option **-m** bedeutet, dass eine Mail erzeugt und an die Projektteilnehmer gesendet wird.
Der notwendige und wichtige Kommentar zum Kommitment wird hinter der Option in Hochkommata gesetzt und sollte die Situation erklären.
Mit diesem Kommitment wird eine eindeutige ID erzeugt, die im Repo abgespeichert wird.
Es wird eine Info ausgegeben, die u.a. enthält, wieviele Zeilen insgesamt hinzugefügt (vielleicht auch gelöscht) wurden. Werden zum Projektbeginn mehrere Dateien mit einem Kommitment belegt, so sind alle vorhandenen Zeilen in Summe dann in der Info zu sehen.
Logfiles der Kommitments ansehen
Sobald z.B. bestehende Dateien verändert werden, müssen diese irgendwann wieder der Staging-Area mitgeteilt werden. Das geht über den "add"-Befehl und es wird angezeigt, welche Dateien geändert (modifiziert) wurden.
Sobald das passiert ist, sollte wieder ein Kommitment erfolgen, welches wieder geloggt wird.
Mit dem obigen Befehl, können alle abgesetzten Kommitments betrachtet werden. Allerdings werden hierbei alle Einträge im Logfile, also in der Historie, angezeigt. Das kann sehr unübersichtlich sein, wenn das Projekt groß ist.
Um nicht erschlagen zu werden, wird bei der Ausführung des obigen Befehls je Kommitment nur eine Zeile ausgegeben, die eine Zusammenfassung der Veränderungen beinhaltet.
Das einfache Hinzufügen und Betrachten der Dateien bzw. der Einträge in der Log-Datei ist nicht alles, denn es werden oftmals auch Fehler gemacht, die wieder zu beheben sind.
Hier sind zum Kommitment 3 Befehle vorhanden:
- Checkout commit
- Revert commit
- Reset commit
Ein Kommitment zurücknehmen
Code: git checkout af6b84c
Sofern etwas falsch war oder zu verändern ist, kann ein Kommitment wieder zurückgenommen werden. Dazu ist über die Loghistorie die entsprechende ID zu erkunden und kann dann mit dem obigen Befehl wieder aus den Kommittments herausgenommen werden.
Die Befehle für Revert und Reset kann ich aus der englischen Erklärung heraus nicht gut verstehen. Reset ist auf jeden Fall eine eher extreme Maßnahme. Beide Befehle benötigen immer die ID des Kommitments.
Die Erstellung von Branches (Zweige oder Äste eine Baumes) ist die wohl wichtigste Eigenschaft von Git.
Neben dem Master-Branch (Info: Master wurde zu Main auf GitHub umbenannt) können beliebig viele Branches angelegt werden.
Branches sind notwendig, um neuen Code erst zu testen. Sollte er dem Projekt und den Anforderungen genügen, kann der Branch mit dem Master-Branch zusammengeführt (gemerged) werden.
Einen neuen Branch erstellen
Code: git branch neuerbranch
Mit dem vorgenannten Befehl wurde ein Branch erstellt.
Um feststellen zu können, welche Branches vorhanden sind, muss obiger Befehl abgesetzt werden.
Wenn dieser Befehl abgesetzt wird, werden alle Branches gezeigt, auch der Master-Branch. Durch ein vorangestelltes Sternchen ist zu erkennen, welcher Branch gerade der aktive ist, zu dem etwas in die Staging-Area eingestellt werden kann.
Es ist wichtig, dass man sich nicht vertut und den falschen Branch bearbeitet.
Code: git checkout neuerbranch
Damit wechselt (switcht) Git vom derzeitigen aktiven Branch zum neu ausgewählten Branch.
In diesem Branch kann all das gemacht werden, was oben beschrieben ist. Allerdings ist zu beachten, dass dieser Branch isoliert ist, da er mit dem Master-Branch nicht in Verbindung steht.
Man kann auch einen neuen Branch anlegen und diesen direkt als aktiven Branch kennzeichnen.
Code: git checkout -b ganzneuerbranch
Damit wird der Branch angelegt und direkt aktiviert.
Einen Branch löschen
Code: git branch -D neuerbranch
Sollte es sein, dass ein Branch bzw. dessen Dateien, nicht mit dem Master-Branch zusammengeführt werden sollen, dann dieser Branch mit der Option "-D" gelöscht werden. Wichtig ist das **große D**.
Das Zusammenführen von Branches ist wichtig, um die Arbeit anderer in den Master-Branch einzufügen.
Das sollte natürlich nur geschehen, wenn der Code richtig ist.
Um Branches in den Master-Branch bzw. den Branch, der die anderen Branches aufnehmen soll, einzufügen, muss der aufnehmende Branch aktiv sein.
Code: git merge ganzneuerbranch
Damit wird der Branch in den Master-Branch gemerged, da der Master-Branch der aktive Branch ist.
Anmerkung:
Der Begriff Master wurde mittlerweile auf Github mit dem Begriff Main ersetzt.
|
|
|
Submodul clonen |
Geschrieben von: Joopi - 07-01-2023, 03:03 - Forum: Programmieren
- Keine Antworten
|
|
Heute wollte ich das Submodule eines Hugothemes in eine neue Hugoseite (Testzentrum) hinzufügen. Also flott den Befehl kopiert und nicht schlecht gestaunt:
Zitat:fatal: Kein Git-Repository (oder irgendein Elternverzeichnis bis zum Einhängepunkt /media/django)
Stoppe bei Dateisystemgrenze (GIT_DISCOVERY_ACROSS_FILESYSTEM nicht gesetzt).
Es hat dann tatsächlich drei, vier Sekunden gedauert bis mir klar geworden war, dass ich noch kein Git-Repository für die neue Hugotestseite erstellt hatte.
Mit
Code: git init
git add .
git commit -m "blablabla"
wurde das Repository erstellt und schon funktionierte der Befehl im root-Verzeichnis der Hugoseite, um ein Submodule hinzuzufügen:
Code: git submodule add https://github.com/hugo-toha/toha.git themes/toha
git submodule init
git submodule update
Dann ist mir eingefallen, dass bei der Nutzung von Submodulen, direkt Updates vom Theme heruntergeladen werden können:
Code: git submodule update --remote themes/toha
Es muss aber einen Grund geben, warum der Themeautor die Info herausgegeben hat, dass das Theme als Submodule zu installieren ist und der normale Clone-Befehl das Theme nicht gut unterstützt.
Wichtig ist für mich zu wissen, und ich sollte es auch behalten, dass bei der Nutzung von Submodulen ein Git-Repository vonnöten ist. :-)
|
|
|
submodul Repository |
Geschrieben von: Joopi - 07-01-2023, 03:00 - Forum: Programmieren
- Keine Antworten
|
|
Über Git in Verbindung mit GitHub lassen sich Dateien, gepackte Ordner und auch Submodule für Hugo und alles andere downloaden.
Am besten wechselt man direkt in den Ordner der Hugo-Seite und setzt dann den entsprechenden Befehl ab.
Die Syntax für den Download eines Submoduls ist wie folgt:
Code: git init
git submodule add https://github.com/budparr/gohugo-theme-ananke.git ./themes/ananke
Danach ist das Theme in Hugo bzw. in der Datei config.toml einzubinden:
Code: echo ‘theme = “ananke”’ >> config.toml
|
|
|
|