Waarom toont hij de laatste reactie niet ?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bart

Bart

05/04/2007 20:43:00
Quote Anchor link
Beste allemaal.
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)
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
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">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
include('menu.php');
?>

</td>
<td width="85%" valign="top">
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
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> &gt; <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>&nbsp;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&copy; 2007-
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $jaar=date("Y"); echo $jaar;?>
<br>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $dag=date("j F Y"); echo $dag; ?>
</center></td></tr>
</table></center>
</td></tr>
</table>
</body>
</html>
<!--
zo, dat was het.
hopelijk vond je het educatief.
-->
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
}
else{
    echo "Sorry, maar je moet inloggen om gebruik te maken van het forum.";
}

?>


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

PHP hulp

21/11/2024 20:33:21
 
Stefan van Iwaarden

Stefan van Iwaarden

05/04/2007 20:47:00
Quote Anchor link
je had ook gewoon het stukje van regel 44 t/m 100 kunnen posten ipv dat hele script.
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.
 



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.