*hust* kleiner Denkfehler meinserseits.
$cpath = "../phpBB2"; // Pfadkorrektur (kein / am Ende!)
Beiträge von Eckard41
-
-
Die Pfadangaben, die den Template-Variablen übergeben werden beziehen sich alle auf die standardmäßige phpBB-Struktur. Das kannst du aber korrigieren, indem du die relativen Pfadangaben bei den Functions append_sid() jeweils abänderst.
Ich hab nun mal an allen entsprechenden Stellen eine Variable gesetzt, dich du im Kopf des Scripts definieren kannst, falls sich die Verzeichnisstruktur nochmal ändert:Zitat<?php
/***************************************************************************
* adv_top5.php
* -------------------
* Contains GPL code copyright of phpBB group.
*
* MOD Name: Top5 topics
* Author: OOHOO
* Version: 1.x.x for phpBB 2 Beta serial
* Version: 2.0.0 for phpBB 2 RC serial
* Version: 2.1.0 for phpBB 2.0.0
*
* Author: iamelton
* Version: 2.2.0 for hypercell effect in display
*
***************************************************************************//***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. --- $phpbb_root_path = "./";
*
***************************************************************************/define('IN_PHPBB', true);
$phpbb_root_path = "../phpBB2/";
$cpath = "..phpBB2"; // Pfadkorrektur (kein / am Ende!)
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);//
// Mod setting
//
// Topics text length
$MAX_STR_LEN = 30;
// Topics to display
$MAX_TOPICS = 10;
// 0 => users can see all topics including authorized issue(but they cant read the posts)
// 1 => users can see only authorized topics
$AUTH_SECRUITY = 1;function cutStr($str) {
global $MAX_STR_LEN;
$str = (strlen($str) > $MAX_STR_LEN) ? (substr($str, 0, $MAX_STR_LEN - 1) . "...") : $str;
return $str;
}//
// gzip_compression
//
$do_gzip_compress = FALSE;
if($board_config['gzip_compress'])
{
$phpver = phpversion();if($phpver >= "4.0.4pl1")
{
if(extension_loaded("zlib"))
{
ob_start("ob_gzhandler");
}
}
else if($phpver > "4.0")
{
if(strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip'))
{
if(extension_loaded("zlib"))
{
$do_gzip_compress = TRUE;ob_start();
ob_implicit_flush(0);header("Content-Encoding: gzip");
}
}
}
}header ("Cache-Control: no-store, no-cache, must-revalidate");
header ("Cache-Control: pre-check=0, post-check=0, max-age=0", false);
header ("Pragma: no-cache");
header ("Expires: " . gmdate("D, d M Y H:i:s", time()) . " GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX, $session_length);
init_userprefs($userdata);
//
// End session management
//// Find which forums are visible for this user
$is_auth_ary = array();
$is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata);$auth_forum_ary = array();
// Get forum info
$sql = "SELECT forum_id FROM " . FORUMS_TABLE;if( !$q_forums = $db->sql_query($sql) )
{
message_die(GENERAL_MESSAGE, 'ADV_TOP5 MOD ERROR!!');
}// Authorized forums info
while( $forum_row = $db->sql_fetchrow($q_forums) )
{
$forum_id = $forum_row['forum_id'];if( $is_auth_ary[$forum_id]['auth_read'] == 1)
{
array_push($auth_forum_ary, $forum_id);
}
}if( sizeOf($auth_forum_ary) == 0
!$AUTH_SECRUITY )
{
$auth_forums = "";
}
else
{
$auth_forums = 'AND f.forum_id IN(';if(sizeOf($auth_forum_ary) > 1)
{
$auth_forums .= implode (',', $auth_forum_ary);
}
else
{
$auth_forums .= $auth_forum_ary[0];
}$auth_forums .= ')';
}// select mode
switch($mode)
{
case 'last':
$sortby = "topic_last_post_id";
break;
case 'hot':
$sortby = "topic_views";
break;
case 'top':
$sortby = "topic_replies";
break;
default:
$sortby = "topic_last_post_id";
$mode = "last";
break;
}// nav links
$last_link = ( ($mode == "Beitraege") ? "<font style=\"{color: #ff006e}\">« letzte Beiträge $MAX_TOPICS »</font>" : ('[url='' . append_sid(']letzte Beiträge[/url]'));
$hot_links = ( ($mode == "Aufrufe") ? "<font style=\"{color: #ff006e}\">« meiste Aufrufe $MAX_TOPICS »</font>" : ('[url='' . append_sid(']meiste Aufrufe[/url]'));
$top_links = ( ($mode == "Antworten") ? "<font style=\"{color: #ff006e}\">« meiste Antworten $MAX_TOPICS »</font>" : ('[url='' . append_sid(']meiste Antworten[/url]'));// set template
$template->set_filenames(array("body" => "adv_top5_body.tpl"));$template->assign_vars(array(
"icon_url" => $images['icon_latest_reply'],
"icon_alt" => $lang['View_latest_post'],
"nav_links" => "$last_link $hot_links $top_links"
));// query
$sql = "SELECT topic_id, topic_title, topic_poster, topic_views, topic_replies, topic_last_post_id, f.forum_id, forum_name
FROM " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f
WHERE t.forum_id = f.forum_id
AND topic_moved_id = '0'
$auth_forums
ORDER BY $sortby DESC LIMIT 0, $MAX_TOPICS";if( !$result = $db->sql_query($sql) )
{
echo '<p align="center"><font color="red">ADV_TOPN_MOD TOPICS QUERY ERROR!!</font></p>';
exit;
}// fetch rows
while( $rows = $db->sql_fetchrow($result) )
{
$topic_url = append_sid("$cpath/viewtopic.$phpEx?t=" . $rows['topic_id']);
$forum_url = append_sid("$cpath/viewforum.$phpEx?f=" . $rows['forum_id']);$topic_poster = $rows['topic_poster'];
$topic_last_post_id = $rows['topic_last_post_id'];// Grab topic poster and last replier data
$sql = "SELECT post_username, user_id, username
FROM " . POSTS_TABLE . ", " . USERS_TABLE . "
WHERE topic_id = '" . $rows['topic_id'] . "'
AND poster_id = user_id
ORDER BY post_id LIMIT 0, 1";if( !$p_result = $db->sql_query($sql) )
{
message_die(GENERAL_MESSAGE, 'ADV_TOP5 MOD TOPIC_POSTER QUERY ERROR!!');
}$p_row = $db->sql_fetchrow($p_result);
$poster_name = ( $topic_poster != ANONYMOUS ) ? $p_row['username'] : ( !$p_row['post_username'] ? $lang['Guest'] : $p_row['post_username']);
$poster_url = ( $topic_poster != ANONYMOUS && !$p_row['post_username'] ) ? ('[url='' . append_sid(']' . "$poster_name[/url]") : $poster_name;$sql = "SELECT post_username, user_id, username, post_time
FROM " . POSTS_TABLE . ", " . USERS_TABLE . "
WHERE post_id = '$topic_last_post_id'
AND poster_id = user_id";if( !$r_result = $db->sql_query($sql) )
{
message_die(GENERAL_MESSAGE, 'ADV_TOP5 MOD LAST_REPLIER QUERY ERROR!!');
}$r_row = $db->sql_fetchrow($r_result);
$replier_id = $r_row['user_id'];
$replier_name = ( $replier_id != ANONYMOUS ) ? $r_row['username'] : ( !$r_row['post_username'] ? $lang['Guest'] : $r_row['post_username']);
$replier_url = ( $replier_id != ANONYMOUS && !$r_row['post_username'] ) ? ('[url='' . append_sid(']' . "$replier_name[/url]") : $replier_name;$last_post_url = append_sid("$cpath/viewtopic.$phpEx?p=$topic_last_post_id#$topic_last_post_id");
$template->assign_block_vars("toprow", array(
"forum_name" => $rows['forum_name'],
"forum_url" => $forum_url,
"topic" => cutStr($rows['topic_title']),
"topic_url" => $topic_url,
"topic_views" => $rows['topic_views'],
"topic_replies" => $rows['topic_replies'],
"post_time" => create_date($board_config['default_dateformat'], $r_row['post_time'], $board_config['board_timezone']),
"poster_url" => $poster_url,
"replier_url" => $replier_url,
"last_post_url" => $last_post_url
));
}$template->assign_vars(array(
'S_CONTENT_DIRECTION' => $lang['DIRECTION'],
'S_CONTENT_ENCODING' => $lang['ENCODING'],'T_HEAD_STYLESHEET' => $theme['head_stylesheet'],
'T_BODY_BGCOLOR' => '#'.$theme['body_bgcolor'],
'T_BODY_TEXT' => '#'.$theme['body_text'],
'T_BODY_LINK' => '#'.$theme['body_link'],
'T_BODY_VLINK' => '#'.$theme['body_vlink'],'T_TR_COLOR1' => '#'.$theme['tr_color1'],
'T_TR_COLOR2' => '#'.$theme['tr_color2'],
'T_TD_COLOR1' => '#'.$theme['td_color1'],
'T_TD_COLOR2' => '#'.$theme['td_color2'],'L_FORUM' => $lang['Forum'],
'L_TOPICS' => $lang['Topics'],
'L_REPLIES' => $lang['Replies'],
'L_AUTHOR' => $lang['Author'],
'L_VIEWS' => $lang['Views'],
'L_POSTS' => $lang['Posts'],
'L_LASTPOST' => $lang['Last_Post']
));//
// Generate the page
//
//$gen_simple_header = TRUE;//include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$template->pparse("body");
$db->sql_close();
//
// Compress buffered output if required
// and send to browser
//
if($do_gzip_compress)
{
//
// Borrowed from php.net!
//
$gzip_contents = ob_get_contents();
ob_end_clean();$gzip_size = strlen($gzip_contents);
$gzip_crc = crc32($gzip_contents);$gzip_contents = gzcompress($gzip_contents, 9);
$gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4);echo "\x1f\x8b\x08\x00\x00\x00\x00\x00";
echo $gzip_contents;
echo pack("V", $gzip_crc);
echo pack("V", $gzip_size);
}exit;
?> -
-
-
Das Problem besteht einfach darin, dass der Webspace kein PHP unterstützt bzw noch nicht unterstützt. Jedenfalls wird der gesamte Phpcodevon phpBB nicht ausgeführt sondern nur als HTML-Datei angezeigt. Eventuell liegt es auch bloß an der Dateiendung und nur Dateien, die mit *.php3 enden werden interpretiert. Das kann ich mir allerdings kaum vorstellen. Frag doch mal bei deinem Hoster nach. PHP wird bei dir im Augenblick definitiv nicht ausgeführt.
-
Angenommen A1: 8:00 (Format: HH:MM), B1: 9:30 (Format: HH:MM),
dann schreibt du in C1 =(B1-A1)*24 und wählst Zahl als Format => 1,5. -
Vielleicht ShowMessage("Sie Haben " + a + " Punkte erreicht");
Keine Garantie, ich hab leider keine Erfahrungen mir Visual C++ (?). -
VB ... Word? Du meinst VBA!? Oder greifst du tatsächlich mit VBScript per CreateObject auf Word zu?
Poste doch mal den Quellcode. -
Bist du sicher, dass das nach dieser Methode und nicht nach dem Intervallschachtelungsverfahren gemacht werden soll?
Der Anfang ist zwar gleich, aber wesentlich genauer trifft man das Ergebnis wenn man bis auf eine bestimmte Zahl weiter zwischen nächst kleinerer und größerer Quadratzahl einschränkt.Ich hab das nun mal nach deine Erklärung in C++ gebastelt, kenne diese Methode zur Wurzelbestimmung allerdings nicht.
C
Alles anzeigen#include <iostream.h> #include <conio.h> int main() { int input = 0; int minor_square = 0; int major_square = 0; int square_minor = 0; int diff_i2minor = 0; int diff_i2major = 0; int abs_diff = 0; cin >> input; for (int i = 1; i <= input; i++) { major_square = i * i; if (major_square == input) { minor_square = major_square; break; } else { if (major_square < input) { minor_square = major_square; } else { break; } } } diff_i2minor = input - minor_square; diff_i2major = major_square - input; abs_diff = major_square - minor_square; for (int n = 1; n < minor_square; n++) { if (n * n == square) { square_minor = n; } } cout << square_minor + (double) diff_i2minor/abs_diff; getch(); }
Zitatwie findet das programm herraus, welche quadratzahlen die eingegebene zahl umklammern?
Naja, natürlich könnte man eine vordefinierte Wurzelfunktion verwenden, allerdings könnte man damit das ganze Programm in einen AUdruck fassen, was allerdings witzlos wäre. Hier geht es schließlich um das Berechnungsprinzip.
Ich würde einfach in einer Schleife von 1 bis Eingabe (im Beispiel 11) die Zählvariable quadrieren und schauen, ob sie den Wert der Eingabe überschreitet. Außerdem speicherst du die jeweils die Quadratzahl aus dem letzten Durchgang. Dadurch erhälst du dein Intervall.
Und ja, der Compiler beherrscht Punkt vor Strich. -
Falls du tatsächlich eine Referer-Abfrage meintest, also die Seite nur sichtbar werden soll, wenn von einer anderen (bestimmten) Seite gelinkt wurde, sieht das ähnlich aus:
Allerdings wird der Referer vom Browser gesetzt und lässt sich auch manipulieren. Das ganze ist also nicht wirklich zuverlässig!
Der Code von gonzales dagegen ist zuverlässig, bzw. erlaubt den Aufruf tatsächlich nur von einer bestimmten IP. Allerding handelt es sich dabei um die IP des Besuchers, nicht der des Servers, von dem der User deine Seite aufgerufen hat. -
Die primitivste Möglichkeit wäre natürlich, 2 komplette Websites in Deutsch und Englisch zu erstellen. Aber da du das ganzen schon in diesem Bereich postest, geh ich mal davon aus, dass du die Möglichkeiten von PHP auch ausnutzen möchtest.
Allerdings gibt kann man nicht einfach ein Script in den Kopf jeder Seite setzen, sondern muss die komplette Website dafür aufbauen. Ich würde dir eine Template-Engine empfehlen. D.h. du trennst erstens PHP-Code vom Design und vorallem Inhalt vom Design.
Jeden Text, der auf deiner Seite angezeigt wird, definierst du in einer Templatevariable und nichtmehr in HTML bzw. dem Designbereich.
Beispiel: -
Rechtsklick -> Öffnen mit -> Editor
Falls du dann eine Menge unübersichtlicher Zeichen in einer Zeile zusammengequetscht erhälst, wurde die Datei mit Unix-Zeilenumbrüchen erstellt:
Dev-PHP downloaden & installieren -> Datei mit Dev-PHP öffnen. -
Indem du die Antworten im entsprechenden Feld jeweils mit ";" voneinander trennst.
-
Hab den Code oben editiert... sollte nun ohne Fehlermeldung funktinieren.
-
Entweder mit phpmyadmin -> SQL ->
CodeCREATE TABLE `tbl_questions` ( `id` INT NOT NULL AUTO_INCREMENT , `questions` TEXT NOT NULL , `answers` TEXT NOT NULL , `right_answer` INT NOT NULL , PRIMARY KEY ( `id` ))
oder per Code:
PHP
Alles anzeigen<?php $db = mysql_connect("host", "user", "PW"); mysql_select_db("Datenbankname", $db); mysql_query("CREATE TABLE `tbl_questions` ( `id` INT NOT NULL AUTO_INCREMENT , `questions` TEXT NOT NULL , `answers` TEXT NOT NULL , `right_answer` INT NOT NULL , PRIMARY KEY ( `id` ))"); mysql_close($db); ?>
(Hoffe ich hab keine Tippfehler im Code) -
Das ganze funktioniert mal wieder mit der gdlib-Bibliothek. Vereinfacht gesagt nimmt PHP kontinuierlich die Besucherdaten auf (entweder in eine Datenbank oder eine Datei) und erstellt bei jedem Aufruf der Seite eine Bilddatei. Darauf wird dann das Diagramm "gezeichnet".
Ganz grob: Eine feste Breite mit z.B. 7 Tagen, rechts einen Maßstab, der abhängig ist vom niedrigsten und höchsten Besucherstand innerhalb dieser 7 Tage und dann noch etwas Code, der anhand des Maßstabes die tatsächlichen Besucherzahlen in Balkenlängen umrechnet und diese ins Bild zeichnet.
Es gibt hier sicher schon fertige Scripts oder Klassen, die man verwenden und umbauen könnte. Welche konkreten Vorstellungen hast du denn für das Diagramm? -
So, nun aber endlich das Script mit Adminbereich. Natürlich von der Darstellung die absolute Rohform. Am besten arbeitest du beim Einsetzen des Designs hauptsächlich mit CSS. Hab schon ein paar CSS-Klassen in der HTML-Ausgabe festgelegt.
PHP
Alles anzeigen<?php class questions { /* Datenmodell */ /* tbl_questions (4 columns) --+--id--+---Frage---+---Antworten---+---Richtige Antwort---+-- | | | | | --+------+-----------+---------------+----------------------+-- CREATE TABLE `tbl_questions` ( `id` INT NOT NULL AUTO_INCREMENT , `questions` TEXT NOT NULL , `answers` TEXT NOT NULL , `correct_answ` INT NOT NULL , PRIMARY KEY ( `id` )) */ /* <Konfiguration> */ var $dbhost = "localhost"; var $dbname = "db1"; var $dbuser = "root"; var $dbpasswd = "cisab_lausiv"; var $admin_pw = "cisab_lausiv"; /* </Konfiguration> */ var $dbconn; var $cnt; Var $rate; /* Konstruktor (DB-Verbindung, Intialisierung usw...) */ function questions () { $this->dbconn = mysql_connect($this->dbhost, $this->dbuser, $this->dbpasswd) or die (mysql_error()); mysql_select_db($this->dbname, $this->dbconn) or die (mysql_error()); } function get_questions ($limit, $show_answers) { $cnt = 1; $row = false; $arr_answers = array(); $limit = ($limit == 0) ? "" : "LIMIT $limit"; $sql = "SELECT * FROM tbl_questions $limit"; if ( !($result = mysql_query($sql)) ) { echo "Fehler beim Auflisten der Fragen: SQL: " . mysql_error(); } while ($row = mysql_fetch_object($result)) { $msg = ""; $rate = 0; $cnt2_chr = "a"; $cnt2_num = 1; $arr_answers = explode(";", $row->answers); /* Ausgabe... */ echo "<fieldset><table border=\"0\" cellspacing=\"0\" cellpadding=\"1\">\n"; echo "<tr><th>Frage NR. $cnt : $row->questions</th></tr>\n"; echo "<tr><td>\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"1\">\n"; if ($show_answers == true && isset($_POST['qu' . $cnt]) && $_POST['qu' . $cnt] == $row->right_answer) { $msg = "Ihre Antwort war korrekt!"; $this->rate++; } elseif ($show_answers == true) { $msg = "Ihre Antwort war leider falsch!"; } foreach ($arr_answers as $answer) { $user_answer = ""; if ($show_answers == true && $cnt2_num == $row->right_answer) { $user_answer = "<span style=\"color: green\">[richtige Antwort]</span>"; } elseif ($show_answers == true && isset($_POST['qu' . $cnt]) && $cnt2_num == $_POST['qu' . $cnt]) { $user_answer = "<span style=\"color: red\">[Ihre Antwort]</span>"; } echo "<tr><td><input type=\"radio\" name=\"qu" . $cnt . "\" value=\"$cnt2_num\" />Antwort $cnt2_chr) : $answer $user_answer</td></tr>"; $cnt2_chr++; $cnt2_num++; } echo "</table>\n</td></tr>\n"; echo "</table></fieldset>\n$msg\n \n"; $cnt++; } $this->cnt = $cnt; } /* Destruktor (Offene Verbindungen schliessen etc...)*/ function destruct () { mysql_close($this->dbconn); $this->cnt--; $this->rate = ($this->rate == 0) ? "0" : $this->rate; } /* Admin-Functions */ function admin_get_questions() { $cnt = 1; $row = false; $arr_answers = array(); $sql = "SELECT * FROM tbl_questions"; if ( !($result = mysql_query($sql)) ) { echo "Fehler beim Auflisten der Fragen: SQL: " . mysql_error(); } while ($row = mysql_fetch_object($result)) { echo "<fieldset><table border=\"0\" cellspacing=\"0\" cellpadding=\"1\">\n"; echo "<tr><th>Frage NR. $cnt :[Löschen<input type=\"checkbox\" name=\"del$cnt\" />]<input name=\"quid$cnt\" type=\"hidden\" value=\"$row->id\" /> <textarea class=\"admin\" name=\"qu$cnt\">$row->questions</textarea></th></tr>\n"; echo "<tr><td>Antworten (getrennt durch \";\"): <textarea class=\"admin\" name=\"ans$cnt\">$row->answers</textarea></td></tr>\n"; echo "<tr><td>Richtige Antwort (1, 2, 3...): <input type=\"text\" name=\"right_ans$cnt\" value=\"$row->right_answer\" /></td></tr>\n"; echo "</table></fieldset>\n \n"; $cnt++; } return $cnt-=1; } } ?> <html> <head> <title></title> </head> <body> <?php $questions = new questions; if (isset($_POST['admin_send'])) { for ($i=1;$i<=$_POST['quges'];$i++) { $id = $_POST['quid' . $i]; if (isset($_POST['del' . $i])) { echo "DELETE $id"; $sql = "DELETE FROM tbl_questions WHERE id='$id' LIMIT 1"; } else { $sql = "UPDATE tbl_questions SET questions='" . $_POST['qu' . $i] . "', answers='" . $_POST['ans' . $i] . "', right_answer='" . $_POST['right_ans' . $i] . "' WHERE id='$id'"; } if ( !($result = mysql_query($sql)) ) { echo "Fehler beim Updaten der Frage $i: SQL: " . mysql_error(); } } if (isset($_POST['newqu'])) { $sql = "INSERT INTO tbl_questions (questions, answers, right_answer) VALUES ('" . $_POST['newqu'] . "', '" . $_POST['newans'] . "', '" . $_POST['newright_ans'] . "')"; if ( !($result = mysql_query($sql)) ) { echo "Fehler beim Anlegen einer neuen Frage: SQL: " . mysql_error(); } } } if (isset($_POST['admin']) && $_POST['password'] == $questions->admin_pw) { ?> <form name="admin" action="<?=$_SERVER['PHP_SELF']?>" method="post"> <?php $quid = $questions->admin_get_questions(); echo "<input name=\"quges\" type=\"hidden\" value=\"$quid\" />"; $questions->destruct(); echo "<fieldset><table border=\"0\" cellspacing=\"0\" cellpadding=\"1\">\n"; echo "<tr><th>Neue Frage : <textarea class=\"admin\" name=\"newqu\"></textarea></th></tr>\n"; echo "<tr><td><textarea class=\"admin\" name=\"newans\"></textarea></td></tr>\n"; echo "<tr><td><input type=\"text\" name=\"newright_ans\" /></td></tr>\n"; echo "</table></fieldset>\n \n"; echo "<input name=\"admin_send\" type=\"submit\" value=\"Absenden\" />"; ?> </form> <?php } else { $mode = false; $error = ""; $name = ""; $surname = ""; $date = ""; if (isset($_POST['submit'])) { $mode = true; if (empty($_POST['name'])) { $error = " Bitte den Namen eingeben!"; $mode = false; } else { $name = $_POST['name']; } if (empty($_POST['surname'])) { $error .= " Bitte den Nachnamen eingeben!"; $mode = false; } else { $surname = $_POST['surname']; } if (empty($_POST['date'])) { $error .= " Bitte ein Datum eingeben!"; $mode = false; } else { $date = $_POST['date']; } } ?> <form name="questions" action="<?=$_SERVER['PHP_SELF']?>" method="post"> <fieldset> <table border="0" cellspacing="0" cellpadding="0"> <tr> <td>Name:</td><td><input type="text" name="name" value="<?=$name?>" /> </td> </tr> <tr> <td>Nachname:</td><td><input type="text" name="surname" value="<?=$surname?>" /></td> </tr> <tr> <td>Datum:</td><td><input type="text" name="date" value="<?php if (!$date) {echo date("d.m.Y");} else {echo $date;} ?>" /></td> </tr> </table> <span style="color: red"><?=$error?></span> </fieldset> <?php $questions->get_questions(0, $mode); $questions->destruct(); if ($mode) echo $questions->rate . " von " . $questions->cnt . " Antworten korrekt [". $questions->rate / $questions->cnt * 100 ."%]. \n"; if (!$mode) echo "<input type=\"submit\" name=\"submit\" value=\"Absenden\" />"; ?> </form> <form name="admin" action="<?=$_SERVER['PHP_SELF']?>" method="post"> <table border="0" cellspacing="0" cellpadding="0"> <tr> <th>Admininstrator-Login</th> </tr> <tr> <td><input type="password" name="password" /></td> </tr> <tr> <td><input type="submit" name="admin" value="Login" /></td> </tr> </table> </form> <?php } ?> </body> </html>
-
Dann nimm eine der Zeilen raus, welche spielt keine Rolle.
-
Kein Problem, wie gesagt das war nur mal schnell geschrieben.
zum Bugfix:
Diese Variable/Eigenschaft kommt anscheinend 2 mal vor. Eine dieser Zeilen soll gelöscht werden.
Wenn deine upload.php allerdings tatsächlich bereits so aussieht, wie du sie gepostet hast, brauchst du nichts mehr zu ändern. -
Hab dir mal etwas gebastelt. Bisher ohne Adminbereich, wird aber noch folgen, sobald ich etwas mehr Zeit habe.
PHP
Alles anzeigen<?php class questions { /* Datenmodell */ /* tbl_questions (4 columns) --+--id--+---Frage---+---Antworten---+---Richtige Antwort---+-- | | | | | --+------+-----------+---------------+----------------------+-- CREATE TABLE `tbl_questions` ( `id` INT NOT NULL AUTO_INCREMENT , `questions` TEXT NOT NULL , `answers` TEXT NOT NULL , `right_answer` INT NOT NULL , PRIMARY KEY ( `id` )) */ /* <Konfiguration> */ var $dbhost = "xxx"; var $dbname = "xxx"; var $dbuser = "xxx"; var $dbpasswd = "xxx"; var $admin_pw = ""; var $admin_user = ""; var $correct_answer = ""; /* </Konfiguration> */ var $dbconn; var $cnt; Var $rate; /* Konstruktor (DB-Verbindung, Intialisierung usw...) */ function questions () { $this->dbconn = mysql_connect($this->dbhost, $this->dbuser, $this->dbpasswd) or die (mysql_error()); mysql_select_db($this->dbname, $this->dbconn) or die (mysql_error()); } function get_questions ($limit, $show_answers) { $cnt = 1; $row = false; $arr_answers = array(); $limit = ($limit == 0) ? "" : "LIMIT $limit"; $sql = "SELECT * FROM tbl_questions $limit"; if ( !($result = mysql_query($sql)) ) { echo "Fehler beim Auflisten der Fragen: SQL: " . mysql_error(); } while ($row = mysql_fetch_object($result)) { $msg = ""; $rate = 0; $cnt2_chr = "a"; $cnt2_num = 1; $arr_answers = explode(";", $row->answers); /* Ausgabe... */ echo "<fieldset><table border=\"0\" cellspacing=\"0\" cellpadding=\"1\">\n"; echo "<tr><th>Frage NR. $cnt : $row->question</th></tr>\n"; echo "<tr><td>\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"1\">\n"; if ($show_answers == true && isset($_POST['qu' . $cnt]) && $_POST['qu' . $cnt] == $row->right_answer) { $msg = "Ihre Antwort war korrekt!"; $this->rate++; } elseif ($show_answers == true) { $msg = "Ihre Antwort war leider falsch!"; } foreach ($arr_answers as $answer) { $right = ""; if ($show_answers == true && $cnt2_num == $row->right_answer) { $right = $this->correct_answer; } echo "<tr><td><input type=\"radio\" name=\"qu" . $cnt . "\" value=\"$cnt2_num\" />Antwort $cnt2_chr) : $answer<span style='color: green'>$right</span></td></tr>"; $cnt2_chr++; $cnt2_num++; } echo "</table>\n</td></tr>\n"; echo "</table></fieldset>\n$msg\n \n"; $cnt++; } $this->cnt = $cnt; } /* Destruktor (Offene Verbindungen schliessen etc...)*/ function destruct () { mysql_close($this->dbconn); $this->cnt--; $this->rate = ($this->rate == 0) ? "0" : $this->rate; } } ?> <?php if (isset($_POST['submit'])) { $mode = true; } else { $mode = false; } ?> <html> <head> <title></title> </head> <body> <form name="questions" action="<?=$_SERVER['PHP_SELF']?>" method="post"> <?php $questions = new questions; $questions->get_questions(0, $mode); $questions->destruct(); if ($mode) echo $questions->rate . " von " . $questions->cnt . " Antworten korrekt [". $questions->rate / $questions->cnt * 100 ."%]. \n"; ?> <input type="submit" name="submit" value="Absenden" /> </form> </body> </html>
Beispiel: http://area53.dyndns.org/questions.php