Beiträge: 34
Themen: 9
Registriert seit: 27.09.2007
MyBB-Version: 1.2.9
23.10.2007, 13:58
(Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2007, 20:44 von hugin.)
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!
Beiträge: 18.383
Themen: 257
Registriert seit: 09.02.2005
Dazu muss die Teilnehmeranzahl in der Plugindatei aus der Datenbank ausgelesen werden. Die Variable $votes ist in der Pluginausgabe nicht definiert.
Gruß,
Michael
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Beiträge: 34
Themen: 9
Registriert seit: 27.09.2007
MyBB-Version: 1.2.9
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!
Beiträge: 18.383
Themen: 257
Registriert seit: 09.02.2005
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
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Beiträge: 34
Themen: 9
Registriert seit: 27.09.2007
MyBB-Version: 1.2.9
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!
Beiträge: 18.383
Themen: 257
Registriert seit: 09.02.2005
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
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Beiträge: 34
Themen: 9
Registriert seit: 27.09.2007
MyBB-Version: 1.2.9
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!
Beiträge: 18.383
Themen: 257
Registriert seit: 09.02.2005
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.
Gruß,
Michael
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Beiträge: 34
Themen: 9
Registriert seit: 27.09.2007
MyBB-Version: 1.2.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!
Beiträge: 18.383
Themen: 257
Registriert seit: 09.02.2005
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
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.