MyBB.de Forum

Normale Version: ProPortal 2.6.2
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
(03.10.2021, 13: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.
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
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.
// deleted
(04.10.2021, 14: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, 15: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]
Gibt es eine Lösung für dass Problem?
lg Tc4me
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.
Soweit funktioniert es, ich beobachte mal ob ein Eintrag doppelt angezeigt wird
Danke Schnapsnase
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
@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