Forum, database opzet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Lol lol

lol lol

03/08/2009 15:02:00
Quote Anchor link
Goedenmiddag,

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
 
PHP hulp

PHP hulp

22/12/2024 22:11:53
 
Mr.Ark

Mr.Ark

03/08/2009 15:06:00
Quote Anchor link
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.
 
Lol lol

lol lol

03/08/2009 16:27:00
Quote Anchor link
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.


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
 
Mr.Ark

Mr.Ark

04/08/2009 00:50:00
 
Lol lol

lol lol

05/08/2009 02:00:00
Quote Anchor link
@ark, bedankt voor die tutorial.

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?
 
Lol lol

lol lol

14/08/2009 21:48:00
Quote Anchor link
Sinds vandaag staan de config files weer goed ingesteld op mijn database en ben vandaag ook weer direct aan de slag geweest, alleen stuit ik op een probleem waarvan ik denk dat het in mijn include structuur zit.

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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)
PHP script in nieuw venster Selecteer het PHP script
1
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>
'
;    
}

?>


En tenslotte mijn topics pagina;
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>
                                
                                
'
;    
                            
}
    
                                                        
?>


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]
Gewijzigd op 01/01/1970 01:00:00 door lol lol
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.