Brugernavn:




Kodeord: Husk
Forside Forum Artikler Downloads Søg
 

Nyhedsystem m. kommentare


Inden vi går igang, skal du have kendskab til en smule PHP, ellers er det ikke sjovt.
Denne gang skal vi lære at opbygge et kommentar system.
Det er ikke så svært som nogle mennesker går og tror (jeg troede selv det var meget svært).
Men i denne artikel vil jeg prøve at forklare hvordan man gør :)
Det er ikke sikkert at det virker, men scriptet er gratis, ligesom resten af artiklen ;)

Vi bruger følgende filer:
- index.php (Til at se nyhederne)
- index.opret.php (Til at oprette nyhederne)
- index.vis.php (Til kommentarene)
- config.php (Vores MYSQL informationer)

Og igen, scriptet er ikke testet, da det bruges til at lære folk PHP, ikke for at folk skal bruge det.

Min rækkefølge er:
- Jeg laver koden, du læser koden + de kommentare jeg har smidt i koden, ok?
Lad os begynde :D

config.php
  1. <?php
  2. $host = "DIN HOST";
  3. $user = "DIN BRUGER";
  4. $pass = "DIT PASS";
  5. $db = "DIN DATABASE";
  6. mysql_connect("$host", "$user", "$pass");
  7. mysql_select_db("$db");
  8. ?>
Config.php er bare en simpel fil, hvori vores mysql oplysninger er i.
Vi hopper straks videre..

Vi starter selvfølgelig med en database (eller faktisk 2)
Den første er til nyhederne.
  1. CREATE TABLE `nyheder` (
  2. `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. `titel` TINYTEXT NOT NULL ,
  4. `nyhed` LONGTEXT NOT NULL ,
  5. );
Og den anden er til kommentarene.
  1. CREATE TABLE `kommentare` (
  2. `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. `nyhed` INT(11) NOT NULL ,
  4. `navn` TINYTEXT NOT NULL ,
  5. `kommentar` LONGTEXT NOT NULL ,
  6. );
Du kan se jeg har puttet et felt ind der hedder nyhed, det felt holder styr på kommentarene.
Men det kommer vi til senere.
Nu har vi vores 2 database, nu skal vi igang med kodningen.
Vi starter med filen hvori vi opretter nyheden.

index.opret.php
  1. <?php
  2. include("config.php");
  3. ?>
  4. <?php
  5. if($_GET["side"] == "tilfojet"){ // Hvis han får siden ?side=tilfojet
  6. $titel = addslashes($_REQUEST[titel]); // Vi giver variablen $titel værdien $_REQUEST[titel], det gør det lettere at holde styr på koden.
  7. $nyhed = addslashes($_REQUEST[nyhed]);
  8. if(empty($titel) || empty($nyhed)){ // Hvis felterne er tomme spytter PHP en fejlmeddelse ud
  9. echo "<font color="red">Du skal udfylde felterne!</font>"; // Vores fejlmeddelse
  10. }else{
  11. mysql_query("INSERT INTO nyheder (titel, nyhed) VALUES ("$titel", "$nyhed")"); // Ellers smider den informationerne ind i databasen
  12. echo "<font color="green">Nyheden er tilføjet!</font>"; // Vores godkend meddelse
  13. }} // Lukker
  14. ?>
  15. <form action="" method="post"> // action er lig med ingenting, eller bare den side du er på.
  16. Titel:<br />
  17. <input type="text" name="titel"><br />
  18. Nyhed:<br />
  19. <textarea name="nyhed"></textarea><br />
  20. <input type="submit" value="Opret nyhed"></form>
Så er siden hvor vi opretter nyheden færdig.
Det var da ikke specielt hårdt var det?
Anyways, lad os hurtigt hoppe videre til siden hvor vi ser nyheden.

index.php
  1. <?php
  2. include("config.php"); // Vores MYSQL oplysninger
  3. ?>
  4. <?php
  5. $svar = mysql_query("SELECT * FROM nyheder ORDER BY id DESC"); // Tar alt fra databasen nyheder
  6. while($row = mysql_fetch_array($svar)){ // Vores array for databasen, det har vi valgt at kalde $row
  7. echo "<a href="index.vis.php?id=$row[id]">";
  8. echo stripslashes($row[titel]); // Vi stripslasher $row[titel]
  9. echo "</a>";
  10. echo "<br>";
  11. echo stripslashes($row[nyhed]); // Vi stripslasher også $row[nyhed]
  12. echo "<br><br>";
  13. } // Lukker
  14. ?>
Nu har vi både en side hvor vi opretter nyheder, og hvor vi kan se dem.
Lad os laver siden hvor vi kan kommentere :).

