[TUT|PHP] Fora

Gestart doorErik9 reacties125 weergaven

10 berichten · pagina 1 van 1

Erik

Lid · Topicstarter

Berichten
7.109
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hallo,
In deze tutorial zal ik jullie een forum leren scripten doormiddel van PHP.
Wat heb je nodig?
- Tijd
- Ruime PHP ervaring

Indeling:
1: Inleiding
2: Database indeling
3: De config
4: De index
5: Fora weergeven
6: Topics
7: Nieuw topic
8: Reageren
9: Adminopties
Veel plezier!

Deel 2: Database indeling
Tja, als je een forum wilt maken heb je toch wel een database nodig.
Dan kom je bij het volgende uit: Welke MySQL tabellen heb ik nodig?
Voor die vraag heb ik het volgende. Maak een kort "˜verhaaltje"™ met kernwoorden wat je systeem moet kunnen, in dit geval dus een forum.
Ik heb dus het volgende "˜verhaaltje"™ gemaakt:
Een forum heeft categorieën, met daarin weer fora. In die fora zitten topics, die ook weer reacties kunnen bevatten.
Nu maak je de belangrijkste dingen vet gedrukt. Ik houd dit over:
Een forum heeft categorieën, met daarin weer fora. In die fora zitten weer topics, die ook weer reacties kunnen bevatten.
Dus je houd het volgende over:
Forum, categorieën, fora, topics en reacties.
Daar ga je dus je MySQL tabellen op baseren. Dan gaan we bedenken wát er precies ín die tabellen moet komen. Hier maak je dus ook een kort verhaaltje over met kernwoorden. De forum tabel hebben we in principe niet nodig. Dus die kunnen we wegstrepen.
Categorieën: Een categorie heeft een naam nodig. En een ID.
Fora: Een forum heeft ook een naam, beschrijving nodig. En een ID.
Topics: Een topic heeft een onderwerp, post_id, datum en nog wat dingen nodig. (hier komen we later op terug)
Reacties: Ook hier hebben we weer een aantal kolommen nodig. Maar dit is even teveel om zo neer te zetten. (hier komen we ook later op terug)

Dan gaan we voorzichtig de eerste database opzet maken:
Bij de categorie tabel maken we de volgende kolommen: id en naam.
Nu komen we bij de fora tabel. Dit is ook niet zo moeilijk. De kolommen: id, categorie_id, naam, toegang.
De topic tabel: id, forum_id, onderwerp, datum, lid, verwijderd, sticky, gesloten.
Bij de reactie tabel doen we het volgende: id, topic_id, inhoud, verwijderd, laatst_bewerkt, laatst_bewerkt_door.

Ik ga niet de hele database voorkauwen, dit moet je dus zelf in elkaar zetten.
Op naar het volgende deel!

Deel 3: De config
Nu komen we bij t volgende deel: de config.
De config is niet zo heel moeilijk.
Gewoon de sessies starten en met de MySQL connecten.
Voorbeeld code:

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/session_start"]session_start[/URL][COLOR= #007700]();[/COLOR]

