Brugernavn:




Kodeord: Husk
Forside Forum Artikler Downloads Søg
 

Lav dit eget CMS System (PHP + MySQL)

Forord

I denne artikel vil du finde ud af, hvordan du kan lave dit eget CMS system.
KISS * Keep It Simpel Stupid, der er ikke så meget hurmel hej omkring det ;)

Hvad er et CMS System ?

CMS står for Content Management System, og det vi vil arbejde med er WCM som står for Web Content Management.

Læs evt. mere på Wikipedia:
Dansk
Engelsk


Færdige resultat

Når du er færdig med denne artikel, vil du have et CMS system hvor du kan oprette, slette og rette i siderne.
Så vil det komme til at fungere sådan: http://dinhjemmeside.dk/?p=side1, http://dinhjemmeside.dk/?p=rowl osv...

Oprette, slette og rette sider ?

Alt vil blive online, så du skal bare sætte systemet op.
Så kan du logge ind og rette siderne, så alt vil foregå online.

MySQL

Først skal vi sætte vores tabeller ind.
Vi laver tabellen sider
id Så vi kan kende de forskellige sider fra hinanden
overskrift Så vi kan kalde vores sider noget
indhold Der putter vi alt side indholdet ind
url Hvad vi skal skrive for at finde siden, ex. ?p=url

