Hallo, Gast |
Du musst dich registrieren bevor du auf unserer Seite Beiträge schreiben kannst.
|
Foren-Statistiken |
» Mitglieder: 1
» Neuestes Mitglied: Joopi
» Foren-Themen: 464
» Foren-Beiträge: 641
Komplettstatistiken
|
Benutzer Online |
Momentan sind 12 Benutzer online » 0 Mitglieder » 6 Gäste AhrefsBot, Bytespider, Crawl, DotBot, Google, bot
|
|
|
In einem PHP-Dokument mehrere Datenbank abfragen |
Geschrieben von: Joopi - 16-07-2023, 10:26 - Forum: Programmieren
- Antworten (1)
|
|
Es liegt in der Natur der Dinge, dass, wenn man zwei Datenbanken abfragen möchte, auch zwei Datenbanken im Zugriff sein und die Verbindungen hergestellt sein müssen. Je nach Anwendungsbereich hat man nicht immer alle Tabellen in einer Datenbank liegen. So erging es mir bei einem kleinen Projekt und war, auch wenn ich seit Jahren im PHP-MySQL-Umfeld herumwusel, eine Art von Premiere.
Wie geht das?
Wenn man PHP-MySQL erlernt, z.B. durch Online-Tutorials oder YouTube-Videos, wird klassischerweise immer von einer Datenbankverbindung ausgegangen. Ich habe noch nie gesehen, dass zwei oder mehr Datenbankverbindungen gezeigt wurden.
Eine Datenbankverbindung (prozedural) würde ich so auf bauen wollen:
Code: /* Zugangsparameter */
[code]$host = "localhost";
[code]$user = "jankass";
[code]$pwd = "apfelkuchen";
[code]/* Datenbanken */
[code]$dbname004 = "personen";
[code]$dbname005 = "kunden";
/* Tabellen */
$tblname4001 = "personendaten";
$tblname5001 = "kundendaten";
$db1 = mysqli_connect($host, $user, $pwd, $dbname004);
if(!$db1)
{
exit("Verbindungsfehler: " .mysqli_connect_error() . "bei Datenbank " . $dbname004 . "");
} else {
echo "Die Verbindung zur Datenbank " . $dbname004 . " wurde erfolgreich hergestellt.<br>";
}
Zu beiden Zuständen des Verbindungsaufbaus lasse ich mir immer eine Nachricht ausgeben (in der Entwicklungsumgebung).
Ich habe es mir auch angewöhnt, diesen Codeabschnitt auszulagern und in einer include-Datei in einem separaten Ordner abzulegen. Aus Sicherheitsgründen ist dies auf jeden Fall keine schlechte Angewohnheit.
Die erste Datenbank ist also im Zugriff. Um auch die zweite Datenbank ansprechen zu können, ist nun nur noch folgendes notwendig:
Code: $db2 = mysqli_connect($host, $user, $pwd, $dbname005);
if(!$db2)
{
exit("Verbindungsfehler: " .mysqli_connect_error() . "bei Datenbank " . $dbname005 . "");
} else {
echo "Die Verbindung zur Datenbank " . $dbname005 . " wurde erfolgreich hergestellt.<br>";
}
Wenn auch hier die Erfolgsmeldung im Browser erscheint, dann kann ich beide Datenbanken ansprechen und Abfragen starten, Eingaben oder Änderungen vornehmen.
Zwei Abfragen könnten wie folgt gestaltet werden (separiert, nicht gejoined):
Code: $protollhttpx = mysqli_query($db1, "SELECT id, vorname, nachname, firma FROM " . $tblname4001 . ";");
$protollhttpx = mysqli_query($db2, "SELECT id, segment, bestellung, lastdate FROM " . $tblname5001 . ";");
Die Beispiele sind etwas aus der Luft gegriffen, veranschaulichen aber das, was ich zeigen wollte.
Es ist auch möglich, die Abfrage in einem Statement zusammen zu fassen, denn auch über zwei (oder mehr) Datenbank kann mit join gearbeitet werden. Das habe ich noch nicht ausprobiert, da ich noch keinen solchen Fall hatte. Wird aber nachgeliefert - irgendwann.
|
|
|
Vorschaumodus von Visual Studio Code verhindern |
Geschrieben von: Joopi - 15-07-2023, 10:21 - Forum: Blog
- Antworten (1)
|
|
Je moderner eine Software daherkommt, um so mehr Murks steckt darin. Das ist zwar Ansichtssache, aber für mich ist das so. Man kann einfach nicht jede Software in- und auswendig kennen. Zumindest nicht der Hobbyist. Und viele Standardeinstellungen sind meist fragwürdig und lässt die Frage aufkommen, was sich der Programmierer (m/w/d) dabei wohl gedacht haben kann.
Wie bereits an anderer Stelle berichtet, arbeite ich vermehrt mit Visual Studio Code. Durch die vielfältigen Möglichkeiten, auch im Hinblick auf den umfangreichen Erweiterungsmarkt, verliert man schnell den Überblick. Aber man sich ja selber dabei, wenn es um die Installation von kleinen Helfern geht.
Aber eines hat mich irgendwie von Anfang an genervt. Und zwar:
Wenn aus der linken Leiste auf eine Datei geklickt wird, wird sie geöffnet. Man kann sich den Inhalt anschauen.
Wenn dann auf eine zweite Datei geklickt wird, wird die erste geschlossen. An deren Stelle wird die zweite geöffnet und kann betrachtet werden.
Und so geht es weiter bis zum Sankt-Nimmerleins-Tag.
Erst wenn in einer Datei etwas ändert wird, wird beim Klick in der linken Spalte auf eine Datei ein neues Tab aufgemacht und dort erscheint dann der Inhalt der neu angeklickten Datei.
Wenn man dann wieder auf eine Datei in der linken Leiste klickt, tritt diese an die Stelle der geraden eben geöffneten Datei.
Was ist das nur für ein Unfug?
Ich habe lange gebracht, um zu begreifen, was da eigentlich passiert. Jetzt endlich, nach wohl zwei Jahren, habe ich herausgefunden, dass dieses Verhalten wieder Mal an einer für mich nicht nachvollziehbaren Standardeinstellung liegt, die von Hause aus gesetzt ist. Das Haus, in dem dieser Unfug verzapft wird, gehört MicroSoft, wo Visual Studio Code hergestellt wird. Die Erfinder von Windows sind für alles gut, meist für nicht Gutes. Wobei VSC insgesamt gut ist, aber ...
Es ist einfach nur lästig, dass Tabs, also Dateien, einfach so ohne Nachfrage geschlossen werden. Es betrifft nämlich auch Dateien, die geöffnet, editiert und wieder neu gespeichert wurden, aber längere Zeit unberührt geöffnet blieben. Somit kann es also sein, wenn eine weitere Datei aus der linken Leiste geöffnet wird, irgendwo eine andere Datei geschlossen wird. Zack, weg! Man blickt überhaupt nicht mehr durch. Schon gar nicht dann, wenn man quasi parallel an mehreren Dateien arbeitet.
Die Dateien, die ich geöffnet habe, werden von mir auch genutzt. Nicht immer und die ganze Zeit, aber sie gehören zu meinem Projekt. Dateien, von denen ich glaube, sie nicht mehr nutzen zu müssen, die schließe ich selber.
Scheinbar habe ich endlich den Anpacker gefunden, um dieses nervige Verhalten von Visual Studio Code abzustellen. In den Einstellungen ist es dieser Abschnitt:
Der ist im Standard aktiv und bedeutet, dass ein Vorschaumodus erlaubt ist. Der Vorschaumodus bedeutet: nur gucken, nicht anfassen
Erst wenn eine Änderung vorgenommen und diese danach gespeichert wurde, ist für eine gewisse Zeit der Vorschaumodus nicht mehr aktiv.
Den Abschnitt habe ich nun deaktiviert und hoffe, dass damit die Tabs/Dateien geöffnet bleiben, die ich geöffnet haben möchte.
Es gibt noch eine weitere Einstellung, von der ich nicht so genau weiß, wie sie zu deuten ist:
Auch diese Einstellung habe ich deaktiviert, denn alles was automatisch läuft in Bezug auf das Öffnen und Schließen von Dateien, möchte ich nicht haben.
|
|
|
Mehrere Spalten modizifieren |
Geschrieben von: Joopi - 15-07-2023, 09:31 - Forum: Programmieren
- Keine Antworten
|
|
Heute hatte ich den Umstand, dass ich zwei Spalter in mehreren Tabellen mit dem Typ string angelegt hatte. Aber ich benötigte sie als Spalten vom Typ integer. Da ich mir bei dem warmen Wetter keine Fingerübungen geben wollte, war relativ schnell ermitteln, wie ich das in einem Befehl würde machen können.
Der Befehl lautet wie folgt:
Code: ALTER TABLE zawstat_browser MODIFY jahr INTEGER, MODIFY monat INTEGER;
Dieser Befehl musste nun 28 Mal wiederholt werden. Das konnte ich mit LibreOffice auch schnell und schlank regeln.
Code: A | B | C
1 | zawstat_browser | =VERKETTEN("ALTER TABLE ";B1;" MODIFY jahr INTEGER, MODIFY monat INTEGER;")
Die 28 in dieser Form erstellen mysql-Statements konnte ich dann en bloc einfügen und ausführen lassen. Fertig!
|
|
|
|