MyBB.de Forum

Normale Version: [Erledigt] Boardmessage: Anzeige von Umfrageergebnissen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich möchte in einer Boardmessage auf eine bestimmte Umfrage hinweisen und auch gleich die Anzahl der Teilnehmer anzeigen, die bereits abgestimmt haben.

Der Link ist ja kein Problem, aber die Anzeige von {$votes} bekomme ich nicht hin, denn die muss ja irgendwie auf diesen ganz bestimmten Poll zeigen.

Habe ich da eine Chance?
Dazu muss die Teilnehmeranzahl in der Plugindatei aus der Datenbank ausgelesen werden. Die Variable $votes ist in der Pluginausgabe nicht definiert.
Ojeh, PHP!

Wenn ich dich richtig verstehe muss ich in der boardmsg.php eine query einfügen, die das Feld numvotes aus mybb_polls ausliest. Dann kann ich im Template die Variable $numvotes verwenden, wobei ich die pid des polls fest eingeben muss.

Richtig? Aber wie ist die Syntax für diese DB-Abfrage? Kann mir da jemand helfen?
PHP-Code:
$query $db->query("SELECT numvotes FROM ".TABLE_PREFIX."polls WHERE pid = 'x'");
$result $db->fetch_array($query); 
Ersetze x durch die ID der Umfrage. Danach steckt die Anzahl der Abstimmungen in der Variablen $result['numvotes']. Diese kannst du im Template benutzen.
Und wo muss der Code hin?

Wenn ich ihn in function boardmsg() einfüge (in den if Bereich), kommt mein Board nicht mehr hoch.

Unter function boardmsg_activate() funktioniert zwar das plugin, aber ich bekomme nur den String {$result['numvotes']} angezeigt, nicht den Wert der Variablen.

Ich habe auch versucht, $result als global zu definieren - hilft nicht.

Was mache ich falsch?
hugin schrieb:Wenn ich ihn in function boardmsg() einfüge (in den if Bereich), kommt mein Board nicht mehr hoch.
Die Stelle ist richtig. Du musst zusätzlich die Variable $db bei den globals am Anfang der Funktion hinzufügen.
Hallo Michael, habe ich gemacht, und sicherheitshalber dann auch noch $query als Variable deklariert. Das Board kommt damit jetzt hoch, aber die Variable wird weiterhin als String {$result['numvotes']} angezeigt.

Hier der Code:
Zitat:function boardmsg()
{
global $mybb, $templates, $boardmsg, $db, $result, $query;

if($mybb->settings['showboardmsg'] != 'off')
{
$boardmessage = $mybb->settings['boardmsg'];
eval("\$boardmsg = \"".$templates->get('global_boardmsg')."\";");
$query = $db->query("SELECT numvotes FROM ".TABLE_PREFIX."polls WHERE pid = '5'");
$result = $db->fetch_array($query);
}
}

Hast du noch eine Idee?
1. Die Variablen $result und $query brauchst du nicht in die globals einzufügen.

2. Du lädtst erst das Template (die Zeile mit eval(...)) und führst dann den Query aus. Das muss getauscht werden, da beim Laden die Variablen ersetzt werden. Wenn du diese erst danach definierrst klappt das natürlich nicht. Wink
Jetzt hab ich:

Zitat:function boardmsg()
{
global $mybb, $templates, $boardmsg, $db;

if($mybb->settings['showboardmsg'] != 'off')
{
$query = $db->query("SELECT numvotes FROM ".TABLE_PREFIX."polls WHERE pid = '5'");
$result = $db->fetch_array($query);
$boardmessage = $mybb->settings['boardmsg'];
eval("\$boardmsg = \"".$templates->get('global_boardmsg')."\";");
}
}

Aber das Ergebnis ändert sich nicht. Seufz!
Befindet sich die Variable {$result['numvotes']} im Template global_boardmsg oder im Text, der vom Plugin ausgegeben werden soll?

Trifft der zweite Fall ein, ersetze {$result['numvotes']} im Text durch einen Platzhalter, z.B. #NUMVOTES#. Diesen lässt du dann noch im Code ersetzen:
PHP-Code:
function boardmsg()
{
    global 
$mybb$templates$boardmsg$db;

    if(
$mybb->settings['showboardmsg'] != 'off')
    {
        
$query $db->query("SELECT numvotes FROM ".TABLE_PREFIX."polls WHERE pid = '5'");
        
$result $db->fetch_array($query);
        
$boardmessage str_replace("#NUMVOTES#"$result['numvotes'], $mybb->settings['boardmsg']);
        eval(
"\$boardmsg = \"".$templates->get('global_boardmsg')."\";");
    }

Seiten: 1 2