Waarom toont hij de laatste reactie niet ?
ik zit met een groot probleem :
mijn forum werkt niet naar behoren.
dit zijn de mysql tables :
CREATE TABLE `reacties` (
`forum` varchar(500) NOT NULL,
`inhoud` mediumtext NOT NULL,
`naam` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `members` (
`id` bigint(255) unsigned NOT NULL auto_increment,
`naam` varchar(20) NOT NULL,
`pass` varchar(80) NOT NULL,
`rec_1` varchar(1000) NOT NULL,
`rec_2` varchar(1000) NOT NULL,
`admin` varchar(3) NOT NULL,
KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
CREATE TABLE `forums` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`cathegorie` varchar(500) NOT NULL,
`forum_naam` varchar(500) NOT NULL,
`forum_inhoud` longtext NOT NULL,
`schrijver` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `forum_naam` (`forum_naam`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE `cathegorien` (
`id` tinyint(255) unsigned NOT NULL auto_increment COMMENT 'het id-nummer van de verschillende cathegorien, oplopend tot 255, index',
`naam` varchar(500) NOT NULL,
`beschrijving` text NOT NULL,
UNIQUE KEY `naam` (`naam`),
KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
en dit is het script
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
if(isset($HTTP_COOKIE_VARS['login']) && $HTTP_COOKIE_VARS['login']=="ja"){
/*
Forum geschreven door :
Bart Coene (c)
[email protected]
[email protected]
gelieve niets aan te passen als je geen idee hebt wat je aan het doen bent !
wel moet je invullen tot =>$['stop']$<= dit teken.
Natuurlijk wil je het forum volledig juist gebruiken.
dit is heel simpel, dit doe je met de PHP functie include
de code is dan :
<?php
include ('forum.php?');
?>
veel plezier met het forum !
Bart
*/
?>
if(isset($HTTP_COOKIE_VARS['login']) && $HTTP_COOKIE_VARS['login']=="ja"){
/*
Forum geschreven door :
Bart Coene (c)
[email protected]
[email protected]
gelieve niets aan te passen als je geen idee hebt wat je aan het doen bent !
wel moet je invullen tot =>$['stop']$<= dit teken.
Natuurlijk wil je het forum volledig juist gebruiken.
dit is heel simpel, dit doe je met de PHP functie include
de code is dan :
<?php
include ('forum.php?');
?>
veel plezier met het forum !
Bart
*/
?>
<!--
Forum gemaakt door Bart Coene; het is helemaal aan hem toegewezen
Disclaimer :
Coene Bart (c)
[email protected]
-->
<html>
<head>
<title>
Discussieforum van het spel
</title>
<!--aanpassen naar eigen smaak natuurlijk -->
<body bgcolor="lightblue" link="red">
<table border="1" width="100%" height="100%">
<tr><td colspan="2" height="15%"><h1 align="center">Forum</h1></td></tr>
<tr>
<td width="15%" valign="top">
</td>
<td width="85%" valign="top">
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
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?php
$dbhost="localhost"; //waar is je database gehost ?
$dbuser="root"; //wat is je username ??
$dbpass="****"; // en je password ?
$db="spel"; //en je database zelf ???
//=>$['stop']$<=
$cat=$_GET['cat'];
$nieuwforum=$_GET['nieuwforum'];
$bekijk=$_GET['bekijk'];
$isset=$_GET['isset'];
$reactie=$_GET['reactie'];
if(isset($reactie)){
//even de variablen defineren
$naam=$HTTP_COOKIE_VARS['naam'];
$inhoud=$_POST['rea_inhoud'];
$forum=$reactie;
//connectie maken met de database
mysql_connect($dbhost,$dbuser,$dbpass);
//de database selecteren
mysql_select_db($db);
//het query
mysql_query("INSERT INTO `reacties` ( `forum` , `inhoud` , `naam` ) VALUES ('".$forum."', '".$inhoud."', '".$naam."')");
//even vertellen dat we het hebben weggeschreven ...
echo "Reactie geplaatst ! bekijk <a href=\"forum.php?bekijk=".$forum."\">Het forum</a>";
//de connectie verbreken
mysql_close();
}
else {
if(isset($isset)){
//klaar !
$naam=$HTTP_COOKIE_VARS['naam'];
$titel=$_POST['titel'];
$inhoud=$_POST['inhoud'];
$cat=$_POST['cat'];
$inhoud=htmlspecialchars($inhoud);
$inhoud=nl2br($inhoud);
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db);
mysql_query("INSERT INTO `forums` ( `id` , `cathegorie` , `forum_naam` , `forum_inhoud` , `schrijver` ) VALUES (NULL , '".$cat."', '".$titel."', '".$inhoud."', '".$naam."')");
mysql_close();
echo "Bericht succesvol gepost, <a href=\"forum.php?cat=".$cat."\">klik hier om te bekijken</a>";
}
else {
if(isset($bekijk)){
//bekijk forum
//connectie
mysql_connect($dbhost,$dbuser,$dbpass);
//selecteer de database
mysql_select_db($db);
//query
$query2=mysql_query('SELECT * FROM forums WHERE id='.$bekijk.'');
//zolang er elementen in de array zitten, tonen
while($data = mysql_fetch_array($query2)){
//echoën !
echo '<a href="forum.php?">Index</a> > <a href="javascript:history.back()" onclick="history.back">vorige cathegorie</a>';
//tabel mooi openen,
echo '<center><table border="1" width="50%">';
//de titel.
echo '<tr><td><center><h3>'.$data['forum_naam'].'</h3></td></tr>';
echo '<tr><td><center>'.$data['forum_inhoud'].'</center></td></tr>';
echo '<tr><td><center>geschreven door : '.$data['schrijver'].'</center></td></tr>';
}
//we willen een leeg vak met de vermelding "reacties"
echo '<tr><td><center><h3>Reacties</h3></center></td></tr>';
//reacties tonen :
//even het object ID zoeken
//in de link !
//dit hebben we hier nodig :
//query
$query3=mysql_query('SELECT * FROM reacties WHERE forum='.$bekijk.'');
//we willen ze mooi onder elkaar, dus we steken ze in een array
//zolang er elementen in de array zitten, toon ze.
//maar als er geen zijn, dan willen we de bezoekers een beetje aanmoedigen.
//en dat doen we als volgt :
if(mysql_fetch_row($query3)==0){
echo "<tr><td><center>Er zijn nog geen reacties, dus wees snel ! misschien ben jij de eerste !</center></td></tr>";
}
else {
while ($reacties = mysql_fetch_array($query3)){
echo '<tr><td><b>'.$reacties['naam'].'</b> schreef :<br>'.$reacties['inhoud'].'</td></tr>';
}
}
echo '</table>';
echo "<br><br>";
echo '<table border=0 witdh="100%">';
//de reacties zijn getoont !
//nu een vak met de vermelding dat je kan posten :
echo "<tr><td><h3>Schrijf reactie</h3></td></tr>";
//het formulier, we gebruiken GEEN Server self maar een GET link omdat we de naam van het forum moeten meesturen die we willen bekijken.
echo "<form action=\"forum.php?reactie=".$bekijk."\" method=\"post\">";
//en nu de tekstarea (de naam is rea_inhoud) moet redelijk breed zijn, stel nu 55 colommen en 4 rijen hoog:
echo "<tr><td>reactie : <br><textarea name=\"rea_inhoud\" cols=\"55\" rows=\"4\"></textarea></td></tr>";
//en de submitknop :
echo "<tr><td><input type=\"submit\" value=\"verstuur reactie\"></td></tr>";
//einde van het formulier
echo "</form>";
//einde van de tabel
echo '</table></center>';
mysql_close();
}
else {
if(isset($nieuwforum)){
echo '<table border="0">';
echo "<form action=\"forum.php?isset\" method=\"post\">";
echo '<tr><td>Forum titel : <input type="text" name="titel"></td></tr>';
echo '<tr><td>Inhoud :</td></tr>';
echo '<tr><td><textarea name="inhoud" cols="55" rows="5"></textarea></td></tr>';
echo '<tr><td><input type="hidden" value="'.$nieuwforum.'" name="cat">';
echo '<tr><td><input type="submit" value="Post Topic" name="post"></td></tr>';
echo '</form>';
echo '</table>';
}
else {
if(isset($cat)){
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db);
echo '<p><a href="forum.php?nieuwforum='.$cat.'">nieuw Forum</a></p><br>';
echo '<table border="1" width="100%">';
$query2=mysql_query('SELECT * FROM forums WHERE cathegorie='.$cat.' ORDER BY id DESC');
$rows=mysql_fetch_row($query2);
if ($rows = 0){
echo '<tr><td>Nog geen forums in deze cathegorie ...</td></tr>';
}
else {
while($data = mysql_fetch_array($query2)){
echo '<tr><td width="75%"><b><a href="forum.php?bekijk='.$data['id'].'">'.$data['forum_naam'].'</a></b></td><td>'.$data['schrijver'].'</td></tr>';
}
}
echo '</table>';
mysql_close();
}
else {
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db);
$query=mysql_query('SELECT * FROM cathegorien');
echo '<table border="1" width="100%">';
while($data = mysql_fetch_array($query)){
echo '<tr><td><b><a href="forum.php?cat='.$data['id'].'">'.$data['naam'].'</a></b><br>'.$data['beschrijving'].'</td></tr>';
}
echo '</table>';
mysql_close();
}
}
}
}
}
?>
$dbhost="localhost"; //waar is je database gehost ?
$dbuser="root"; //wat is je username ??
$dbpass="****"; // en je password ?
$db="spel"; //en je database zelf ???
//=>$['stop']$<=
$cat=$_GET['cat'];
$nieuwforum=$_GET['nieuwforum'];
$bekijk=$_GET['bekijk'];
$isset=$_GET['isset'];
$reactie=$_GET['reactie'];
if(isset($reactie)){
//even de variablen defineren
$naam=$HTTP_COOKIE_VARS['naam'];
$inhoud=$_POST['rea_inhoud'];
$forum=$reactie;
//connectie maken met de database
mysql_connect($dbhost,$dbuser,$dbpass);
//de database selecteren
mysql_select_db($db);
//het query
mysql_query("INSERT INTO `reacties` ( `forum` , `inhoud` , `naam` ) VALUES ('".$forum."', '".$inhoud."', '".$naam."')");
//even vertellen dat we het hebben weggeschreven ...
echo "Reactie geplaatst ! bekijk <a href=\"forum.php?bekijk=".$forum."\">Het forum</a>";
//de connectie verbreken
mysql_close();
}
else {
if(isset($isset)){
//klaar !
$naam=$HTTP_COOKIE_VARS['naam'];
$titel=$_POST['titel'];
$inhoud=$_POST['inhoud'];
$cat=$_POST['cat'];
$inhoud=htmlspecialchars($inhoud);
$inhoud=nl2br($inhoud);
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db);
mysql_query("INSERT INTO `forums` ( `id` , `cathegorie` , `forum_naam` , `forum_inhoud` , `schrijver` ) VALUES (NULL , '".$cat."', '".$titel."', '".$inhoud."', '".$naam."')");
mysql_close();
echo "Bericht succesvol gepost, <a href=\"forum.php?cat=".$cat."\">klik hier om te bekijken</a>";
}
else {
if(isset($bekijk)){
//bekijk forum
//connectie
mysql_connect($dbhost,$dbuser,$dbpass);
//selecteer de database
mysql_select_db($db);
//query
$query2=mysql_query('SELECT * FROM forums WHERE id='.$bekijk.'');
//zolang er elementen in de array zitten, tonen
while($data = mysql_fetch_array($query2)){
//echoën !
echo '<a href="forum.php?">Index</a> > <a href="javascript:history.back()" onclick="history.back">vorige cathegorie</a>';
//tabel mooi openen,
echo '<center><table border="1" width="50%">';
//de titel.
echo '<tr><td><center><h3>'.$data['forum_naam'].'</h3></td></tr>';
echo '<tr><td><center>'.$data['forum_inhoud'].'</center></td></tr>';
echo '<tr><td><center>geschreven door : '.$data['schrijver'].'</center></td></tr>';
}
//we willen een leeg vak met de vermelding "reacties"
echo '<tr><td><center><h3>Reacties</h3></center></td></tr>';
//reacties tonen :
//even het object ID zoeken
//in de link !
//dit hebben we hier nodig :
//query
$query3=mysql_query('SELECT * FROM reacties WHERE forum='.$bekijk.'');
//we willen ze mooi onder elkaar, dus we steken ze in een array
//zolang er elementen in de array zitten, toon ze.
//maar als er geen zijn, dan willen we de bezoekers een beetje aanmoedigen.
//en dat doen we als volgt :
if(mysql_fetch_row($query3)==0){
echo "<tr><td><center>Er zijn nog geen reacties, dus wees snel ! misschien ben jij de eerste !</center></td></tr>";
}
else {
while ($reacties = mysql_fetch_array($query3)){
echo '<tr><td><b>'.$reacties['naam'].'</b> schreef :<br>'.$reacties['inhoud'].'</td></tr>';
}
}
echo '</table>';
echo "<br><br>";
echo '<table border=0 witdh="100%">';
//de reacties zijn getoont !
//nu een vak met de vermelding dat je kan posten :
echo "<tr><td><h3>Schrijf reactie</h3></td></tr>";
//het formulier, we gebruiken GEEN Server self maar een GET link omdat we de naam van het forum moeten meesturen die we willen bekijken.
echo "<form action=\"forum.php?reactie=".$bekijk."\" method=\"post\">";
//en nu de tekstarea (de naam is rea_inhoud) moet redelijk breed zijn, stel nu 55 colommen en 4 rijen hoog:
echo "<tr><td>reactie : <br><textarea name=\"rea_inhoud\" cols=\"55\" rows=\"4\"></textarea></td></tr>";
//en de submitknop :
echo "<tr><td><input type=\"submit\" value=\"verstuur reactie\"></td></tr>";
//einde van het formulier
echo "</form>";
//einde van de tabel
echo '</table></center>';
mysql_close();
}
else {
if(isset($nieuwforum)){
echo '<table border="0">';
echo "<form action=\"forum.php?isset\" method=\"post\">";
echo '<tr><td>Forum titel : <input type="text" name="titel"></td></tr>';
echo '<tr><td>Inhoud :</td></tr>';
echo '<tr><td><textarea name="inhoud" cols="55" rows="5"></textarea></td></tr>';
echo '<tr><td><input type="hidden" value="'.$nieuwforum.'" name="cat">';
echo '<tr><td><input type="submit" value="Post Topic" name="post"></td></tr>';
echo '</form>';
echo '</table>';
}
else {
if(isset($cat)){
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db);
echo '<p><a href="forum.php?nieuwforum='.$cat.'">nieuw Forum</a></p><br>';
echo '<table border="1" width="100%">';
$query2=mysql_query('SELECT * FROM forums WHERE cathegorie='.$cat.' ORDER BY id DESC');
$rows=mysql_fetch_row($query2);
if ($rows = 0){
echo '<tr><td>Nog geen forums in deze cathegorie ...</td></tr>';
}
else {
while($data = mysql_fetch_array($query2)){
echo '<tr><td width="75%"><b><a href="forum.php?bekijk='.$data['id'].'">'.$data['forum_naam'].'</a></b></td><td>'.$data['schrijver'].'</td></tr>';
}
}
echo '</table>';
mysql_close();
}
else {
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db);
$query=mysql_query('SELECT * FROM cathegorien');
echo '<table border="1" width="100%">';
while($data = mysql_fetch_array($query)){
echo '<tr><td><b><a href="forum.php?cat='.$data['id'].'">'.$data['naam'].'</a></b><br>'.$data['beschrijving'].'</td></tr>';
}
echo '</table>';
mysql_close();
}
}
}
}
}
?>
<!-- nog even de footer : niet aanpassen ! ik heb het forum gemaakt ! dus doe je dat, dan klaag ik je aan al ik het ontdek. en alle commentaar verwijderen, is ook schennis; je hebt het zitten !-->
<br><br>
<center><table border="5" width="75%">
<tr><td><center>Forum by Bart Coene; copyright© 2007-<br></center></td></tr>
</table></center>
</td></tr>
</table>
</body>
</html>
<!--
zo, dat was het.
hopelijk vond je het educatief.
-->
Code (php)
er staat een checksysteem op maar daar moet je niet op letten.
Gr
Bart
even een concrete bescrijving van de fout :
als je een bericht post, dan toont hij het laatste niet.
als je een replie post dan toon hij de eerst geposte replie niet, enkel de tweede, derde, ...
Gewijzigd op 01/01/1970 01:00:00 door Bart
zoals je het nu doet zou het gewoon moeten werken volgens mij.
Wel wil ik je erop wijzen dat je gevoelig bent voor SQL Injection op dit moment, je voert je $_GET variabelen namelijk letterlijk in in je query.
eerst moet je hier een check op uitvoeren of deze bijv. numeriek is, en addslashes eroverheen halen e.d.