Beiträge: 2.239
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
26.10.2020, 20:25
(Dieser Beitrag wurde zuletzt bearbeitet: 26.10.2020, 21:02 von Schnapsnase.)
(26.10.2020, 18:01)Gerti schrieb: Wenn $mybb->users['language'] = "leer" (somit default) dann fülle $mybb->users['language'] mit
mybb->settings['bblanguage']
(ist default).
Sollte bereits eine Sprachangabe in $mybb->users['language'] vorhanden sein, soll diese belassen werden.
Ich weiß mittlerweile nicht mehr welche Deiner Abfragen für welche Funktion gut sein soll, aber egal...
Prinzipiell ist Dein Ansinnen doch nichts Anderes, wie wir im o.g. Code bereits ausführen.
Du musst es nur umschreiben.
Du ließt ein DB-Feld "language" aus und schreibst es in eine Variable.
Dann prüfst Du, ob die Variable leer ist. Wenn ja, dann ist:
PHP-Code: $var = mybb->settings['bblanguage'];
(26.10.2020, 20:09)itsmeJAY schrieb: Dadurch hätte ich den obigen Kollegen aber wieder den Code vermiest.
Wie kommst Du darauf?
Wenn mein o.g. Code Sch... ist, darfst Du mir das ehrlich sagen.
Anderenfalls hätte es auch genügt, mir kurz den Unterschied zu erklären. Bin noch lernfähig.
Beiträge: 1.136
Themen: 39
Registriert seit: 27.08.2014
(26.10.2020, 20:21)StefanT schrieb: Das stimmt aber nicht, query und write_query werden für verschiedene Zwecke verwendet.
Die korrekte Verwendung siehst du beispielsweise bei simple_select und update_query.
Verstehe ich nicht so ganz. Wenn ich einen Query selber schreiben will anstatt über vorgegebene Methoden und Parameter abzuschicken, kanm $db->query verwendet werden. Die offizielle Doku sagt aber, dass $db->write_query() bevorzugt werden sollte.
Zitat aus der Entwickler Doku:
"write_query is now preferred over query."
Also was genau hat dies mit einem Update oder select query zutun? Verstehe den Zusammenhang nicht.
Gruß
Beiträge: 25.762
Themen: 269
Registriert seit: 20.09.2005
Der Sinn einer Master-Slave-Replication ist es, Lese- und Schreiboperationen auf verschiedene Server zu verteilen. Auf einem Slave kann (darf!) nur gelesen werden, auf dem Master wird nur geschrieben.
query spricht den Slave an (SELECT), write_query den Master (UPDATE, DELETE,...). Besser ist es bei einfachen Datenbankabfragen die vom MyBB bereitgestellten Methoden zu verwenden, dann muss man sich darüber keine Gedanken machen und man unterstützt meist gleich noch die anderen Datenbank-Systeme.
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 1.709
Themen: 177
Registriert seit: 08.02.2018
MyBB-Version: 1.8.37
27.10.2020, 12:01
(Dieser Beitrag wurde zuletzt bearbeitet: 27.10.2020, 12:02 von Gerti.)
Habe es jetzt soweit gebracht:
Mit:
PHP-Code: $query_bblanguage = $db->simple_select("settings", "value", "name='bblanguage'"); $bblanguage = $db->fetch_field($query_bblanguage, "value"); if(empty($mybb->users['language'])) { $db->update_query("users", array("language" => ($bblanguage))); }
wird bei allen Usern die Spalte " langauge" mit " bblanguage" gefüllt, egal ob etwas anderes bereits in der Spalte enthalten ist oder nicht.
Es soll aber bei den Users die Spalte " langauge" mit " bblanguage" nur gefüllt werden, wenn die Spalte langauge auch leer ist
Verwende ich:
PHP-Code: if(!empty($mybb->users['language'])) {
werden die leeren Spalten nicht gefüllt! Die Spalten welche bereits etwas beinhalten bleiben unangetastet.
Was ist bei der "IF-Definition" falsch?
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools ◀ [ Unixzeit ⇔ Realzeit] ♦ [ BOM-Finder] ♦ [ SQL-Prefix-Changer] ♦ [ USV-Rechner] ♦ [ PlugIns]
Beiträge: 2.239
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
27.10.2020, 12:10
(Dieser Beitrag wurde zuletzt bearbeitet: 27.10.2020, 12:14 von Schnapsnase.)
Du müsstest den update-query so ausführen, dass nur leere Felder gefüllt werden.
Wofür eigentlich die zusätzliche DB-Abfrage zu "bblanguage"?
Das muss doch auch so gehen:
PHP-Code: $var = mybb->settings['bblanguage'];
Beiträge: 1.709
Themen: 177
Registriert seit: 08.02.2018
MyBB-Version: 1.8.37
27.10.2020, 13:03
(Dieser Beitrag wurde zuletzt bearbeitet: 27.10.2020, 13:22 von Gerti.)
(27.10.2020, 12:10)Schnapsnase schrieb: Du müsstest den update-query so ausführen, dass nur leere Felder gefüllt werden.
Wofür eigentlich die zusätzliche DB-Abfrage zu "bblanguage"?
Das muss doch auch so gehen:
PHP-Code: $var = mybb->settings['bblanguage'];
Sorry, das mag zwar sein, aber ich bin da nicht der Profi. Wie muss in meinem Fall das Ergebnis von "var" verwendt in Verbindung mit der IF-Definition verwendet wreden? Mea Cupla, aber mit für mich Halbinformationen komme leider nicht zurecht. Wie Du unschwer erkennen kannst, habe ich mir zumindest Gedanken gemacht es irgendwie umzusetzen.
Ich will lediglich ein bereits existierendes PlugIn in vielen Funktonen zum Wohle aller MyBB-Anwender erweitern. Das ist noch bei einigen anderen PlugIns angedacht. Mit jedem Projekt (demnächst Usermap mit drei farbigen Points) erweitert sich Dank Eurer Hilfe nicht nur die Funktionalität eines PlugIns, sondern auch die Attraktiviät MyBB zu verwenden. Wenn jedoch hier im Forum intensive Programmkenntnisse (die ich nun mal nicht habe, vorausgesetzt werden, bzw. detaillierte Anfragen mit einer Auszugsdefiniton beantwortet werden, respektiere ich das und sehe von meinen weiteren Vorhaben gerne ab.
Besten Dank an alle die bisher geholfen haben.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools ◀ [ Unixzeit ⇔ Realzeit] ♦ [ BOM-Finder] ♦ [ SQL-Prefix-Changer] ♦ [ USV-Rechner] ♦ [ PlugIns]
Beiträge: 2.239
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
27.10.2020, 13:34
(Dieser Beitrag wurde zuletzt bearbeitet: 27.10.2020, 13:58 von Schnapsnase.)
(27.10.2020, 13:03)Gerti schrieb: ...bzw. detaillierte Anfragen mit einer Auszugsdefiniton beantwortet werden,...
Sorry, das ist keine Auszugsdefinition. Ich habe hier lediglich ein Setting in eine Variable geschrieben.
Evtl. auch, um Dir zu zeigen, dass diese Information auch ohne DB-Abfrage bereits vorhanden ist und Du nur mit dieser eigenen Variable weiterarbeiten musst.
Ich bin auch kein Programmierer und habe nur versucht, Dir Denkanstöße zu geben.
Ich bin jetzt raus aus dieser Thematik. Ich wünsche Dir trotzdem weiterhin viel Erfolg mit diesem Projekt.
In der global.php Zeile 57-77 gibt es sicher auch noch hilfreiche Infos für Dich.
Beiträge: 25.762
Themen: 269
Registriert seit: 20.09.2005
27.10.2020, 14:49
(Dieser Beitrag wurde zuletzt bearbeitet: 27.10.2020, 14:49 von StefanT.)
Was ist $mybb->users für eine Variable? Woher kommt die?
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 2.041
Themen: 10
Registriert seit: 28.06.2007
MyBB-Version: 1.8.x
27.10.2020, 16:53
(Dieser Beitrag wurde zuletzt bearbeitet: 27.10.2020, 16:54 von doylecc.)
(27.10.2020, 12:01)Gerti schrieb: Habe es jetzt soweit gebracht:
Mit:
PHP-Code: $query_bblanguage = $db->simple_select("settings", "value", "name='bblanguage'"); $bblanguage = $db->fetch_field($query_bblanguage, "value"); if(empty($mybb->users['language'])) { $db->update_query("users", array("language" => ($bblanguage))); }
wird bei allen Usern die Spalte "langauge" mit "bblanguage" gefüllt, egal ob etwas anderes bereits in der Spalte enthalten ist oder nicht.
Es soll aber bei den Users die Spalte "langauge" mit "bblanguage" nur gefüllt werden, wenn die Spalte langauge auch leer ist
Die wird jetzt bei allen gefüllt, weil du keine WHERE Klausel in der Update-Query hast.
(27.10.2020, 12:01)Gerti schrieb: Verwende ich:
PHP-Code: if(!empty($mybb->users['language'])) {
werden die leeren Spalten nicht gefüllt! Die Spalten welche bereits etwas beinhalten bleiben unangetastet.
Was ist bei der "IF-Definition" falsch?
Wenn du die Spalte bei allen Usern füllen willst, die keine eigene Sprache eingestellt haben, brauchst du eigentlich nur sowas wie:
PHP-Code: $query_bblanguage = $db->simple_select("settings", "value", "name='bblanguage'"); $bblanguage = $db->fetch_field($query_bblanguage, "value"); if(!empty($bblanguage)) { $db->update_query("users", array("language" => $db->escape_string($bblanguage)), "language=''"); }
Beiträge: 25.762
Themen: 269
Registriert seit: 20.09.2005
27.10.2020, 17:10
(Dieser Beitrag wurde zuletzt bearbeitet: 27.10.2020, 17:11 von StefanT.)
Warum will man das überhaupt machen? Eine leere Sprache ist nicht nur eine gültige Auswahlmöglichkeit sondern sogar der vorausgewählte Standard. Ein Plugin sollte daran nicht rumfummeln, für die gewünschte Funktionalität sehe ich da auch keine Notwendigkeit.
Einen Fallback muss man immer einbauen, denn in der Datenbank kann durchaus eine Sprache gespeichert sein, die nicht mehr installiert ist.
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
|