Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.8 veröffentlicht (17.10.16)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
[Erledigt] Boardmessage: Anzeige von Umfrageergebnissen
#1
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?
MyBBoard.de - hier werden Sie geholfen!
Zitieren
#2
Dazu muss die Teilnehmeranzahl in der Plugindatei aus der Datenbank ausgelesen werden. Die Variable $votes ist in der Pluginausgabe nicht definiert.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#3
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?
MyBBoard.de - hier werden Sie geholfen!
Zitieren
#4
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.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#5
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?
MyBBoard.de - hier werden Sie geholfen!
Zitieren
#6
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.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#7
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?
MyBBoard.de - hier werden Sie geholfen!
Zitieren
#8
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

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#9
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!
MyBBoard.de - hier werden Sie geholfen!
Zitieren
#10
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')."\";");
    }


Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Erledigt/Nicht erledigt Button Mato 4 361 21.11.2015, 12:14
Letzter Beitrag: Mato
  Erledigt-Anzeige wie hier im Board Domic 33 5.999 16.09.2015, 20:28
Letzter Beitrag: truthmayvary
  Plugin Boardmessage libertad 6 1.026 26.09.2006, 15:47
Letzter Beitrag: libertad