Hallo, Gast! (Registrieren)

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


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste
ProPortal 2.6.2
(03.10.2021, 12:33)Gerti schrieb: Hallo,

hat jemand vllt. eine Lösung für das von Schnapsnase hier gepostete Problem? In diesem Thread ist zumindest keine Lösung gegeben.

Ich habe das von Schnapsnase geschilderte Problem sporadisch auch und wüde es gerne beseitigen. Aber wie?

Vorab Danke für jedwede Hilfestellung.

10 Sekunden den Code mit dem Handy überflogen:

Wahrscheinlich (nur eine Vermutung) sind in der session-Tabelle aufgrund von unterschiedlichen Anmeldungen mehrere Datensätze vorhanden. Ich würde anstatt select mal select distinct probieren oder es direkt über PHP regeln.
Zitieren
Betrifft: Zeilen 26 und 31
Wenn
$queries[] = $db->simple_select (...
zu
$queries[] = $db->simple_select distinct (...
abgeändert wird, dann ergibt sich daraus eine weiße Seite mit Ausgabe folgender Fehlermeldung im Log-File:
Zitat:PHP Parse error:  syntax error, unexpected 'distinct' (T_STRING) in /www/htdocs/xxxxxxxx/portal/blocks/block_wwo24.php on line 26
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
Funktioniert dieser Teil aus der wwo24.php überhaupt korrekt:

PHP-Code:
$queries[] = $db->simple_select(
    "users u LEFT JOIN ".TABLE_PREFIX."sessions s ON (u.uid=s.uid)"
    "s.sid, s.ip, s.time, s.location, u.*, u.uid, u.username, u.invisible, u.usergroup, u.displaygroup, u.avatar, u.lastactive",
    "u.lastactive >= '{$timesearch}{$order}"
);
$queries[] = $db->simple_select(
    "sessions s LEFT JOIN ".TABLE_PREFIX."users u ON (s.uid=u.uid)",
    "s.sid, s.ip, s.uid, s.time, s.location, u.*, u.username, u.invisible, u.usergroup, u.displaygroup, u.avatar, u.lastactive",
    "s.time >= '{$timesearch}{$order}"
); 

Laut MyBB Doku ist $db->simple_select nur für einfache Abfragen ohne JOIN gedacht.
Zitieren
// deleted
Zitieren
(04.10.2021, 13:08)Gerti schrieb: Betrifft: Zeilen 26 und 31
Wenn
$queries[] = $db->simple_select (...
zu
$queries[] = $db->simple_select distinct (...
abgeändert wird, dann ergibt sich daraus eine weiße Seite mit Ausgabe folgender Fehlermeldung im Log-File:
Zitat:PHP Parse error:  syntax error, unexpected 'distinct' (T_STRING) in /www/htdocs/xxxxxxxx/portal/blocks/block_wwo24.php on line 26
Selbstverständlich ergibt das einen PHP Fehler.
simple_select() ist der Name einer PHP-Funktion und muss so bestehen bleiben. Nur die zu übergebenen Parameter innerhalb der Klammer dieser Funktionen dürfen geändert werden. Mit deiner Änderung hast du den Namen der Funktion verändert und somit einen Syntaxfehler verursacht.
"DISTINCT" ist eine SQL-Deklaration und gehört mit zu den übergebenen Parameter für Tebellenfelder.
In diesem Falle müsste es also heißen:
Code:
simple_select("TABELLE", "distinct FELD, ..."[, ...])

(04.10.2021, 14:15)doylecc schrieb: Funktioniert dieser Teil aus der wwo24.php überhaupt korrekt:
[...]
Laut MyBB Doku ist $db->simple_select nur für einfache Abfragen ohne JOIN gedacht.
Du hast Recht,
die Funktion simple_select() kann zwar nur eine "eine Tabelle" abfragen, allerdings kann man ihr ohne Probleme einen JOIN unterjubeln, ohne dass dadurch die SQL-Syntax leidet. D.h. es würde trotzdem ein valides SQL-Statement herauskommen.
https://crossreference.mybb.de/inc/db_my....html#l752
Es mag sein, dass das von den Entwicklern so gewollt war oder ein passender Zufall. Jedenfalls sind alle möglichen Formen eines Joints sowohl machbar als auch brauchbar.

[ETS]
MyBB + innovative Themes:
NokiaPort.de Forum Nokia-Traditionsforum seit 2006.
Live Escape Game Forum Diskussionsplattform für Escape-Rooms.
Unlösbares Problem, Dilemma? -> das Nötel Smile
Zitieren
Gibt es eine Lösung für dass Problem?
lg Tc4me
Zitieren
Ich bin mir nicht ganz sicher und kann es selbst nicht testen...
Ändere mal in den Querys das >= in >
Prüfe mal, ob sich das auswirkt.
Zitieren
Soweit funktioniert es, ich beobachte mal ob ein Eintrag doppelt angezeigt wird
Danke Schnapsnase
Zitieren
Hallo,

wie gesagt, das Problem liegt an der mybb_sessions Tabelle. 

Fügt zum Start der while-Schleife folgenden Code ein bzw. ergänzt die While-Schleife in der Datei portal/blocks/block_wwo24.php in Zeile 37 um folgenden Code:

PHP-Code:
        $onlineUsersArray[] = $onlineuser['uid'];
        $counted array_count_values($onlineUsersArray);

        if ($counted[$onlineuser['uid']] > 1) {
            continue;
        

Viel Spaß damit Wink
Zitieren
@JAY

ich benutze in diesem Plugin einen sehr ähnlichen Code.
Zumindest sind die Querys fast identisch.
Wenn es wirklich an der Session-Tabelle liegt, müsste ja mein Plugin auch Probleme bereiten, tut es aber nicht. Wink
Zitieren