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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<tr><td bgcolor=#F8F7F1><?php echo stripslashes($rij['topic_bericht']); ?></td></tr>
<tr><td bgcolor=#F8F7F1><strong>Door&nbsp;</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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
marviin\'s is \'s nachts deze tutorial gaan schrijven

met stripslashes()
wordt de output:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
marviin's is 's nachts deze tutorial gaan schrijven



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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if($_SESSION['gebruiker_rank'] < 3){
// de $_SESSION['gebruiker_rank'] is aangemaakt tijdens het inloggen
// als die gebruiker_rank uit die sessie kleiner is als 3 (dus 1 en 2)
// dan:

echo 'dit ziet alleen iemand met rank 1 en 2 (admin en moderator dus)';
}

?>


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):
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
<?php
$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';
      }
}

?>


ff tussendoor:
ik heb in deze tutorial niet veel rank opties gemaakt.. ik heb alleen gemaakt:
- 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=================
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
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
<?php
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'&nbsp;<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&nbsp;</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

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Database klaarmaken & scriptje voor verbinding sch
  3. Registratie script maken.
  4. Inlogpagina maken
  5. Maak topic
  6. Voeg topic toe
  7. Forum overzicht
  8. Index maken
  9. Bekijk topic
  10. Reactie Toevoegen
  11. Gebruikers pagina en verwijder pagina
  12. Tot slot
  13. o nog een pagina over =P

PHP tutorial opties

 
 

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.