knoedel
02.07.2001, 13:10
ZUSATZANMERKUNG !! toxic hat ein paar \ (Backslashes) ins Posting eingebaut damit die Zeilen nicht zu lang werden, die müssen alle entfernt werden !!! Sonst gehts nicht !! Joel
hmmm,
ich hab jetzt mal aus Spass angefangen ein kleine Board zu programmieren um mal wieder in HTML/php/MySQL ein bischen Übung und Routine zu bringen. Aber es ist dann doch relativ viel Arbeit und ausserdem brauchts ja auch eine Menge Ideen, die einer allein nicht haben kann. Also rufe ich hier mal jeden dazu auf mit zu coden. Ich hab mir das so gedacht das alles sehr modular aufgebaut ist damit man nicht viel ändern muss wenn man was ändern will sondern einfach ein paar kleine Module dazubastelt bzw. rausnimmt oder ersetzt. Einen kleinen Grundstock an Modulen ahb ich schon allerding weder schön gecoded noch mit Fehlerabfangen usw. Nun ja ich hab mir das so vorgestellt dass jeder der ein Modul beisteuern will oder beisteuert es hier postet (Die UBB-CODE TAGS nicht vergessen) und es kommentiert, so gut wie es geht, dann können Leute die noch nicht so gut php/MySQL/HTML können auch was lernen können, denn dafür ist es auch gedacht Denn bis es richtig nutzbar ist dauert wohl noch etwas :D
Also hier mal meine Codeteile, einfach zusammen in ein Directory des Webservers kopieren und dann das admintools.html ausführen damit hat man alle Funktionen im Überblick.
admintools.html
<html><head><title>Admintool's</title></head>
<frameset cols="170,*">
<frame src="admintools.php" name="menu">
<frame src="index.html" name="main">
</frameset>
<noframes>Ihr Browser unterstützt leider keine Frames.
</noframes>
</html>
Um die Frames aufzubauen.
LICENSE.html
<html><head><title>TODO-List</title></head>
<body bgcolor=#4169e1 text=#ffffaa link=#ffff00 vlink=#ffaa00>
Die Linzenzen diseses Programmpaketes stehen unter der GPL. <br>
Nachzulesen unter http://www.gnu.org/copyleft/gpl.html
Und ich hab damit angefangen, also bitte meinen Namen immer erwähnen :)
mfg. Jonas 'JoelH' Hoffmann 2001
</body></html> die Lizenz.
TODO.html
<html><head><title>TODO-List</title></head>
<body bgcolor=#4169e1 text=#ffffaa link=#ffff00 vlink=#ffaa00>
TODO-List fuer Joels Bulletin Board <br><br>
Was geht :<br>
<ul>
<li>v0.0.1 01.07.2001 <br>
Grundlagen, noch funzt fast garnichts ausser die Forenübersicht
<li>v0.0.2 02.07.2001 <br>
anlegen.php hinzugefügt, man kann jetzt automatisch die Tables erzeugen lassen. <br>
forumeinrichten.php und einrichten.php zugefügt um Foren erstellen zu können. <br>
admintools.php .html zugefügt um etwas übersicht zu erhalten. <br>
usereinrichten.php .html zugefügt, geht momentan nur manuell. <br>
</ul>
<br><br>
Was gibts zu tun : <br>
<ul>
<li> Es ist zuviel zu tun als das man es hier alles anführen könnte. Momentan fehlen<br>
auch die meisten Fehlerabfangroutinen aber das wird in der ersten Debugphase eingebaut, <br>
erstmal muss man ja dem User die Chance geben was Fehler zu suchen.
</ul></body></html> die TODO-list.
admintools.php
<html><head><title>Admintool's</title></head>
<?php
include ('color.inc');
?>
Admin-Menu :<br><br>
<a href="anlegen.php" target="main">Datenbank anlegen</a><br><br>
<a href="forumeinrichten.php" target ="main">Forum anlegen</a><br><br>
<a href="usereinrichten.html" target="main">User einrichten</a><br><br>
<a href="index.html" target="main">Zum Board</a><br>
</body></html>Das Admin Menü.
anlegen.php
<html><head><title>Datenbank anlegen</title></head>
<?php
include ('color.inc');
include ('mysqlvar.inc');
$db = @mysql_connect ($dbserver,$dbuser,$dbpass);
if ($db)
{
mysql_create_db ($dbname);
mysql_select_db ($dbname,$db);
$query = "CREATE TABLE foren (fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, forenname VARCHAR(40)\
NOT NULL, moderator VARCHAR(15), privat CHAR(1) NOT NULL DEFAULT 'o')";
$result = mysql_query ($query,$db);
$query = "CREATE TABLE topics (fid INT NOT NULL, tid INT NOT NULL AUTO_INCREMENT\
PRIMARY KEY, topicname VARCHAR(40) NOT NULL, erstellerid INT NOT NULL)";
$result = mysql_query ($query,$db);
$query = "CREATE TABLE user (erstellerid INT not null AUTO_INCREMENT, username VARCHAR (50) not null , pseudonym\
VARCHAR (15) not null , email VARCHAR (35) not null , homepage VARCHAR (40) , passwort VARCHAR (10) not null ,\
status INT DEFAULT '1' not null , PRIMARY KEY (erstellerid), UNIQUE (pseudonym))";
$result = mysql_query ($query,$db);
$query = "CREATE TABLE topicbeitraege (tid INT NOT NULL, eid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, beitrag TEXT \
NOT NULL, erstellerid INT NOT NULL, datum DATE NOT NULL, uhrzeit TIME NOT NULL)";
$result = mysql_query ($query,$db);
mysql_close($db);
echo 'Die Datenbank '.$dbname.' wurde erfolgreich erzeugt !';
}
?>
</body></html>Dieses Script legt die Boarddatenbank und die dazugehörigen Tabelen an.
boardname.inc
<?php
$boardname='JBB v0.0.2';
?>Dies ist der Name des Boards, damit man ihn leichter ändern kann in einer include Datei.
color.inc
<?php
echo'<body bgcolor=#4169e1 text=#ffffaa link=#ffff00 vlink=#ffaa00>';
?> das include das die Farben des Boards bestimmt.
dbfunctions.inc
<?php
function showforen()
{
global $dbserver,$dbuser,$dbpass,$dbname;
$db=@mysql_connect( $dbserver,$dbuser,$dbpass);
if (!$db)
{ echo'Keine Verbindung zum Datenbankserver :('; }
if ($db)
{ mysql_select_db($dbname,$db);
$query = 'SELECT * FROM foren';
$result = mysql_query($query,$db);
if ($result)
{ $number = mysql_num_rows($result);
echo '<br><br>';
echo '<TABLE BORDER=1>';
echo '<tr><td>Forennummer</td><td>Forenname</td><td>Moderator</td><td>Privat?</td><td>Eintreten</td></tr>';
$counter = 1;
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo '<tr><td>';
echo implode('<td>',$row);
$beta = "showforum.php?forum=".$counter;
echo '<td><a href="',$beta,'">Betreten</a>';
$counter++;
echo '</tr>';
}
echo '</TABLE>';
}
else { echo '<p>'.mysql_error($db);}
mysql_close($db);
}
}
?> Diese Include-Script war gedacht um Datenbankfunctionen einzutragen die öfter gebraucht werden. Momentan ist nur diese eine Function drin und die wird im foren.php gebraucht um die den Forenindex anzuzeigen.
einrichten.php
<html><head><title>Forum einrichten</title></head>
<?php
include ('color.inc');
include ('mysqlvar.inc');
$db = mysql_connect($dbserver,$dbuser,$dbpass);
if ($db)
{ mysql_select_db ($dbname,$db);
$pr = 'o';
if ($privat=='on') { $pr='p'; }
$query = " INSERT INTO foren (fid, forenname, moderator, privat) VALUES ('', '".$neuesforum."', '".$moderator."', '".$pr."')";
$result = mysql_query($query,$db);
if ($result) { echo 'Forum wurde eingefügt'; }
}
mysql_close($db);
?> Diese Script fügt ein neues Forum ins Board ein , es wird von forumeinrichten.php aufgerufen.
foren.php
<html><head><title>Forenindex JBB</title></head>
<?php
include('color.inc');
include('mysqlvar.inc');
include('boardname.inc');
include('dbfunctions.inc');
echo'<br><center><h1>Willkomen auf dem '.$boardname.' Bulletin Board !</h1>';
echo'<br><br>Forenübersicht<br><br>';
showforen();
echo'</body></html>';
?> gibt den Forenindex/übersicht aus, dort kann man in die einzelnen Foren kommen.
forumeinrichten.php
<html><head><title>Forum einrichten</title></head>
<?php
include ('color.inc');
?>
<form action="einrichten.php" method=post>
Forenname : <input type=text name="neuesforum" maxlength=40 size=40><br>
Moderator : <input type=text name="moderator" maxlength=15 size=15><br>
<input type=checkbox name="privat"><br>
<input type=submit value="Forum erzeugen">
</form></body></html>hier gibt man die Daten für ein neues Forum ein wenn man eins erstellen will.
index.html
<HTML><HEAD><TITLE>Joels Bulletin Board v 0.0.1</TITLE></HEAD>
<body bgcolor=#4169e1 text=#ffffaa link=#ffff00 vlink=#ffaa00>
<br><br><br><br><br><br>
<center><h1>Joels Bulletin Board v0.0.1</h1></center><br>
<h3><center>coded by Jonas 'JoelH' Hoffmann in 2001</center><br>
<center><a href="foren.php">come in</a></center></h3>
<body><html> das indexfile welches den normalen User aufs Board bringen soll, kann auch als Disclaimer usw. verwendet werden.
mysqlvar.inc
<?php
$dbserver='localhost:3306';
$dbuser='root';
$dbpass='';
$dbname='boardt1';
?> hier stehen die Verbindungsdaten zum SQL Server drin und der Datenbankname.
showforum.php
<html><head><title>Forum Anzeigen</title></head>
<?php
include ('color.inc');
include ('mysqlvar.inc');
include ('boardname.inc');
?> das ist noch ein Dummy da bin ich gerade dran, das soll die Topicübersicht ergeben wenn man ein Forum betritt. Es wird von der foren.php aus aufgerufen im Style http://jbb/showforen.php?forum=2 forum ist dabei die Variable die angibt welches Forum ausgegebne werden soll, dies ist die Spalte tid in der Tabele topics, dazu werde ich später noch genauere ausführen machen.
usereinrichten.html
<html><head><title>User einrichten</title></head>
<body bgcolor=#4169e1 text=#ffffaa link=#ffff00 vlink=#ffaa00>
<FORM action="usereinrichten.php" method="POST" target="main">
Username : <INPUT type="text" name="pseudonym" size=15 maxlength=15><br>
Passwort : <INPUT type="password" name="pass1" size=10 maxlength=10><br>
Retype Pass : <INPUT type="password" name="pass2" size=10 maxlength=10><br>
eMail Addy : <INPUT type="text" name="email" size=35 maxlength=35><br>
Real Name : <INPUT type="text" name="real" size=50 maxlength=50><br>
Homepage : <INPUT type="text" name="homepage" size=40 maxlength=40><br>
Status : <INPUT type="text" name="status" value=1 size=1 maxlength=1><br>
<INPUT type="submit" value="User anlegen">
</FORM>
</body></html> Die Formhtml um Userdaten einzugeben.
usereinrichten.php
<html><head><title>User einrichten</title></head>
<?php
include ('color.inc');
include ('mysqlvar.inc');
$db = mysql_connect($dbserver,$dbuser,$dbpass);
mysql_select_db($dbname,$db);
if ($db)
{
if ($pass1==$pass2)
{
$query="INSERT INTO user (erstellerid, username, pseudonym, email, \
homepage, passwort, status) VALUES ('', '".$real."', '".$pseudonym."', '".$email."', \
'".$homepage."', '".$pass1."', '".$status."')";
$result= mysql_query($query,$db);
if (!$result) { echo 'Fehler ! User konnte nicht angelegt werden'; } else { echo 'User angelegt'; }
}
}
?> php-Script dass den User dann anlegt :)
So das war es bis jetzt, die einzelnen Tabellen erkläre ich im nächsten Posting , werde jetzt erstmal Pause machen :) Nun ja, ich hoffe die Scripts sind einigermasen klar, ich kann zwar programmieren aber Hilfetexte schreiben kann ich nicht, bei Fragen einfach posten !!
hmmm,
ich hab jetzt mal aus Spass angefangen ein kleine Board zu programmieren um mal wieder in HTML/php/MySQL ein bischen Übung und Routine zu bringen. Aber es ist dann doch relativ viel Arbeit und ausserdem brauchts ja auch eine Menge Ideen, die einer allein nicht haben kann. Also rufe ich hier mal jeden dazu auf mit zu coden. Ich hab mir das so gedacht das alles sehr modular aufgebaut ist damit man nicht viel ändern muss wenn man was ändern will sondern einfach ein paar kleine Module dazubastelt bzw. rausnimmt oder ersetzt. Einen kleinen Grundstock an Modulen ahb ich schon allerding weder schön gecoded noch mit Fehlerabfangen usw. Nun ja ich hab mir das so vorgestellt dass jeder der ein Modul beisteuern will oder beisteuert es hier postet (Die UBB-CODE TAGS nicht vergessen) und es kommentiert, so gut wie es geht, dann können Leute die noch nicht so gut php/MySQL/HTML können auch was lernen können, denn dafür ist es auch gedacht Denn bis es richtig nutzbar ist dauert wohl noch etwas :D
Also hier mal meine Codeteile, einfach zusammen in ein Directory des Webservers kopieren und dann das admintools.html ausführen damit hat man alle Funktionen im Überblick.
admintools.html
<html><head><title>Admintool's</title></head>
<frameset cols="170,*">
<frame src="admintools.php" name="menu">
<frame src="index.html" name="main">
</frameset>
<noframes>Ihr Browser unterstützt leider keine Frames.
</noframes>
</html>
Um die Frames aufzubauen.
LICENSE.html
<html><head><title>TODO-List</title></head>
<body bgcolor=#4169e1 text=#ffffaa link=#ffff00 vlink=#ffaa00>
Die Linzenzen diseses Programmpaketes stehen unter der GPL. <br>
Nachzulesen unter http://www.gnu.org/copyleft/gpl.html
Und ich hab damit angefangen, also bitte meinen Namen immer erwähnen :)
mfg. Jonas 'JoelH' Hoffmann 2001
</body></html> die Lizenz.
TODO.html
<html><head><title>TODO-List</title></head>
<body bgcolor=#4169e1 text=#ffffaa link=#ffff00 vlink=#ffaa00>
TODO-List fuer Joels Bulletin Board <br><br>
Was geht :<br>
<ul>
<li>v0.0.1 01.07.2001 <br>
Grundlagen, noch funzt fast garnichts ausser die Forenübersicht
<li>v0.0.2 02.07.2001 <br>
anlegen.php hinzugefügt, man kann jetzt automatisch die Tables erzeugen lassen. <br>
forumeinrichten.php und einrichten.php zugefügt um Foren erstellen zu können. <br>
admintools.php .html zugefügt um etwas übersicht zu erhalten. <br>
usereinrichten.php .html zugefügt, geht momentan nur manuell. <br>
</ul>
<br><br>
Was gibts zu tun : <br>
<ul>
<li> Es ist zuviel zu tun als das man es hier alles anführen könnte. Momentan fehlen<br>
auch die meisten Fehlerabfangroutinen aber das wird in der ersten Debugphase eingebaut, <br>
erstmal muss man ja dem User die Chance geben was Fehler zu suchen.
</ul></body></html> die TODO-list.
admintools.php
<html><head><title>Admintool's</title></head>
<?php
include ('color.inc');
?>
Admin-Menu :<br><br>
<a href="anlegen.php" target="main">Datenbank anlegen</a><br><br>
<a href="forumeinrichten.php" target ="main">Forum anlegen</a><br><br>
<a href="usereinrichten.html" target="main">User einrichten</a><br><br>
<a href="index.html" target="main">Zum Board</a><br>
</body></html>Das Admin Menü.
anlegen.php
<html><head><title>Datenbank anlegen</title></head>
<?php
include ('color.inc');
include ('mysqlvar.inc');
$db = @mysql_connect ($dbserver,$dbuser,$dbpass);
if ($db)
{
mysql_create_db ($dbname);
mysql_select_db ($dbname,$db);
$query = "CREATE TABLE foren (fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, forenname VARCHAR(40)\
NOT NULL, moderator VARCHAR(15), privat CHAR(1) NOT NULL DEFAULT 'o')";
$result = mysql_query ($query,$db);
$query = "CREATE TABLE topics (fid INT NOT NULL, tid INT NOT NULL AUTO_INCREMENT\
PRIMARY KEY, topicname VARCHAR(40) NOT NULL, erstellerid INT NOT NULL)";
$result = mysql_query ($query,$db);
$query = "CREATE TABLE user (erstellerid INT not null AUTO_INCREMENT, username VARCHAR (50) not null , pseudonym\
VARCHAR (15) not null , email VARCHAR (35) not null , homepage VARCHAR (40) , passwort VARCHAR (10) not null ,\
status INT DEFAULT '1' not null , PRIMARY KEY (erstellerid), UNIQUE (pseudonym))";
$result = mysql_query ($query,$db);
$query = "CREATE TABLE topicbeitraege (tid INT NOT NULL, eid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, beitrag TEXT \
NOT NULL, erstellerid INT NOT NULL, datum DATE NOT NULL, uhrzeit TIME NOT NULL)";
$result = mysql_query ($query,$db);
mysql_close($db);
echo 'Die Datenbank '.$dbname.' wurde erfolgreich erzeugt !';
}
?>
</body></html>Dieses Script legt die Boarddatenbank und die dazugehörigen Tabelen an.
boardname.inc
<?php
$boardname='JBB v0.0.2';
?>Dies ist der Name des Boards, damit man ihn leichter ändern kann in einer include Datei.
color.inc
<?php
echo'<body bgcolor=#4169e1 text=#ffffaa link=#ffff00 vlink=#ffaa00>';
?> das include das die Farben des Boards bestimmt.
dbfunctions.inc
<?php
function showforen()
{
global $dbserver,$dbuser,$dbpass,$dbname;
$db=@mysql_connect( $dbserver,$dbuser,$dbpass);
if (!$db)
{ echo'Keine Verbindung zum Datenbankserver :('; }
if ($db)
{ mysql_select_db($dbname,$db);
$query = 'SELECT * FROM foren';
$result = mysql_query($query,$db);
if ($result)
{ $number = mysql_num_rows($result);
echo '<br><br>';
echo '<TABLE BORDER=1>';
echo '<tr><td>Forennummer</td><td>Forenname</td><td>Moderator</td><td>Privat?</td><td>Eintreten</td></tr>';
$counter = 1;
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo '<tr><td>';
echo implode('<td>',$row);
$beta = "showforum.php?forum=".$counter;
echo '<td><a href="',$beta,'">Betreten</a>';
$counter++;
echo '</tr>';
}
echo '</TABLE>';
}
else { echo '<p>'.mysql_error($db);}
mysql_close($db);
}
}
?> Diese Include-Script war gedacht um Datenbankfunctionen einzutragen die öfter gebraucht werden. Momentan ist nur diese eine Function drin und die wird im foren.php gebraucht um die den Forenindex anzuzeigen.
einrichten.php
<html><head><title>Forum einrichten</title></head>
<?php
include ('color.inc');
include ('mysqlvar.inc');
$db = mysql_connect($dbserver,$dbuser,$dbpass);
if ($db)
{ mysql_select_db ($dbname,$db);
$pr = 'o';
if ($privat=='on') { $pr='p'; }
$query = " INSERT INTO foren (fid, forenname, moderator, privat) VALUES ('', '".$neuesforum."', '".$moderator."', '".$pr."')";
$result = mysql_query($query,$db);
if ($result) { echo 'Forum wurde eingefügt'; }
}
mysql_close($db);
?> Diese Script fügt ein neues Forum ins Board ein , es wird von forumeinrichten.php aufgerufen.
foren.php
<html><head><title>Forenindex JBB</title></head>
<?php
include('color.inc');
include('mysqlvar.inc');
include('boardname.inc');
include('dbfunctions.inc');
echo'<br><center><h1>Willkomen auf dem '.$boardname.' Bulletin Board !</h1>';
echo'<br><br>Forenübersicht<br><br>';
showforen();
echo'</body></html>';
?> gibt den Forenindex/übersicht aus, dort kann man in die einzelnen Foren kommen.
forumeinrichten.php
<html><head><title>Forum einrichten</title></head>
<?php
include ('color.inc');
?>
<form action="einrichten.php" method=post>
Forenname : <input type=text name="neuesforum" maxlength=40 size=40><br>
Moderator : <input type=text name="moderator" maxlength=15 size=15><br>
<input type=checkbox name="privat"><br>
<input type=submit value="Forum erzeugen">
</form></body></html>hier gibt man die Daten für ein neues Forum ein wenn man eins erstellen will.
index.html
<HTML><HEAD><TITLE>Joels Bulletin Board v 0.0.1</TITLE></HEAD>
<body bgcolor=#4169e1 text=#ffffaa link=#ffff00 vlink=#ffaa00>
<br><br><br><br><br><br>
<center><h1>Joels Bulletin Board v0.0.1</h1></center><br>
<h3><center>coded by Jonas 'JoelH' Hoffmann in 2001</center><br>
<center><a href="foren.php">come in</a></center></h3>
<body><html> das indexfile welches den normalen User aufs Board bringen soll, kann auch als Disclaimer usw. verwendet werden.
mysqlvar.inc
<?php
$dbserver='localhost:3306';
$dbuser='root';
$dbpass='';
$dbname='boardt1';
?> hier stehen die Verbindungsdaten zum SQL Server drin und der Datenbankname.
showforum.php
<html><head><title>Forum Anzeigen</title></head>
<?php
include ('color.inc');
include ('mysqlvar.inc');
include ('boardname.inc');
?> das ist noch ein Dummy da bin ich gerade dran, das soll die Topicübersicht ergeben wenn man ein Forum betritt. Es wird von der foren.php aus aufgerufen im Style http://jbb/showforen.php?forum=2 forum ist dabei die Variable die angibt welches Forum ausgegebne werden soll, dies ist die Spalte tid in der Tabele topics, dazu werde ich später noch genauere ausführen machen.
usereinrichten.html
<html><head><title>User einrichten</title></head>
<body bgcolor=#4169e1 text=#ffffaa link=#ffff00 vlink=#ffaa00>
<FORM action="usereinrichten.php" method="POST" target="main">
Username : <INPUT type="text" name="pseudonym" size=15 maxlength=15><br>
Passwort : <INPUT type="password" name="pass1" size=10 maxlength=10><br>
Retype Pass : <INPUT type="password" name="pass2" size=10 maxlength=10><br>
eMail Addy : <INPUT type="text" name="email" size=35 maxlength=35><br>
Real Name : <INPUT type="text" name="real" size=50 maxlength=50><br>
Homepage : <INPUT type="text" name="homepage" size=40 maxlength=40><br>
Status : <INPUT type="text" name="status" value=1 size=1 maxlength=1><br>
<INPUT type="submit" value="User anlegen">
</FORM>
</body></html> Die Formhtml um Userdaten einzugeben.
usereinrichten.php
<html><head><title>User einrichten</title></head>
<?php
include ('color.inc');
include ('mysqlvar.inc');
$db = mysql_connect($dbserver,$dbuser,$dbpass);
mysql_select_db($dbname,$db);
if ($db)
{
if ($pass1==$pass2)
{
$query="INSERT INTO user (erstellerid, username, pseudonym, email, \
homepage, passwort, status) VALUES ('', '".$real."', '".$pseudonym."', '".$email."', \
'".$homepage."', '".$pass1."', '".$status."')";
$result= mysql_query($query,$db);
if (!$result) { echo 'Fehler ! User konnte nicht angelegt werden'; } else { echo 'User angelegt'; }
}
}
?> php-Script dass den User dann anlegt :)
So das war es bis jetzt, die einzelnen Tabellen erkläre ich im nächsten Posting , werde jetzt erstmal Pause machen :) Nun ja, ich hoffe die Scripts sind einigermasen klar, ich kann zwar programmieren aber Hilfetexte schreiben kann ich nicht, bei Fragen einfach posten !!