MyBB.de Forum
Ausgabe der pid aus query fehlerhaft - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html)
+--- Forum: Plugin-Diskussionen (https://www.mybb.de/forum/forum-38.html)
+--- Thema: Ausgabe der pid aus query fehlerhaft (/thread-34695.html)



Ausgabe der pid aus query fehlerhaft - Luna - 04.06.2017

Ich bin gerade dabei eine kleine hilfs-php für mein Forum zu schreiben, in dem ich unter anderem auch Links zu allen Posts in einem bestimmten Zeitraum erzeugen möchte. Das Funktioniert (nach langem rumprobieren) auch alles genau wie ich es möchte, bis auf den kleinen Umstand, dass der Link der erzeugt wird, zwar zu dem richtigen Thema, allerdings nicht direkt zu dem Post verlinkt. 

Es werden Zahlen eingetragen, allerdings stehen die in keinerlei Verbindung zum fraglichen Post oder Thema oder Forum in dem es gepostet ist. Ich habe das in der DB nachgesehen und bin echt überfragt woher diese random wirkenden Zahlen kommen. Ich kann sie mir echt nicht erklären. Die Zahlen 'müssten' im niedrigen 6-stelligen Bereich liegen, schwanken aber eher im 2-3-stelligen Bereich und dabei treten manche Zahlen vermehrt in verschiedensten Szenen auf (aufgefallen sind mir 12,26,27,68 und 401, die wie gesagt in den DB-Tabellen der fraglichen Posts wirklich nirgends vorkommen). 

Ich hoffe gerade, dass ich irgendeinen total dämlichen Anfängerfehler gemacht habe (das ist die erste php die ich ohne Tutorial für mich erstellt habe Blush ). 


PHP-Code:
<?php

define
("IN_MYBB"1);
require_once 
"./global.php";
require_once 
MYBB_ROOT."inc/class_parser.php";
    
    
add_breadcrumb("blacklisthilfe""blacklisthilfe.php");

// Zugang nur Admins erlauben
if( !($mybb -> user['additionalgroups'] = OR $mybb -> user['groups'] = 4) )
{
    
error_no_permission();


$name 'username';
$group 'usergroup';
$timesearch time() - 62*24*60*60// Filter für 2 Monate
$bluserliste "<strong>User mit 3 oder weniger Inplayposts in den letzten 62 Tagen:</strong> <br />";
$userliste "<strong>User mit 4 oder mehr Inplayposts in den letzten 62 Tagen:</strong> <br /><table>";

$ipforum $mybb->settings['inplaytracker_forum'];
$archiv $mybb->settings['inplaytracker_archiv'];
$communication $mybb->settings['inplaytracker_communication'];
$communicationarchiv $mybb->settings['inplaytracker_communicationarchiv'];

// Alle User in der entsprechenden Gruppe
$users $db->query("SELECT * FROM mybb_users WHERE $group = 8 ORDER BY $name ASC");

while(
$user $db->fetch_array($users)){
    
$blpostcount 0;
    
$userID $user['uid'];
    
$blposts $db->query("
        SELECT * FROM mybb_posts 
        LEFT JOIN mybb_threads ON mybb_threads.tid = mybb_posts.tid 
        LEFT JOIN mybb_forums ON mybb_forums.fid = mybb_threads.fid 
        WHERE mybb_posts.dateline > 
$timesearch
        AND mybb_posts.uid = 
$userID
        AND ( 
            (mybb_forums.parentlist LIKE '
$ipforum,%' AND !(mybb_forums.parentlist LIKE '%,$communication,%'))
            OR 
            (mybb_forums.parentlist LIKE '%,
$archiv,%' AND !(mybb_forums.parentlist LIKE '%,$communicationarchiv,%'))
        )
        ORDER BY mybb_posts.dateline DESC
    "
);
    
    
$lastpostlinks "<span style=\\\"font-size: 11px;\\\">";
    while(
$blpost $db->fetch_array($blposts)) {
        ++
$blpostcount
        
$lastpostlinks .= "[<a href=\\\"showthread.php?tid=".$blpost['tid']."&pid=".$blpost['pid']."#pid".$blpost['pid']."\\\">".$blpostcount."</a>] ";
    }
    
$lastpostlinks .= "</span>";
    
    if(
$blpostcount 4){
        
$bluserliste .= "# ".$user['username']." ".$blpostcount."/ ".$lastpostlinks."<br />";
    }
    else{
        
$userliste .= "<tr><td><center>".$blpostcount."</center></td><td>von ".$user['username']." ".$lastpostlinks."</td></tr>";
    }
}
$bluserliste .= "<br />";
$userliste .= "</table>";
eval(
"\$page = \"$bluserliste\";");
eval(
"\$page .= \"$userliste\";");
output_page($page);

?>


Würde mich freuen falls Jemand eine Idee hat woran das liegen könnte, oder mir einen Schubs in eine Richtung gibt, die Funktionieren könnte.

Liebe Grüße
Luna


RE: Ausgabe der pid aus query fehlerhaft - doylecc - 04.06.2017

Die pid aus deiner Abfrage ist nicht eindeutig, da es sowohl eine mybb_posts.pid gibt, als auch eine pid in der mybb_forums Tabelle, welche aber nicht die Post-ID ist, sondern die Parent-ID.
Wenn du nur die tid und die pid für den Lastposter-Link benötigst, dann solltest du auch nur diese abfragen, um ein eindeutiges Ergebnis zu erhalten, also anstatt:
PHP-Code:
SELECT FROM mybb_posts 

könntest du es mit:
PHP-Code:
SELECT mybb_posts.pidmybb_posts.tid FROM mybb_posts 

versuchen.


RE: Ausgabe der pid aus query fehlerhaft - Luna - 04.06.2017

Ahhhh also wirklich ein Anfängerfehler, ich frag mich wie ich das übersehen hab, als ich in der DB geschaut hab x3 bei den Abfragen bin ich mir noch immer sehr unsicher xD

Vielen, vielen Dank <3