Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
IF SQL-Abfrage funktioniert in einem Forum (nicht)!
#1
Hallo,

ich habe in einer includeten PHP-Datei eine Anweisung wie folgt:
PHP-Code:
global $mybb;
if (empty(
$mybb->user['avatar'])) {
  Hinweistext

Ergebnis:
Ist die Spalte "avatar" des Users leer, bekommt er einen Hinweistext, ist sie nicht leer dann keinen Hinweistext.

Das funktioniert in einem Forum fehlerfrei, in einem anderen Forum jedoch nicht.

In beiden Foren ist beim Testuser die Spalte definitiv ohne Inhalt.

Negiere ich
PHP-Code:
!empty 
wird es im funktionierenden Forum invers behandet (=korrekt) und im nichtfunktionierendem Forum bei allen Usern (=inkorrekt) der Hinweistext angezeigt.

Irgendwie klappt die Auswertung/Unterscheidung in dem einen Forum nicht. *grübel

Wie könnte man diesem Fehlverhalten auf die Schliche kommen?

Vllt. hat da jemand einen Tipp oder Hinweis was ich eventuell nicht beachtet haben könnte.

Danke vorab.
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]
Zitieren
#2
$mybb->user['avatar'] bezieht sich auf das eigene Avatar. Was willst du denn erreichen?

Die Variable für das Avatar ist auch nicht überall einheitlich.
Wenn, dann musst du evtl. dies benutzen:
PHP-Code:
$mybb->settings['useravatar'
oder
PHP-Code:
{$avatar
oder z.B.
PHP-Code:
{$memprofile['avatar']} 
Zitieren
#3
(22.03.2022, 16:26)Schnapsnase schrieb: $mybb->user['avatar'] bezieht sich auf das eigene Avatar.
Es soll sich ja nur auf das eigene Avatar (Definition = vorhanden oder nicht vorhanden) beziehen.
(22.03.2022, 16:26)Schnapsnase schrieb: Was willst du denn erreichen?
Wie im funktionierenden Beispiel
PHP-Code:
global $mybb;
if (empty(
$mybb->user['avatar'])) {
  
Hinweistext

bereits aufgezeigt, sollen alle User welche kein Avatar haben einen Hinweistext erhalten.
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]
Zitieren
#4
Lass doch mal den Avatar-Wert ausgeben, um zu sehen, warum er offenbar nicht leer ist, ab besten vor der IF Abfrage einfügen:
PHP-Code:
var_dump($mybb->user['avatar']); 
Zitieren
#5
(22.03.2022, 19:06)Gerti schrieb:
(22.03.2022, 16:26)Schnapsnase schrieb: $mybb->user['avatar'] bezieht sich auf das eigene Avatar.
Es soll sich ja nur auf das eigene Avatar (Definition = vorhanden oder nicht vorhanden) beziehen.

Ich verstehe deine Aussage nicht.
$mybb->user['avatar'] ist dein Avatar, wenn du eingeloggt bist.
Falls in diesem Theme das Default-Avatar greift, hast du trotzdem ein Avatar, obwohl das Setting
Code:
$mybb->settings['useravatar'] 
leer ist.
Also greif doch dieses Setting ab und prüfe es auf "leer". Damit hast du doch das Problem erschlagen.

Dir geht es doch hier aber nicht um den Avatar des eingeloggten Users, sondern um den User-Avatar allgemein?!
Was möchtest du wo darstellen - war auch meine Ursprungsfage?!
Zitieren
#6
(22.03.2022, 19:54)Schnapsnase schrieb: $mybb->user['avatar'] ist dein Avatar, wenn du eingeloggt bist.
das ist auch das angestrebte Ziel. Es soll dem angemeldetem User ein Hinweistext ausgegeben werden.
(22.03.2022, 19:54)Schnapsnase schrieb: Falls in diesem Theme das Default-Avatar greift, hast du trotzdem ein Avatar, obwohl das Setting
Code:
$mybb->settings['useravatar']
leer ist.
In beiden Foren ist in der Tabelle mybb->settings die Tabelle useravatar in der Spalte value mit images/default_avatar.png definiert.



(22.03.2022, 19:26)doylecc schrieb:
PHP-Code:
var_dump($mybb->user['avatar']); 
Danke für den Tipp.

Testergebnis:
Ausgabe beim Forum wo es korrekt funktioniert mit:
eigenem Avatar = Avatar: string(50) "./uploads/avatars/avatar_1.png?dateline=1644476937"
ohne Avatar = string(0) ""

Ausgabe beim Forum wo es inkorrekt funktioniert mit:
eigenem Avatar = string(50) "./uploads/avatars/avatar_2.png?dateline="1612525123"
ohne Avatar = string(25) "images/default_avatar.png"
(warum  wird hier eine andere Tabelle/Spalte ausgegeben? Verschiebe ich das default_avartar.png z.B. in den Ordner ./uploads, wird es mir beid er Ausgabe ./uploads/default_avatar.png angezeigt!)

In beiden Foren sind die ACP-Einstellungen hierzu identisch und in der Datenbank die Tabelle/n mybb->users in der/n Spalte/n "avatar" definitiv leer.

Vielleicht hilft das Testergebnis, die Fehlerquelle einzukreisen.
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]
Zitieren
#7
Hallo,

hast du eventuell in dem Forum (bei dem es nicht funktioniert) eine Funktion ähnlich meines MyBB Default-Avatar-Fix Plugins oder eine JS-Funktion eingebaut, die Usern ohne Avatar temporär den Default-Avatar zuordnet, eingebaut??
Zitieren
#8
@[b]SvePu[/b]
Volltreffer, genau das war des Rätsels Lösung. Irgendwann wurde mal das PlugIn installiert, dass dies die Problemursache ist, wäre ich nie drauf gekommen.
Habe es jetzt deaktiviert und es funktioniert wie gewünscht. Smile

Ganz herzlichen Dank an alle welche sich für die Lösungsfindung zu dem (letztlich selbst verursachten) Problem eingebracht 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]
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  "Task" > SQL-Befehl funktioniert nicht Gerti 7 2.863 30.11.2020, 16:59
Letzter Beitrag: Gerti
  "Index Anzeige" nach SQL abfrage.. MecQ 4 2.035 13.04.2013, 21:53
Letzter Beitrag: MecQ