Der skal vi bruge vores nye database "kommentare".
Som sagt har vi tilføjet et nyt felt "nyhed", det er det felt hvor vi holder styr på id"et fra nyheden.
Sådan så at kommentarene ikke kommer i alle nyhederne ;)
Men lad kodningen begynde :D

index.vis.php
  1. <?php
  2. include("config.php");
  3. ?>
  4. <?php
  5. $svar = mysql_query("SELECT * FROM nyheder WHERE id = "$_GET[id]""); // Tar alt fra databasen nyheder hvor id"et er $_GET[id]
  6. while($row = mysql_fetch_array($svar)){ // Vores array for databasen, det har vi valgt at kalde $row
  7. echo stripslashes($row[titel]); // Vi stripslasher $row[titel]
  8. echo "<br>";
  9. echo stripslashes($row[nyhed]); // Vi stripslasher også $row[nyhed]
  10. }
  11. ?>
  12. <br><h2>Kommentare</h2><br>
  13. <?php
  14. $var = mysql_query("SELECT * FROM kommentare WHERE nyhed = "$_GET[id]""); // Vi tar alt fra kommentare, hvor nyhed er $_GET[id], altså det id siden "får"
  15. if(mysql_num_rows($var) == 0){ echo "ingen kommentar"; }else{ // mysql_num_rows tæller det der er i databasen, og hvis den er nul skriver den at der ingen kommentare er.
  16. while($rs = mysql_fetch_array($var)){
  17. echo stripslashes($row[navn]); // Stripslasher $row[navn], en god ting at gøre, stripslashes() fjener  fra din tekst.
  18. echo "<br>";
  19. echo stripslashes($row[kommentar]); // Og igen :)
  20. echo "<br><br>";
  21. }}
  22. ?>
  23. <?php
  24. $navn = addslashes($_REQUEST[navn]);
  25. $kommentar = addslashes($_REQUEST[kommentar]);
  26. if(empty($navn) || empty($kommentar)){ // Denne gang laver vi ingen fejlmeddelse, men den indsætter ikke hvis et af felterne er tomme.
  27. }else{
  28. mysql_query("INSERT INTO kommentare (nyhed, navn, kommentar) VALUES ("$_GET[id]", "$navn", "$kommentar")"); // Vi indsætter nyhed (nyhedens id som holder styr på vores kommentare) og navn og kommentar.
  29. }
  30. ?>
  31. <form action="" method="post">
  32. Navn:<br />
  33. <input type="text" name="navn"><br />
  34. Kommentar:<br />
  35. <textarea name="kommentar"></textarea><br />
  36. <input type="submit" value="Opret kommentar"></form>
Sådan, nu har vi alle de sider vi skal bruge :)
Vi har siden hvor vi opretter, siden hvor vi ser alle nyheder, og en side hvor man kan kommentere :D
Det var da ikke svært var det? Men, lad nu vær med bare at copy/paste. Fordi så lærer du INGENTING!
Men ellers vil jeg sige tak for denne gang, tak fordi du gider lære min artikel :)
Jeg vil håbe du har forstået/lært noget af min artikel.

Artikel skrevet 100% af Mikkel / Razo
Ses på grillen ;)
Oprettet af:

PHP

Point modtaget: 0

Rate:
20:55 10/12/2005

Kommentarer

Giv din mening tilkende om denne artikel, eller læs andres.
Har du spørgsmål eller brug for hjælp til denne artikel henvises du til forummet.
Ser godt nok ud, har ikke lyst til at kigge nærmere på sådan en længere kode :P
Oprettet af:
  Mail
21:51 10/12/2005
Hehe .. den er heller ikke lavet for at den skal virke, den skal bare give et indtryk på folk om hvordan det kan gøres ;)
Oprettet af:
  Mail
22:04 10/12/2005
Det var da frygteligt meget kode:O
Oprettet af:
  Mail
14:37 11/12/2005
Noget problem eller hvad?
Oprettet af:
  Mail
21:15 12/12/2005
Nej !! Konstaterede det bare.
Det er ikke nogen der er ude på at genere dig!
Oprettet af:
  Mail
13:56 13/12/2005
okay :D
Oprettet af:
  Mail
18:29 13/12/2005
Ja en lang kode til bare at poste nyheder.
- men tænk på der også en en del kommentare ude foran hver linje næsten, såå :-)
Oprettet af:
  Mail
20:26 16/12/2005
Det er vel ikke dårligt?
Oprettet af:
  Mail
07:25 17/12/2005
Den melder fejl i syntaxen når man prøver at oprette mySql databasen?!
Oprettet af:
  Mail
13:48 21/12/2005
Syntax i MySQL er forkert :(
Oprettet af:
  Mail
19:04 23/12/2005
Du skal være oprettet og logget ind for at kommentere en artikel
Copyright © Rowl.dk v/ Michael Raagaard | 2005-12 | Alle rettigheder forbeholdes