sql.sql
  1. CREATE TABLE `sider` (
  2.   `id` int(18) NOT NULL auto_increment,
  3.   `overskrift` varchar(255) NOT NULL default '',
  4.   `indhold` longtext NOT NULL,
  5.   `url` varchar(255) NOT NULL default '',
  6.   PRIMARY KEY  (`id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

PHP

Sider der skal bruges
Index.php - Til at hente indholdet fra databasen og vise det
Connect.php - Til at oprette forbindelse til databasen
(Menu.php) - Kan evt. bruges, hvis man vil have links til alle siderne

Index.php
  1. <?php
  2. include "connect.php";
  3. if($_GET['p'])
  4. {
  5.   $page = $_GET['p'];
  6.   $antal = mysql_result(mysql_query("SELECT COUNT(*) FROM sider WHERE url = '$page'"),0);
  7.   if($antal)
  8.   {
  9.     $sidequery = mysql_query("SELECT * FROM sider WHERE url = '$page'");
  10.     $sidedata = mysql_fetch_assoc($sidequery);
  11.     print "<h1 id="overskrift">".$sidedata[overskrift]."</h1><br>";
  12.     print nl2br($sidedata['indhold']);
  13.   }
  14.   else
  15.   {
  16.     print "<center><font color="red">Siden /?p=".$page." findes ikke, kontroller venligst linket!</font></center>";
  17.   }
  18. }
  19. else
  20. {
  21.   $sidequery = mysql_query("SELECT * FROM sider WHERE url = 'index'");
  22.   $sidedata = mysql_fetch_assoc($sidequery);
  23.   print "<h1 id="overskrift">".$sidedata[overskrift]."</h1><br>";
  24.   print nl2br($sidedata[indhold]);
  25. }
  26. ?>

Linjeforklaring

1) Starter PHP
2) Inkludere connect.php som har vores database oplysninger
3) Hvis p har en værdi (p har den værdi du skriver her er hjemmeside.dk/?p=Rowl)
4) Starter if-sætning
5) Tildeler variablen $page værdien fra p
6) Tildeler variablen $antal værdien 1 hvis siden man skrev findes
7) Hvis $antal er 1
8) Starter if-sætning
9) Tildeler variablen $sidequery dataen fra MySQL
10) Laver variablen $sidedata til en array med $sidequery's data
11) Udskriver overskriften i h1
12) Udskriver sidens indhold (Bruger nl2br så den automatiskl laver linjeskift ved enter)
13) Laver else
14) Starter else-sætning
15) Udskriver at linket ikke fandtes
16) Slutter else-sætning
17) Slutter if-sætning
18) Laver else
19) Starter else-sætning
20) Tildeler variablen $sidequery dataen fra MySQL hvor siden er index
21) Laver variablen $sidedata til en array med $sidequery's data
22) Udskriver overskriften i h1
23) Udskriver sidens indhold (Bruger nl2br så den automatiskl laver linjeskift ved enter)
24) Lukker PHP


Så skal vi bruge opret.php til at lave nye sider med (Dette kan også gøres i PHPMyAdmin)
opret.php
  1. <?php
  2. include "connect.php";
  3. if($_GET['do'] == "opret")
  4. {
  5.   if($_POST['password'] == "DIT PASSWORD HER")
  6.   {
  7.     $antal = mysql_result(mysql_query("SELECT COUNT(*) FROM sider WHERE url = '$_POST[url]'"),0);
  8.     if($antal < 1)
  9.     {
  10.       if(!empty($_POST['overskrift']) && !empty($_POST['indhold']) && !empty($_POST['url']))
  11.       {
  12.         mysql_query("INSERT INTO sider (overskrift,indhold,url) VALUES ('$_POST[overskrift]','$_POST[indhold]','$_POST[url]')");
  13.         print "<center><font color="green">Siden er nu tilføjet</font></center>";
  14.       }
  15.       else
  16.       {
  17.         print "<center><font color="red">Alle felter blev ikke udfyldt</font></center>";
  18.       }
  19.     }
  20.     else
  21.     {
  22.        print "<center><font color="red">Der findes allerede en side med denne url</font></center>";
  23.     }
  24.   }
  25.   else
  26.   {
  27.     print "<center><font color="red">Passwordet var forkert</font></center>";
  28.   }
  29. }
  30. else
  31. {
  32. ?>
  33. <form action="?do=opret" method="POST">
  34. Password:<br>
  35. <input type="password" name="password"><br>
  36. Overskrift:<br>
  37. <input type="input" name="overskrift"><br>
  38. Indhold:<br>
  39. <textarea style="width:400px; height: 450px;" name="indhold"></textarea><br>
  40. URL: (fx: ?p=php)<br>
  41. Hjemmeside.dk/?p= <input type="input" name="url"><br>
  42. <input type="submit" value="Opret side">
  43. </form>
  44. <?php
  45. }
  46. ?>

Linjeforklaring

1) Starter PHP
2) Inkludere connect.php som har vores database oplysninger
3) Hvis man prøver på at logge ind så...
4) Starter if-sætning
5) Hvis det password man skrev er det rigtige så...
6) Starter if-sætning
7) Tildeler variablen $antal det antal af sider der allerede findes med ønskede URL
8) Hvis $antal er under 1, altså at siden allerede findes så...
9) Starter if-sætning
10) Hvis ingen af felterne er blanke så...
11) Starter if-sætning
12) Tilføjer siden til MySQL
13) Udskriver at siden er tilføjet
14) Stopper if-sætning
15) Laver else
16) Starter else-sætning
17) Udskriver at alle felterne ikke blev udfyldt
18) Slutter else-sætning
19) Slutter if-sætning
20) Laver else
21) Starter else-sætning
22) Udskriver at der allerede findes en side med denne url
23) Slutter else-sætning
24) Slutter if-sætning
25) Laver else
26) Starter else-sætning
27) Udskriver at passwordet var forkert
28) Slutter else-sætning
29) Slutter if-sætning
30) Slutter if-sætning
31) Laver else
32) Starter else-sætning
33) Slutter PHP
34) Starter formular hvor typen er post
35) Skriver password og laver linjeskift
36) Laver input boks med typen password og laver linjeskift
37) Skriver overskrift og laver linjeskift
38) Laver input boks med typen text og laver linjeskift
39) Skriver indhold og laver linjeskift
40) Laver textarea og laver linjeskift
41) Skriver URL: (fx: ?p=php) og laver linjeskift
42) Skriver Hjemmeside.dk/?p= og laver input boks med typen text og laver linjeskift
43) Laver input boks med typen submit hvor der står Opret side
44) Slutter formular
45) Starter PHP
46) Slutter if-sætning
47) Slutter PHP

Hvis folk ikke selv har, så er der en connect.php her
connect.php
  1. <?php
  2. $connect = mysql_connect('localhost','Dit mysql brugernavn','Dit mysql password') or die('Kunne forbinde til MySQL');
  3. mysql_select_db('Din mysql databases navn', $connect) or die('Kunne ikke vælge database');
  4. ?>

Ekstra

Her er der en stump kode, som viser hvilke links i har på siden
links.php
  1. <?php
  2. include "connect.php";
  3. $siderquery = mysql_query("SELECT * FROM sider ORDER BY id ASC");
  4. while($sidedata = mysql_fetch_assoc($siderquery))
  5. {
  6.   print "<a href="/?p=".$sidedata[url]."">".$sidedata[overskrift]."</a><br>";
  7. }
  8. ?>

Linjeforklaring

1) Starter PHP
2) Inkludere connect.php som har vores database oplysninger
3) Tildeler variablen $sidequery dataen fra MySQL
4) Laver while med variablen $sidedata som har en array med $sidequery's data
5) Starter while
6) Udskriver links
7) Slutter while
8) Slutter PHP

Demo og download


Download

Held og lykke
Kom endelig med konstruktiv kritik :)
Sidst redigeret 23:01 31/01/2008 af Rowl
Oprettet af:

PHP

Point modtaget: 500

Rating: 4.4
20:40 06/10/2007

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.
Wow 500 xD
Oprettet af:
  Mail
23:43 06/10/2007
Rigtig god :) den forstod jeg. 5/5
Oprettet af:
  Mail
23:47 06/10/2007
En af mine længere artikler =P
Oprettet af:
  Mail
23:49 06/10/2007
Super god artikel.. :) 5/5
Oprettet af:
  Mail
12:52 07/10/2007
Noget i kan bruge :)?
Oprettet af:
  Mail
16:51 07/10/2007
rigtig fedt ting at af men jeg kunne nu godt bruge noget om menuen for når jeg prøver at lave en såden side ser min menu noget kedlig ud men 5/5 her fra :-)
Oprettet af:
  Mail
08:28 08/10/2007
Jamen der skal du jo så bare selv style den :)
Oprettet af:
  Mail
09:09 08/10/2007
Fedt lavet ;)
Oprettet af:
  Mail
15:07 08/10/2007
4.7 :S

Personen der har givet lav karakter, i må meget gerne give forbedrings forslag ^^
Oprettet af:
  Mail
15:09 08/10/2007
5/5
- Endnu en god artikel.. Hvor selv jeg kunne følge :)
Oprettet af:
  Mail
16:43 08/10/2007
Du skal være oprettet og logget ind for at kommentere en artikel
Copyright © Rowl.dk v/ Nicklas Møller | 2005-14 | Alle rettigheder forbeholdes