ich habe zwei SQL Abfragen von verschiedenen Tabellen. Die beiden Abfragen sollen ins Template gesendet werden. Das ganze sieht so aus bisher:
Code: Alles auswählen
<!-- BEGIN umfrage -->
Inhalt ... {umfrage.TITEL} .. weiterer Inhalt
Dann kommt der zweite Teil, in dem die zweite Datenbank-Abfrage dort rein soll:
Code: Alles auswählen
<!-- BEGIN umfragepolls -->
Inhalt... {umfragepolls.AUSWAHL_ID} ... weiterer Inhalt
<!-- END umfragepolls -->
<!-- END umfrage -->
var_dump($template)
) Die Abfrage und das Anzeigen im Template von der ersten Abfrage (umfrage) klappt super. Muss ich im PHP-Code irgendwie die Abfrage mit umfragepolls noch verschachteln in die Abfrage umfrage damit das so klappt?Hier nochmal der PHP-Code (Abfrage weiter unten bei switch; Datei noch lange nicht fertig, daher noch keine Sicherheitsaspekte):
Code: Alles auswählen
<?php
/**
*
* @author Original Autor mps info@raphael-priebe.de - http://raphael-priebe.de
*
* @package {PACKAGENAME}
* @version 2.1.0
* @copyright (c) 2014 Raphael Priebe
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
/**
* @ignore
*/
// Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Session auslesen und Benutzer-Informationen laden
$user->session_begin(); // Session auslesen
$auth->acl($user->data); // Benutzer-Informationen laden
$user->setup('mods/umfrage'); // Sprachvariablen aus eigener Sprach Datei laden
/*
* Nun folgt erst Dein PHP Code für die neue Seite, also:
* Variablen setzen, Datenbankabfragen, Einfügen und Entfernen von Einträgen usw...
*
* Dies ist nun ein sehr primitives Beispiel.
* Es soll nur veranschaulichen wie es funktioniert.
*
*/
//GET_VARIABLEN
$mode = request_var('mode', '');
$mode = isset($mode) ? $mode : 'watch';
$mode = trim($mode) == '' ? 'watch' : $mode;
$aktuelle_umfrage = $config['aktuelle_umfrage'];
/*
* Modes:
*
* watch=aktuelle Umfrage ansehen (wenn bereits abgestimmt, dann ergebnisse sehen, wenn nicht, dann antwortmöglichkeiten)
* see=aktuelle Umfrage ansehen
* vote=aktuelle Stimme speichern (Datenbank-Update und Form-action)
* archiv=alte umfragen ansehen
* results=ergebnisse sehen
*/
if($mode == "watch" || $mode == "see") {
if ($user->data['user_id'] == ANONYMOUS)
{
$show_result_link = true;
} else {
//Abfrage ob der Result-Link angezeigt werden soll
$result = $db->sql_query("SELECT show_link FROM ". U_TABLE ." WHERE umfrage_id = '" . $config['aktuelle_umfrage'] ."';");
while($row = $db->sql_fetchrow($result))
{
$showresultlink = $row['show_link'];
if($showresultlink = 1){
$show_result_link = true;
}
elseif ($showresultlink = 0){
$show_result_link = false;
}
else {
echo "Show-Result-Link enthält einen falschen Wert! Seiten-Aufbau abgebrochen. Bitte kontaktiere einen Administrator.";
die;
}
} //ENDE
}}
//Wenn Modus watch, dann soll dieser bei Gästen auf see gesetzt werden
if ($user->data['user_id'] == ANONYMOUS && $mode == "watch") {
$mode = "see";
}
elseif ($user->data['user_id'] != ANONYMOUS && $mode ="watch") { //Wenn Modus watch, soll bei Usern entschieden werden, ob bereits abgestimmt (MODUS RESULTS) oder noch nicht abgestimmt (MODUS SEE) worden ist
$result = $db->sql_query("SELECT * FROM " . U_VOTES_TABLE . " WHERE umfrage_id = 1 AND user_vote = 2;");
if (mysqli_num_rows($result) == 0) {
$mode = "see";
$uservoteallready = false;
}
elseif (mysqli_num_rows($result) >= 1) {
$mode = "results";
$uservoteallready = true;
}
else {
echo "Es ist ein schwerwiegender Fehler aufgetreten. mysqli_num_rows sind nicht 0 oder +1, sondern:";
$rowsnum = mysqli_num_rows($result);
echo "$rowsnum";
exit;
}
} //ENDE
//GET umfrage_id wenn erforderlich
if ($mode == "see" || $mode == "results"){
$umfrage_id = request_var('poll', 0);
//Fülle umfrage_id wenn leer mit aktueller Umfrage
if ($umfrage_id == "0" || $umfrage_id == ""){
$umfrage_id = $aktuelle_umfrage;
}
}
//ENDE
//Teste ob noch Berechtigung für "see" gegeben ist
if ($uservoteallready === true && $mode == "see" && $user->data['user_id'] != ANONYMOUS){
$mode = "results";
$error = "allreadyvoted";
}
//ENDE
// Teste ob Berechtigung für "results" gegeben ist
if ($uservoteallready === false && $mode == "results" && $user->data['user_id'] != ANONYMOUS && $show_result_link == false){
$mode = "see";
$error = "allreadyvoted";
}
//ENDE
switch($mode){
//Jetzt werden die erforderlichen Aktionen in PHP je nach MODE ausgeführt. Mode-Liste steht oben
case('see'):
$result = $db->sql_query("SELECT * FROM " . U_TABLE . " WHERE umfrage_id = '" . $umfrage_id . "'");
while($row = $db->sql_fetchrow($result))
{
$template->assign_block_vars('umfrage', array(
'UMFRAGE_ID' => $row['umfrage_id'],
'TITEL' => $row['titel'],
'MAX_VOTES' => $row['max_votes'],
'MIN_VOTES' => $row['min_votes'],
'SHOW_LINK' => $row['show_link'],
));
}
$result = $db->sql_query("SELECT * FROM " . U_POLLS_TABLE . " WHERE umfrage_id = '" . $umfrage_id . "'");
while($row = $db->sql_fetchrow($result))
{
$template->assign_block_vars('umfragepolls', array(
'AUSWAHL_ID' => $row['auswahl_id'],
'TITEL' => $row['title'],
));
}
break;
case('results'):
break;
case('archiv'):
break;
case('vote'):
break;
default:
echo "Es ist ein schwerwiegender Fehler aufgetreten. Die Variable mode ist verkehrt (aktueller Wert: $mode ). Bitte kontaktiere einen Techniker!";
exit;
break;
}
// Ein typischer Gebrauch um Variablen an das Template zu senden.
$template->assign_vars(array(
'SRL' => $show_result_link,
'MODE' => $mode,
));
// Seiten Titel, diese Sprach Variable sollte in der Sprach Datei,
// welche weiter oben genannt wurde, definiert sein.
page_header($user->lang['MEIN_TITEL']);
// Defniere nun den Dateinamen Deines Templates welches Du benutzen moechtest.
// Dies ist der Name von Deinem Template welches unter /styles/<style>/templates/ zu finden ist.
$template->set_filenames(array(
'body' => 'umfrage.html',
));
// Script vervollständigen und Seite anzeigen lassen.
page_footer();
?>
Gruß,
mps