[COLOR= #0000BB]$verbinding[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_connect"]mysql_connect[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]localhost[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]#[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]#[/COLOR][COLOR= #007700])[/COLOR] or [URL="http://www.php.net/die"]die[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/mysql_error"]mysql_error[/URL][COLOR= #007700]());[/COLOR]
[URL="http://www.php.net/mysql_select_db"]mysql_select_db[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]#[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$verbinding[/COLOR][COLOR= #007700]);[/COLOR]
?>


Dit was alweer deel 3. Op naar deel 4.

Deel 4: De index
Nu komen we aan bij een rot gedeelte van het forum: de index. yummieWat moet er op de index komen? Nou eigenlijk best veel.. De categorieën netjes geordend, met natuurlijk de juiste fora onder de juiste categorie.
We zullen 2 querys krijgen. Eéntje voor de categorieën op te halen, en eentje voor de fora op te halen.

Ik zal even een voorbeeld code geven van hoe de index er ongeveer uit kan zien:

[COLOR= #0000BB]<?php[/COLOR]
[COLOR= #FF8000]// De config includen doormiddel van require_once[/COLOR]
[URL="http://www.php.net/require_once"]require_once[/URL] [COLOR= #DD0000]config.php[/COLOR][COLOR= #007700];[/COLOR]

[COLOR= #FF8000]// De categorie query[/COLOR]
[COLOR= #0000BB]$categorie_query[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT id, naam FROM forum_categorie ORDER BY id ASC"[/COLOR][COLOR= #007700])[/COLOR] or [URL="http://www.php.net/die"]die[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/mysql_error"]mysql_error[/URL][COLOR= #007700]());[/COLOR]

[COLOR= #FF8000]// We gaan hier kijken of er uber haupt wel categorieën zijn[/COLOR]
[URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/mysql_num_rows"]mysql_num_rows[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$categorie_query[/COLOR][COLOR= #007700]) >=[/COLOR] [COLOR= #0000BB]1[/COLOR][COLOR= #007700])
{[/COLOR]
    [COLOR= #FF8000]// Ze zijn er, en dus maken we een while-lus voor het weergeven ervan[/COLOR]
    [URL="http://www.php.net/while"]while[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$fetch_categorie[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_fetch_assoc"]mysql_fetch_assoc[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$categorie_query[/COLOR][COLOR= #007700]))
    {[/COLOR]
        [COLOR= #FF8000]// We weergeven de naam van de categorie[/COLOR]
        [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]<h2>[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$fetch_categorie[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]naam[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]</h2>[/COLOR][COLOR= #007700];[/COLOR]
        [COLOR= #FF8000]// Nu gaan we de fora ophalen die bij deze categorie hoort, en weergeven doormiddel van een while-lus[/COLOR]
        [COLOR= #0000BB]$fora_query[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT id, naam, beschrijving FROM forum_fora WHERE categorie_id = "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$fetch_categorie[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]id[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]" ORDER BY id ASC"[/COLOR][COLOR= #007700])[/COLOR] or [URL="http://www.php.net/die"]die[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/mysql_error"]mysql_error[/URL][COLOR= #007700]());[/COLOR]
        
        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/mysql_num_rows"]mysql_num_rows[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$fora_query[/COLOR][COLOR= #007700]) >=[/COLOR] [COLOR= #0000BB]1[/COLOR][COLOR= #007700])
        {[/COLOR]
            [URL="http://www.php.net/while"]while[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$fetch_fora[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_fetch_assoc"]mysql_fetch_assoc[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$fora_query[/COLOR][COLOR= #007700]))
            {[/COLOR]
                [COLOR= #FF8000]// Nu gaan we dit forum weergeven[/COLOR]
                [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]<a href="forum?id=[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$fetch_fora[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]id[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]">[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$fetch_fora[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]naam[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]</a><br />
                <em>[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$fetch_fora[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]beschrijving[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]</em>[/COLOR][COLOR= #007700];
            }
        }[/COLOR]
        [COLOR= #FF8000]//Als er nog geen fora is in deze categorie[/COLOR]
        [URL="http://www.php.net/else"]else[/URL]
        [COLOR= #007700]{[/COLOR]
            [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]Er is (nog) geen fora in deze categorie.[/COLOR][COLOR= #007700];
        }
    }
}[/COLOR]
[COLOR= #FF8000]//Er zijn geen categorieën op het forum[/COLOR]
[URL="http://www.php.net/else"]else[/URL]
[COLOR= #007700]{[/COLOR]
    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]Er zijn (nog) geen categorieën.[/COLOR][COLOR= #007700];
}[/COLOR]
?>


Dit was alweer de index.php.. Je kan dit natuurlijk verder uitbreiden, met bijvoorbeeld een gelezen/ongelezen systeem. Maar dat ga ik in deze tutorial nog niet uitleggen.
Als je iets niet snapt aan dit en misschien andere delen kan je het altijd aan mij of iemand anders vragen.

Deze tutorial wordt binnenkort uitgebreid..

Groeten,
Erik
Je hebt geen enkele recht om deze tutorial op een andere site te plaatsen zonder toestemming van mij, Erik V..
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Dit is meer code voorkauwen dan echt uitleg, maar verder leuk gedaan emo
0
Erik

Lid · Topicstarter

Berichten
7.109
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rik schreef:
Dit is meer code voorkauwen dan echt uitleg, maar verder leuk gedaan emo
Oh, zal hem in de volgende update wel wat veranderen. biggrin
0
Miel

Lid

Berichten
4.462
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Gewoon met 1 query joh.biggrinMaar nice!smile"Je hebt geen enkele recht" Faalappel.nl
0
Berichten
20.364
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Wel handig man, Dus je ben niet zo lui als ik dacht emo (Kuch kuch)
0
Miel

Lid

Berichten
4.462
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Toch wel.. Maar als ie iets kan doen, waar ie denkt dat zn rang beter van word, dan doet ie het. Maar hij weet niet dat zn naam alleen zwarter maakt als ie iets niet af maakt.emoSorry, ik verneux je topic. Doe wel wat aan je onnodige query.emo
0
Erik

Lid · Topicstarter

Berichten
7.109
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Eigenlijk valt een forum niet uit te leggen. biggrinSlotje please? yummie
0
Miel

Lid

Berichten
4.462
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
emo!!!!!!
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
emo..
0
Berichten
3.225
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dat invoegen in db snap ik niet helemaal? Wat moet ik nou bij Table en wat bij Velden invullen?
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren