Beiträge: 1.136
Themen: 39
Registriert seit: 27.08.2014
(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.
Beiträge: 1.721
Themen: 177
Registriert seit: 08.02.2018
MyBB-Version: 1.8.37
04.10.2021, 13:08
(Dieser Beitrag wurde zuletzt bearbeitet: 04.10.2021, 13:10 von Gerti.)
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]
Beiträge: 2.041
Themen: 10
Registriert seit: 28.06.2007
MyBB-Version: 1.8.x
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.
Beiträge: 1.136
Themen: 39
Registriert seit: 27.08.2014
04.10.2021, 15:28
(Dieser Beitrag wurde zuletzt bearbeitet: 04.10.2021, 16:03 von itsmeJAY.)
// deleted
Beiträge: 837
Themen: 8
Registriert seit: 08.02.2016
MyBB-Version: 1.8.38
04.10.2021, 23:37
(Dieser Beitrag wurde zuletzt bearbeitet: 04.10.2021, 23:43 von [ExiTuS].
Bearbeitungsgrund: Tippfehler
)
(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]
Beiträge: 226
Themen: 10
Registriert seit: 06.03.2020
MyBB-Version: 1.8.27
Gibt es eine Lösung für dass Problem?
lg Tc4me
Beiträge: 2.267
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
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.
Beiträge: 226
Themen: 10
Registriert seit: 06.03.2020
MyBB-Version: 1.8.27
Soweit funktioniert es, ich beobachte mal ob ein Eintrag doppelt angezeigt wird
Danke Schnapsnase
Beiträge: 1.136
Themen: 39
Registriert seit: 27.08.2014
05.10.2021, 11:03
(Dieser Beitrag wurde zuletzt bearbeitet: 05.10.2021, 11:08 von itsmeJAY.)
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
Beiträge: 2.267
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
@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.
|