Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.27 veröffentlicht (22.06.21)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Sprache des ACP (Backend) auslesen?
#21
(26.10.2020, 19: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... Wink 
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, 21:09)itsmeJAY schrieb: Dadurch hätte ich den obigen Kollegen aber wieder den Code vermiest. Wink

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. Big Grin
Zitieren
#22
(26.10.2020, 21: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ß
Zitieren
#23
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.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#24
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?
Jammer nicht rum ...Du musst (k/m)eine Hilfe (nicht) annehmen!
MyBB: 1.8.27 | PHP: 7.4.19 | SQL: 5.7.34
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [301] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner]
Zitieren
#25
Du müsstest den update-query so ausführen, dass nur leere Felder gefüllt werden. Wink
Wofür eigentlich die zusätzliche DB-Abfrage zu "bblanguage"?
Das muss doch auch so gehen:
PHP-Code:
$var mybb->settings['bblanguage']; 
Zitieren
#26
(27.10.2020, 13:10)Schnapsnase schrieb: Du müsstest den update-query so ausführen, dass nur leere Felder gefüllt werden. Wink
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.
Jammer nicht rum ...Du musst (k/m)eine Hilfe (nicht) annehmen!
MyBB: 1.8.27 | PHP: 7.4.19 | SQL: 5.7.34
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [301] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner]
Zitieren
#27
(27.10.2020, 14: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.
Zitieren
#28
Was ist $mybb->users für eine Variable? Woher kommt die?
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#29
(27.10.2020, 13: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, 13: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=''");

Zitieren
#30
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.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren