Forum, database opzet
Ik ben momenteel bezig met een forum, ik heb het nog nooit eerder gedaan, maar ik stuit op het probleem van, hoe moet mijn database er uit zien, nu heb ik momenteel alleen nog maar 2 tabellen namelijk; cat(categorieën) en topics.
Zo zien mijn tabellen er uit;
CAT
-----
id
naam
bijschrift
admin
TOPICS
---------
id
catid
naam
bericht
datum
username
REPLIES
---------
id
bericht
datum
topic_id
user_id
Nu had ik het idee om alle topics in 1 tabel te doen en d.m.v. het catid dit op de juiste plek te laten echoën, alleen vraag ik mij af of dit wel een goede oplossing is of zou ik het anders moeten aanpakken.
P.S.
Excuses voor de tabel Replies er bij te zetten, maar dit kwam mede dankzij privé omstandigheden.
Gewijzigd op 01/01/1970 01:00:00 door Lol lol
Bij topics heb je username staan, Werk je met een login systeem of kan iedereen het forum gaan spammen? Als je met een login systeem werkt maak dan van username userID, Koppel dat dan aan de tabel waar je je users in hebt zitten, Zo voorkom je dat je niet een post krijgt waar de username niet bestaat.
Je zal veel moeilijke query's tegen komen dus ik wens je er succes mee.
ark schreef op 03.08.2009 15:06:
Je mist nog een tabel voor de reply's
Bij topics heb je username staan, Werk je met een login systeem of kan iedereen het forum gaan spammen? Als je met een login systeem werkt maak dan van username userID, Koppel dat dan aan de tabel waar je je users in hebt zitten, Zo voorkom je dat je niet een post krijgt waar de username niet bestaat.
Je zal veel moeilijke query's tegen komen dus ik wens je er succes mee.
Bij topics heb je username staan, Werk je met een login systeem of kan iedereen het forum gaan spammen? Als je met een login systeem werkt maak dan van username userID, Koppel dat dan aan de tabel waar je je users in hebt zitten, Zo voorkom je dat je niet een post krijgt waar de username niet bestaat.
Je zal veel moeilijke query's tegen komen dus ik wens je er succes mee.
Ik heb inderdaad al een login systeem, dus zal ik inplaats van de username de userid gebruiken wat inderdaad handiger is, bedankt daarvoor.
Reply tabel ben ik mee bezig en zal ik die dan zometeen er ook bij zetten, nu ligt bij mij alleen nog de vraag hoe ik die id's met elkaar ga koppelen, maar hier zal ik dan ook zelf een tutorial voor gaan zoeken.
Als jullie nog een goeie tutorial of iets in die richting hebben voor het koppelen van tabellen, dan post het gerust!
Gewijzigd op 01/01/1970 01:00:00 door lol lol
Ik ben er nu achter hoe je een relatie op zet, alleen wil dit niet echt goed werken. Nu zag ik net bij mijn PHPMyAdmin het volgende staan;
Extra opties om met tabellen te werken, die gelinkt zijn, zijn uitgeschakeld.
Nu blijkt het dat er een aantal dingen niet in orde zijn, maar nu weet ik niet of dat deze melding er al in het begin stond, nu is mijn vraag of ik dit zelf nog op kan lossen of moet ik dit bij de host laten doen?
Ik heb een GET variabele gemaakt zodat ik de topics bij de juiste categorieën kan pakken en hier heb ik dan ook een pagina voor gemaakt (topics.php) die de juiste topics bij de juiste categorie pakt alleen geeft het continue de foutmelding dat de pagina niet bestaat.
Nu geeft het wel de pagina weer wanneer $_GET['cat'] niks is, dus &cat=&onderdeel, nu is mijn vraag of iemand weet wat ik fout doe.
Hier mijn include structuur;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
if(isset($pagina) && !empty($pagina)){
$pagina = $_GET['pagina'];
if(!isset($onderdeel)){
$onderdeel = "content";
}else{
$onderdeel = $_GET['onderdeel'];
}
if(!isset($id)){
$id = "";
}else{
if(isset($_GET['adminid']) && !empty($_GET['adminid']) && is_int($_GET['adminid'])){
$id = $_GET['adminid'];
}
}
if(!isset($cat)){
$cat = "";
}else{
if(isset($_GET['cat']) && !empty($_GET['cat']) && is_int($_GET['cat'])){
$cat = $_GET['cat'];
}
}
$pad = $onderdeel."/".$pagina.$cat.$id.".php";
if(file_exists($pad)){
include($pad);
}else{
echo '
<div id="content">
<div id="contentleft" class="cleft">
<h6>FOUT</h6>
<table class="contentl">
<tr>
<td>Sorry, deze pagina bestaat niet!</td>
</tr>
</table>
</div>
</div>
';
}
}else{
include("content/home.php");
}
?>
if(isset($pagina) && !empty($pagina)){
$pagina = $_GET['pagina'];
if(!isset($onderdeel)){
$onderdeel = "content";
}else{
$onderdeel = $_GET['onderdeel'];
}
if(!isset($id)){
$id = "";
}else{
if(isset($_GET['adminid']) && !empty($_GET['adminid']) && is_int($_GET['adminid'])){
$id = $_GET['adminid'];
}
}
if(!isset($cat)){
$cat = "";
}else{
if(isset($_GET['cat']) && !empty($_GET['cat']) && is_int($_GET['cat'])){
$cat = $_GET['cat'];
}
}
$pad = $onderdeel."/".$pagina.$cat.$id.".php";
if(file_exists($pad)){
include($pad);
}else{
echo '
<div id="content">
<div id="contentleft" class="cleft">
<h6>FOUT</h6>
<table class="contentl">
<tr>
<td>Sorry, deze pagina bestaat niet!</td>
</tr>
</table>
</div>
</div>
';
}
}else{
include("content/home.php");
}
?>
Mijn forum pagina;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
include('connect.php');
$query = mysql_query("SELECT id, naam, bijschrift FROM cat") or die("QUERY FAILED : " . mysql_error());
while($rij = mysql_fetch_assoc($query)){
$_GET['cat'] = $rij['id'];
$naam = $rij['naam'];
$bijschrift = $rij['bijschrift'];
echo '
<DL>
<dt><strong><a href="?pagina=topics&cat='. $_GET['cat'] .'&onderdeel=forum"> '. $naam .'</a></strong></dt>
<dd>'. $bijschrift .'</dd>
</DL>
';
}
?>
include('connect.php');
$query = mysql_query("SELECT id, naam, bijschrift FROM cat") or die("QUERY FAILED : " . mysql_error());
while($rij = mysql_fetch_assoc($query)){
$_GET['cat'] = $rij['id'];
$naam = $rij['naam'];
$bijschrift = $rij['bijschrift'];
echo '
<DL>
<dt><strong><a href="?pagina=topics&cat='. $_GET['cat'] .'&onderdeel=forum"> '. $naam .'</a></strong></dt>
<dd>'. $bijschrift .'</dd>
</DL>
';
}
?>
En tenslotte mijn topics pagina;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
include('connect.php');
$topicquery = mysql_query("SELECT id, cat_id, user_id, titel, bericht, datum FROM topics WHERE cat_id='". $_GET['cat'] ."'") or die("QUERY FAILED : " . mysql_error());
while($rij = mysql_fetch_assoc($topicquery)){
echo '
<table>
<tr>
<td> '. $rij['titel'] .' </td>
<td> '. $rij['datum'] .'</td>
<td> '. $rij['user_id'] .'</td>
</tr>
</table>
';
}
?>
include('connect.php');
$topicquery = mysql_query("SELECT id, cat_id, user_id, titel, bericht, datum FROM topics WHERE cat_id='". $_GET['cat'] ."'") or die("QUERY FAILED : " . mysql_error());
while($rij = mysql_fetch_assoc($topicquery)){
echo '
<table>
<tr>
<td> '. $rij['titel'] .' </td>
<td> '. $rij['datum'] .'</td>
<td> '. $rij['user_id'] .'</td>
</tr>
</table>
';
}
?>
P.S.
Error reporting staat aan en tevens zijn de rijen zoals, cat_id ook gelinkt.
Edit:
Mmmmmh, beetje apart maar, ik heb de $_GET['cat'] veranderd in $_GET['catogorie'] en nu doet die het wel...waarschijnlijk heb ik dan toch een typ fout gemaakt o.i.d. of dacht mijn SQL dat ik de tabel cat bedoelde, omdat die twee de zelfde naam hebben.
[/Edit]
Mmmmmh, beetje apart maar, ik heb de $_GET['cat'] veranderd in $_GET['catogorie'] en nu doet die het wel...waarschijnlijk heb ik dan toch een typ fout gemaakt o.i.d. of dacht mijn SQL dat ik de tabel cat bedoelde, omdat die twee de zelfde naam hebben.
[/Edit]
Gewijzigd op 01/01/1970 01:00:00 door lol lol