login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Nieuwssystemen > Reactiesysteem (wedstrijd) - 2de

Reactiesysteem (wedstrijd) - 2de

Auteur: GTW - 13 november 2006 - 18:53 - Gekeurd door: Joel - Hits: 10878 - Aantal punten: 2.88 (4 stemmen)




Dit is een script dat heeft meegedaan met een wedstrijd. Dit script was tweede, en is gemaakt door GTW.

Tabel aanmaken in de database:

CREATE TABLE `reacties` (
`id` int(8) NOT NULL auto_increment,
`msg_id` int(8) NOT NULL,
`plaatser` varchar(100) collate utf8_unicode_ci NOT NULL,
`email` varchar(100) collate utf8_unicode_ci NOT NULL,
`bericht` text collate utf8_unicode_ci NOT NULL,
`posted` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=17 ;

Code:
  1. <?php
  2.  
  3. ##### Reactie systeem ######################
  4. /*
  5. Auteur: Gijs Middelkamp
  6. Email: gkwmiddelkamp@gmail.com
  7.  
  8. Type reactie systeem:
  9. Dit systeem is gebouwd om reacties te kunnen toevoegen aan (nieuws)berichten.
  10.  
  11.  
  12. Hoe het te gebruiken?
  13. Om het reactie syateem te gebruiken, is het enige wat er moet gebeuren:
  14. - De instellingen goed zetten.
  15. - de functies ergens oproepen, en de rest wordt voor gezorgd dor de functies zelf.
  16.  
  17.  
  18. Lijst van functies:
  19. - showUbbVeld($formnaam,$textveld);
  20. Deze functie laat een tabel zien waarmee gemakkelijk de beschikbare BBcodes ingevoerd kan worden. De variabele $formnaam verwijst naar de naam van het formulier waar het textveld ($textveld) in staat, waar de BBcodes in moeten komen te staan.
  21.  
  22. - vervangUbb();
  23. Vervangt bij het weergeven van de reacties de BBcodes door HTML tags.
  24.  
  25. - haal_num_reacties($id);
  26. Dit weergeeft een getal en "reactie" bij 1 reactie en "reacties" bij meerdere reacties
  27.  
  28. - show_reacties($id);
  29. Dit geeft de reacties op een bericht uit de database aan met de id $id.
  30.  
  31. - admin_login();
  32. Dit geeft de administratie login weer. Als er al ingelogd is als admin, geeft deze een knop weer met loguit.
  33.  
  34. - edit_msg($id);
  35. Met deze functie kan een reactie aangepast worden met de id $id.
  36.  
  37. - delete_reactie($reactie_id);
  38. Deze functie vraagt eerst of de reactie met de id $reactie_id echt verwijderd mag worden.
  39. Als daar op "Ja" wordt gedrukt, dan wordt de reactie direct verwijderd uit de database.
  40.  
  41. - post_reaction($bericht_id);
  42. Dit geeft een invoerveld weer, als die gesubmit wordt, wordt er gecontroleerd op lege velden. Als alles correct is ingevuld, ookk het email adres, dan wordt de reactie geplaatst
  43. */
  44. ############################################
  45.  
  46. ##### MySQL tabel ##########################
  47. /*
  48. CREATE TABLE `reacties` (
  49. `id` INT( 8 ) NOT NULL AUTO_INCREMENT ,
  50. `msg_id` INT( 8 ) NOT NULL ,
  51. `plaatser` VARCHAR( 100 ) NOT NULL ,
  52. `email` VARCHAR( 100 ) NOT NULL ,
  53. `bericht` TEXT NOT NULL ,
  54. `posted` INT( 10 ) NOT NULL ,
  55. PRIMARY KEY ( `id` )
  56. ) TYPE = MYISAM ;
  57.  
  58. Waarom deze tabel?
  59. - Het is klein, en er zitten geen overbodige velden in.
  60. - De naam en email velden zijn gelimiteerd tot 100 tekens om veel dataverkeer te voorkomen
  61. */
  62. ############################################
  63.  
  64. ##### instellingen berichten-tabel #########
  65. $tabel = "berichten"; # de tabel waar de berichten staan waar op gereageerd moet worden
  66. $msg_id = "id"; # de veldnaam met de bericht id's
  67. $msg_subject = "onderwerp"; # de veldnaam met de onderwerpen
  68. ############################################
  69.  
  70. ##### overige instellingen #################
  71. $adminlogin = "sima"; # De loginnaam waarmee je wilt inloggen (Niet hoofdlettergevoelig)
  72. $adminpass = "test"; # Het wachtwoord waarmee de admin mag inloggen (niet hoofdlettergevoelig)
  73. $max_msg = 10; # Het aantal reacties dat maximaal per pagina weergeven mag worden
  74. ############################################
  75.  
  76. ##### verbinding maken met de database #####
  77. if(!mysql_connect("localhost","###","###")||!mysql_select_db("reactie")){
  78. ?>
  79. <font style="color:#FF0000;">Geen verbinding met de database<br /><?=mysql_error();?></font>
  80. <?
  81. }
  82. ############################################
  83.  
  84. ##### bbcode invoegen ###################
  85. # Plaats deze functie als extraatje boven ove onder het bericht_toevoegen en edit veld
  86. function showUbbVeld($formnaam,$textveld){
  87. # Voor bij een bericht plaatsen: showUbbVeld("post","bericht");
  88. # Voor bij een bericht aanpassen: showUbbVeld("pasaan","bericht");
  89. ?>
  90. <!-- BBcode tabel -->
  91. <table style="border:1px ridge #DDDDDD;">
  92. <tr>
  93. <td style="font-weight:bold;" colspan="3">BB-Code</td>
  94. </tr>
  95. <tr>
  96. <td><input type="button" name="B" value="B" onmouseup="<?=$formnaam;?>.<?=$textveld;?>.value+='[b] [/b]'" /></td>
  97. <td><input type="button" name="U" value="U" onmouseup="<?=$formnaam;?>.<?=$textveld;?>.value+='[u] [/u]'" /></td>
  98. <td><input type="button" name="I" value="I" onmouseup="<?=$formnaam;?>.<?=$textveld;?>.value+='[i] [/i]'" /></td>
  99. </tr>
  100. <tr>
  101. <td><input type="button" name="url" value="URL" onmouseup="<?=$formnaam;?>.<?=$textveld;?>.value+='[url] [/url]'" /></td>
  102. <td><input type="button" name="img" value="img" onmouseup="<?=$formnaam;?>.<?=$textveld;?>.value+='[img] [/img]'" /></td>
  103. <td><select name="align" onchange="<?=$formnaam;?>.<?=$textveld;?>.value += '[align=' + this.value + '] [/align]'">
  104. <option>-----</option>
  105. <option value="right">Rechts</option>
  106. <option value="left">Links</option>
  107. <option value="center">Centreren</option>
  108. </select></td>
  109. </tr>
  110. <tr>
  111. <td><select name="size" onchange="<?=$formnaam;?>.<?=$textveld;?>.value+='[size='+this.value+'] [/size]'">
  112. <option>-----</option>
  113. <option value="8">8px</option>
  114. <option value="10">10px</option>
  115. <option value="12">12px</option>
  116. <option value="16">16px</option>
  117. <option value="20">20px</option>
  118. <option value="24">24px</option>
  119. </select></td>
  120. <td><select name="color" onchange="<?=$formnaam;?>.<?=$textveld;?>.value+='[color='+this.value+'] [/color]'">
  121. <option>-----</option>
  122. <option value="#FF0000">Rood</option>
  123. <option value="#0000FF">Blauw</option>
  124. <option value="#FFFFFF">Wit</option>
  125. <option value="#000000">Zwart</option>
  126. </select>
  127. </td>
  128. <td></td>
  129. </tr>
  130. </table>
  131. <!-- einde BBcode tabel -->
  132. <?
  133. }
  134. ############################################
  135.  
  136. ##### De UBB-codes #########################
  137. function vervangUbb($msg){
  138. /* bold*/ $msg = preg_replace("#\[b\](.*?)\[/b\]#si","<b>\\1</b>", $msg);
  139. /* underline*/ $msg = preg_replace("#\[u\](.*?)\[/u\]#si","<u>\\1</u>", $msg);
  140. /* italic*/ $msg = preg_replace("#\[i\](.*?)\[/i\]#si","<i>\\1</i>", $msg);
  141. /* url 1*/ $msg = preg_replace("#\[url\](.*?)\[/url\]#si","<a href=\"\\1\" target=\"_blank\">\\1</a>", $msg);
  142. /* url 2*/ $msg = preg_replace("#\[url=(.*?)\](.*?)\[/url\]#si","<a href=\"\\1\" target=\"_blank\">\\2</a>", $msg);
  143. /* imagetag*/ $msg = preg_replace("#\[img\](.*?)\[/img\]#si","<img src=\"\\1\" alt=\"\">", $msg);
  144. /* align*/ $msg = preg_replace("#\[align=(.*?)\](.*?)\[/align\]#si","<p align=\"\\1\">\\2</p>", $msg);
  145. /* size*/ $msg = preg_replace("#\[size=(.*?)\](.*?)\[/size\]#si","<font size=\"\\1\">\\2</font>", $msg);
  146. /* color*/ $msg = preg_replace("#\[color=(.*?)\](.*?)\[/color\]#si","<font color=\"\\1\">\\2</font>", $msg);
  147. $msg = nl2br($msg);
  148. return $msg;
  149. }
  150. ############################################
  151.  
  152.  
  153. ##### Functie "Haal aantal reacties op" ####
  154. function haal_num_reacties($id){
  155. ##### Deze functie kan ergens neergeplaatst worden.
  156. ##### Dan komt daar het aantal reacties te staan
  157. if(!is_numeric($id)){
  158. echo "\$id is niet numeriek";
  159. return;
  160. }
  161. else{
  162. $isql = mysql_num_rows(mysql_query("SELECT * FROM `reacties` WHERE `msg_id`='".$id."'"));
  163. return $isql.($isql==1)?' reactie':' reacties';
  164. }
  165. }
  166. #############################################
  167.  
  168.  
  169. ##### functie "Laat alle reacties met een bepaals msg_id zien" ######
  170. function show_reacties($id){
  171. global $max_msg,$msg_subject,$tabel,$msg_id,$adminlogin;
  172. ##### Deze functie laat alle reacties uit de tabel "reacties" zien met msg_id = $id #####
  173. if(!is_numeric($id)){
  174. echo "\$id is niet numeriek";
  175. return;
  176. }
  177. else{
  178. $num_msg = mysql_num_rows(mysql_query("SELECT * FROM `reacties` WHERE `msg_id`='".$id."'"));
  179. if($num_msg==0){
  180. ##### er zijn geen reacties op hetgene met dit id #####
  181. ?>
  182. <table border="1">
  183. <tr>
  184. <td><b>Er zijn nog geen reacties</b></td>
  185. </tr>
  186. </table>
  187. <?
  188. }
  189. else{
  190. ##### er zijn reacties #####
  191. $p = (isset($_GET['p']))?$_GET['p']:1;
  192. if($num_msg>$max_msg){
  193. $aantal_paginas = ceil($num_msg/$max_msg);
  194. ?>
  195. <table border="2" width="500" style="margin-bottom:5px;">
  196. <tr>
  197. <td>
  198. <?php
  199. if($p!=1){
  200. ?>
  201. <a href="<?=$_SERVER['PHP_SELF'];?>?p=1">&lt;&lt;</a>&nbsp;<a href="<?=$_SERVER['PHP_SELF'];?>?p=<?=$p-1;?>">&lt;</a>
  202. <?
  203. }
  204. ?>
  205. <select name="nav" onchange="window.location.href='<?=$_SERVER['PHP_SELF'];?>?p='+this.value">
  206. <?
  207. for($i=1;$i<=$aantal_paginas;$i++){
  208. ?>
  209. <option value="<?=$i;?>" <?=($p==$i)?'selected="selected"':'';?>><?=$i;?></option>
  210. <?
  211. }
  212. ?>
  213. </select>
  214. <?php
  215. if($p!=$aantal_paginas){
  216. ?>
  217. <a href="<?=$_SERVER['PHP_SELF'];?>?p=<?=$p+1;?>">&gt;</a>&nbsp;<a href="<?=$_SERVER['PHP_SELF'];?>?p=<?=$aantal_paginas;?>">&gt;&gt;</a>
  218. <?
  219. }
  220. ?>
  221. </td>
  222. </tr>
  223. </table>
  224. <?
  225. }
  226. $subject = mysql_fetch_assoc(mysql_query("SELECT ".$msg_subject." FROM ".$tabel." WHERE ".$msg_id."='".$id."'"));
  227. ?>
  228. <table border="1" width="500" style="margin-bottom:10px;">
  229. <tr>
  230. <td><b><?=$subject[$msg_subject];?></b></td>
  231. </tr>
  232. </table>
  233. <?
  234. $start = ($p*$max_msg)-$max_msg;
  235. $sql = mysql_query("SELECT * FROM `reacties` WHERE `msg_id`='".$id."' ORDER by `posted` DESC LIMIT ".$start.",".$max_msg);
  236. while($msg = mysql_fetch_object($sql)){
  237. ?>
  238. <table border="1" style="height:125px; width:500px; margin-bottom:10px;">
  239. <tr>
  240. <td style="width:100px;vertical-align:top; padding: 5px; font-weight: bold;"><?=wordwrap($msg->plaatser,13,"<br />",10);?></td>
  241. <td style="width:400px;vertical-align:top; padding: 5px;"><?=vervangUbb($msg->bericht);?></td>
  242. </tr>
  243. <tr>
  244. <td style="padding-left: 5px; height:10px; font-size:16px; color:#666666;" colspan="2">Geplaatst: <?=date("d-m-y, H:i",$msg->posted);?></td>
  245. </tr>
  246. </table>
  247. <?
  248. }
  249. }
  250. }
  251. }
  252. #######################################
  253.  
  254.  
  255. ##### Functie "Laat adminlogin zien" ##
  256. function admin_login(){
  257. global $adminlogin,$adminpass;
  258. if(!isset($_SESSION['reactie_admin'])||$_SESSION['reactie_admin']!=$adminlogin){
  259. if(isset($_POST['admin_login'])){
  260. if(strtolower($_POST['loginnaam'])==strtolower($adminlogin)and(strtolower($_POST['wachtwoord'])==strtolower($adminpass))){
  261. $_SESSION['reactie_admin']=$adminlogin;
  262. header("location:".$_SERVER['REQUEST_URI']);
  263. }
  264. else{
  265. ?>
  266. <font style="color: #FF0000;">Verkeerde loginnaam of wachtwoord</font>
  267. <?
  268. }
  269. }
  270. else{
  271. ?>
  272. <form name="admin_login" action="<?=$_SERVER['REQUEST_URI'];?>" method="post">
  273. <table border="1">
  274. <tr>
  275. <td>Admin-login</td>
  276. </tr>
  277. <tr>
  278. <td><input type="text" name="loginnaam" value="<loginnaam>" style="color:#999999;" onfocus="javascript:if(this.value='<loginnaam>'){this.value='';this.style.color='#000000';};" /></td>
  279. </tr>
  280. <tr>
  281. <td><input type="password" name="wachtwoord" value="wachtwoord" style="color:#999999;" onfocus="javascript:if(this.value='wachtwoord'){this.value='';this.style.color='#000000';};" /></td>
  282. </tr>
  283. <tr>
  284. <td><input type="submit" name="admin_login" value="Login" /></td>
  285. </tr>
  286. </table>
  287. </form>
  288. <?
  289. }
  290. }
  291. else{
  292. if(isset($_POST['admin_logout'])){
  293. session_unset($_SESSION['reactie_admin']);
  294. header("location:".$_SERVER['REQUEST_URI']);
  295. }
  296. else{
  297. ?>
  298. <form name="admin_logout" method="post" action="<?=$_SERVER['REQUEST_URI'];?>">
  299. <table>
  300. <tr>
  301. <td><input type="submit" name="admin_logout" value="log uit" /></td>
  302. </tr>
  303. </table>
  304. </form>
  305. <?
  306. }
  307. }
  308. }
  309. #######################################
  310.  
  311.  
  312. ##### functie "Edit" ##################
  313. function edit_msg($id){
  314. global $adminlogin;
  315. if(!is_numeric($id)||!isset($_SESSION['reactie_admin'])||$_SESSION['reactie_admin']!=$adminlogin){
  316. ?>
  317. <font style="color:#FF0000;">Je hebt het recht niet om dit te bekijken!</font>
  318. <?
  319. return;
  320. }
  321. else{
  322. if(isset($_POST['submit'])){
  323. $plaatser = htmlentities($_POST['plaatser']);
  324. $email = htmlentities($_POST['email']);
  325. $bericht = htmlentities($_POST['bericht']);
  326. $query = "UPDATE `reacties` SET `plaatser`='".$plaatser."',`email`='".$email."',`bericht`='".$bericht."' WHERE `id`='".$id."'";
  327. if(mysql_query($query)){
  328. ?>
  329. <font style="color:#00CC00;">Succesvol aangepast</font>
  330. <?
  331. }
  332. else{
  333. ?>
  334. <font style="color:#FF0000;">Niet aangepast vanwege een fout</font>
  335. <?
  336. }
  337. }
  338. else{
  339. $sql = mysql_fetch_object(mysql_query("SELECT * FROM `reacties` WHERE `id`='".$id."'"));
  340. ?>
  341. <form name="pasaan" method="post" action="<?=$_SERVER['REQUEST_URI'];?>">
  342. <table style="border:1px ridge #DDDDDD;">
  343. <tr>
  344. <td style="font-weight:bold;">Gepost door:</td>
  345. <td><input type="text" name="plaatser" value="<?=$sql->plaatser;?>" maxlength="100" /></td>
  346. </tr>
  347. <tr>
  348. <td style="font-weight:bold;">Email:</td>
  349. <td><input type="text" name="email" value="<?=$sql->email;?>" maxlength="100" /></td>
  350. </tr>
  351. <tr>
  352. <td style="font-weight:bold;">Voorbeeld text:</td>
  353. <td><?=vervangUbb($sql->bericht);?></td>
  354. </tr>
  355. <tr>
  356. <td style="font-weight:bold; vertical-align:top;">Bericht:</td>
  357. <td><textarea name="bericht" cols="25" rows="7"><?=$sql->bericht;?></textarea></td>
  358. </tr>
  359. <tr>
  360. <td colspan="2" style="text-align:center;"><input type="submit" name="submit" value="Pas aan" /></td>
  361. </tr>
  362. </table>
  363. </form>
  364. <?
  365. }
  366. }
  367. }
  368. #######################################
  369.  
  370. ##### functie "verwijder een niet-correct bericht"#
  371. function delete_reactie($reactie_id){
  372. global $adminlogin;
  373. if(!isset($_SESSION['reactie_admin'])||$_SESSION['reactie_admin']!=$adminlogin||!is_numeric($reactie_id)){
  374. ?>
  375. <font style="color:#FF0000;">Je hebt geen rechten tot dit gedeelte</font>
  376. <?
  377. return;
  378. }
  379. if( mysql_num_rows(mysql_query("SELECT * FROM `reacties` WHERE `id`='".$reactie_id."'"))>0){
  380. if(isset($_POST['delete'])){
  381. $sql = "DELETE FROM `reacties` WHERE `id`='".$reactie_id."'";
  382. if(mysql_query($sql)){
  383. ?>
  384. <font>De reactie is succesvol verwijderd</font>
  385. <?
  386. }
  387. else{
  388. ?>
  389. <font style="color:#FF0000;">Het verwijderen is mislukt</font>
  390. <?
  391. }
  392. }
  393. else{
  394. ?>
  395. <form name="del" method="post" action="<?=$_SERVER['REQUEST_URI'];?>">
  396. <table style="border:1px rigde #DDDDDD">
  397. <tr>
  398. <td colspan="2" style="text-align:center; font-weight:bold;">Reactie verwijderen?</td>
  399. </tr>
  400. <tr>
  401. <td style="text-align:center; width:50%;"><input type="submit" name="delete" value="Ja" /></td>
  402. <td style="text-align:center; width:50%;"><input type="button" name="return" value="Nee" onmouseup="window.location.href='<?=$_SERVER['HTTP_REFERER'];?>'" /></td>
  403. </tr>
  404. </table>
  405. </form>
  406. <?
  407. }
  408. }
  409. else{
  410. ?>
  411. <font style="color:#FF0000;">Er bestaat geen reactie met dat id</font>
  412. <?
  413. }
  414. }
  415. ###################################################
  416.  
  417. ##### functie "Reactie plaatsen" ######
  418. function post_reaction($bericht_id){
  419. # het bericht is is de id van het nieuwbericht waar op gereageerd wordt
  420. if(isset($_POST['plaats'])&&!empty($_POST['plaatser'])&&!empty($_POST['email'])&&!empty($_POST['bericht'])){
  421. $plaatser = htmlentities($_POST['plaatser']);
  422. $email = htmlentities($_POST['email']);
  423. $bericht = htmlentities($_POST['bericht']);
  424. if(!preg_match("/^([a-z0-9_-]+\.)*[a-z0-9_-]+@([a-z0-9_-]{2,}\.)+([a-z0-9_-]{2,})$/i",$email)){
  425. ?>
  426. <font style="color:#FF0000;">Het ingevoerde email adres is niet geldig</font>
  427. <?
  428. return;
  429. }
  430. $query = "INSERT INTO `reacties` (`msg_id`,`plaatser`,`email`,`bericht`,`posted`) VALUES ('".$bericht_id."','".$plaatser."','".$email."','".$bericht."','".time()."')";
  431. if(mysql_query($query)){
  432. ?>
  433. <font>Je reactie is succesvol geplaatst</font>
  434. <?
  435. }
  436. else{
  437. ?>
  438. <font style="color:#FF0000;">Je reactie is niet geplaatst</font>
  439. <?
  440. }
  441. }
  442. else{
  443. ?>
  444. <form name="post" action="<?=$_SERVER['REQUEST_URI'];?>" method="post">
  445. <table style="border:1px ridge #DDDDDD;">
  446. <tr>
  447. <td colspan="2" style="font-weight:bold;">Reactie plaatsen</td>
  448. </tr>
  449. <tr>
  450. <td style="font-weight:bold;">Naam:</td>
  451. <td><input type="text" value="" name="plaatser" maxlength="100" /></td>
  452. </tr>
  453. <tr>
  454. <td style="font-weight:bold;">Email:</td>
  455. <td><input type="text" name="email" value="" maxlength="100" /></td>
  456. </tr>
  457. <tr>
  458. <td style="font-weight:bold;">Bericht:</td>
  459. <td><textarea name="bericht" cols="27" rows="5"></textarea></td>
  460. </tr>
  461. <tr>
  462. <td colspan="2"><input type="submit" name="plaats" value="Plaats bericht" /></td>
  463. </tr>
  464. </table>
  465. </form>
  466. <?
  467. }
  468. }
  469. #######################################
  470. admin_login();
  471. edit_msg(14);
  472. showUbbVeld("pasaan","bericht");
  473. ?>
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (6)
© 2002-2022 Sitemasters.be - Regels - Laadtijd: 0.053s