Bekijk topic
Dit is een wat lastiger stuk omdat dit eindresultaat erg groot lijkt..
een topic bekijken is alleen informatie opvragen uit de database en hetgeen dat wij willen is deze opbouw:
1) Het topic bovenaan
2) Daaronder de reacties erop
3) Daar weer onder een mogelijk om reacties te geven
laten we beginnen met de 1e gewoon:
op het forum overzicht hebben we het zo geschreven net dat als iemand op een topic klikt deze opbouw link komt: ?bekijktopic=ID
dus hier in de query moeten we hier gebruik van maken..
de qeury (en aanhang)wordt:
2
3
4
5
$sql = "SELECT * FROM topic WHERE topic_id = ".trim($_GET['bekijktopic']).";";
$resultaat = mysql_query($sql)or die(mysql_error());
$rij = mysql_fetch_array($resultaat);
?>
hiermee is eigenlijk al het grootste deel gedaan.. alles is opgeslagen als $rij en daarme halen we het ook weer op als we het nodig hebben..
bijvoorbeeld zo:
2
<tr><td bgcolor=#F8F7F1><strong>Door </strong><a href="?gebruiker=<?php echo $rij['gebruiker_id']; ?>"
hierboven zie je staan stripslashes.
weet je nog dat we de informatie met
mysql_real_escape_string gingen wegschrijven?
dan werd ' \' en " \" nou met stripslashes () zorg je ervoor dat die \
weer weggehaald worden ;) (in je database blijven ze wel staan maar bij het weergeven worden ze weggelaten..) zodat je dus weer goed leesbare teksten krijgt..
voorbeeld:
in de database staat:
met stripslashes()
wordt de output:
we hebben in deze pagina een functie nodig die de gebruikersnaam bij de reacties zet.. omdat in de reactie velden in de database staat alleen welke gebruiker_id die reactie heeft aangemaakt.. om dan de nummertje weer te geven staat niet mooi want niemand weet wie user 11 of user 4325 is..
dus we willen de gebruikersnaam ipv de nummers..
dat doen we met deze functie:
2
3
4
5
6
7
8
9
10
11
12
function welke_gebruiker($gebruiker_id){
// $gebruiker_id is weer de input
$welke_gebruiker_query = "SELECT gebruiker_naam, gebruiker_afbeelding FROM gebruiker WHERE gebruiker_id='".$gebruiker_id."';";
$welke_gebruiker_sql = mysql_query($welke_gebruiker_query)or die(mysql_error());
//we halen de gegevens op uit de database die wij nodig hebben in deze pagina
// en slaan deze hieronder weer op in een array genaamd $welke_gebruiker
$welke_gebruiker = mysql_fetch_array($welke_gebruiker_sql);
return $welke_gebruiker;
// de resultaten sturen we terug als een array
}
?>
in het resultaat script zie je hoe we deze functie aanroepen en gebruiken..
we hebben in dit forum 3 gebruikers_ranks.. dus admin(1), moderator(2) en lid(3)
wij willen dat een admin of moderator (rank 1 en 2 dus) meer opties hebben als een lid (rank 3) dat doen we simpelweg zo:
hiermee kun je dus een verwijder link maken in je script.. (kijk in het resultaat voor het voorbeeld)..
deel 2)
we willen de reacties zien
hoe doen we dit? je hebt gezien hoe de database is opgebouwd.. we hebben elke reactie een (geheime niet zichtbare) id meegegeven van het topic id.. dus we vragen gewoon alles reacties op uit de database waar het topic_id gelijk is aan die ?bekijktopic=ID ... o zooo simpel? ja
dit word dan de query (weer met aanhang):
2
3
4
5
6
7
8
9
10
11
12
13
14
$sql2 = "SELECT * FROM reactie WHERE topic_id = ".trim($_GET['bekijktopic']).";";
$resultaat2 = mysql_query($sql2)or die(mysql_error());
while($rij2 = mysql_fetch_array($resultaat2)){
// dit is de reactie...
// bijvoorbeeld met:
echo stripslashes($rij2['reactie_bericht']);
// en eventueel kunnen we weer een rank optie erbij maken
if($_SESSION['gebruiker_rank'] < 3){
echo 'dit zien alleen weer de moderator en admins';
}
}
?>
- topic verwijderen voor moderators en admins
- avater wijzigen voor moderators en admins
- gebruiker verwijderen ALLEEN voor admins
elke soort query heb ik gebruikt dus een eventuele bewerk mogelijkheid kun je nu zelf maken met een SELECT en UPDATE query..
EEN resultaat zou er zo uit kunnen zien: (let op dit lijkt heel veel door alle html erdoor heen..)
=============bekijk_topic.php=================
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
if(!isset($_GET['bekijktopic']))
{
echo 'Deze actie is niet toegestaan keer terug naar waar je vandaan kwam.';
}else{
include('verbind.php');
if(!is_numeric($_GET['bekijktopic'])){
echo 'dit is een ongeldig id';
}else{
$sql = "SELECT * FROM topic WHERE topic_id = ".trim($_GET['bekijktopic']).";";
$resultaat = mysql_query($sql)or die(mysql_error());
$check = mysql_num_rows($resultaat);
if($check > 0){
$rij = mysql_fetch_array($resultaat);
function welke_gebruiker($gebruiker_id){
$welke_gebruiker_query = "
SELECT gebruiker_naam, gebruiker_afbeelding
FROM gebruiker
WHERE gebruiker_id='".$gebruiker_id."';";
$welke_gebruiker_sql = mysql_query($welke_gebruiker_query)or die(mysql_error());
$welke_gebruiker = mysql_fetch_array($welke_gebruiker_sql);
return $welke_gebruiker;
}
?>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr><td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bordercolor="1" bgcolor="#FFFFFF">
<tr><td bgcolor="#F8F7F1"><strong><?php echo stripslashes($rij['topic_titel']); ?></strong>
<?php
if($_SESSION['gebruiker_rank'] < 3){
echo' <a href="?verwijdertopic='.$rij['topic_id'].'" alt="verwijder">V</a>';
}
?>
</td></tr>
<tr><td bgcolor=#F8F7F1><?php echo stripslashes($rij['topic_bericht']); ?></td></tr>
<tr><td bgcolor=#F8F7F1><strong>Door </strong><a href="?gebruiker=<?php echo $rij['gebruiker_id']; ?>"
target="_self" alt="klik"><?php $welke_gebruiker = welke_gebruiker($rij['gebruiker_id']); echo $welke_gebruiker['gebruiker_naam']; ?></a></td></tr>
<tr><td bgcolor=#F8F7F1><strong>Datum/tijd : </strong><?php echo $rij['topic_datumtijd']; ?></td></tr>
</table>
</td><td width="100"><img src="<?php echo $welke_gebruiker['gebruiker_afbeelding']; ?>" height="100" width="100"/></td></tr>
</table><BR>
<?php
$sql2 = "SELECT * FROM reactie WHERE topic_id = ".$_GET['bekijktopic']." ORDER BY reactie_datumtijd ASC;";
$resultaat2 = mysql_query($sql2)or die(mysql_error());
while($rij2 = mysql_fetch_array($resultaat2)){
?>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr><td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr><td width="18%" bgcolor="#F8F7F1"><strong>Naam</strong></td>
<td width="77%" bgcolor="#F8F7F1">
<a href="?gebruiker=<?php echo $rij2['gebruiker_id']; ?>" target="_self"><?php $welke_gebruiker = welke_gebruiker($rij2['gebruiker_id']); echo $welke_gebruiker['gebruiker_naam'];?></a></td>
</tr><tr>
<td bgcolor="#F8F7F1"><strong>Reactie</strong>
<?php
if($_SESSION['gebruiker_rank'] < 3){
echo'<a href="?verwijderreactie='.$rij2['reactie_id'].'" alt="verwijder">V</a>';
}
?>
</td>
<td bgcolor="#F8F7F1"><?php echo stripslashes($rij2['reactie_bericht']); ?></td>
</tr><tr>
<td bgcolor="#F8F7F1"><strong>Datum/Tijd</strong></td>
<td bgcolor="#F8F7F1"><?php echo $rij2['reactie_datumtijd']; ?></td>
</tr>
</table>
</td><td width="100"><img src="<?php echo $welke_gebruiker['gebruiker_afbeelding']; ?>" height="100" width="100" /></td></tr>
</table><br>
<?php
}
?>
<BR>
<form method="post" action="toevoegen_reactie.php">
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td valign="top"><strong>Reactie</strong></td>
<td valign="top">:</td>
<td><textarea name="reactie_bericht" cols="50" rows="8"></textarea></td>
</tr><tr>
<td></td>
<td><input name="topic_id" type="hidden" value="<?php echo $_GET['bekijktopic']; ?>"></td>
<td><input type="submit" name="Submit" value="Toevoegen"> <input type="reset" value="Wis velden"></td>
</tr>
</table>
</td>
</tr>
<tr><td colspan="5" align="right" bgcolor="#E6E6E6"><a href="index.php"><strong>Topic Overzicht</strong> </a></td></tr>
</table>
</form>
<?php
}else{
echo 'Id niet bekend.';
}
}
}
?>
===================================
na deze hele lap code gaan we nu door naar de volgende pagina
Inhoudsopgave
- Inleiding
- Database klaarmaken & scriptje voor verbinding sch
- Registratie script maken.
- Inlogpagina maken
- Maak topic
- Voeg topic toe
- Forum overzicht
- Index maken
- Bekijk topic
- Reactie Toevoegen
- Gebruikers pagina en verwijder pagina
- Tot slot
- o nog een pagina over =P