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

Rate:
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.
Tak :D

Slet ingen konstruktiv kritik ?
Oprettet af:
  Mail
16:48 08/10/2007
Jo ! :p aih gasser bare 5/5..
Men hvor bliver de sider man opretter. hvor lægger de inde på ens ftp ? / er det f.eks navn.php ? eller
Oprettet af:
  Mail
17:39 08/10/2007
har du overhovet ikke læst :S?

du siger jo:
domænde.dk?p=Sidens navn
Oprettet af:
  Mail
17:54 08/10/2007
Jo jeg har skam læst.. men forstår ik det ? kommer der ud på forsiden af ftp ?
Oprettet af:
  Mail
18:22 08/10/2007
Nej, det er jo netop det med at det ligger i databasen.

Linksne bliver siden.dk/?p=Sidens navn
Oprettet af:
  Mail
18:52 08/10/2007
Den er fantastisk! Håber du skriver flere artikler! 5/5!
Oprettet af:
  Mail
18:21 09/10/2007
Nej desværre, jeg gider ikke det lort mere...
Oprettet af:
  Mail
08:21 10/10/2007
<(^^,)>
Oprettet af:
  Mail
15:20 10/10/2007
Hvad med submenu? og måske mulighed for at flytte rundt på placeringerne af menuen.
Oprettet af:
  Mail
15:11 12/10/2007
Nice lavet. 5/5 her fra. Ja og evt. som ^alex skriver, en submenu ville super.
Oprettet af:
  Mail
12:30 13/10/2007
Du skal være oprettet og logget ind for at kommentere en artikel
Copyright © Rowl.dk v/ Michael Raagaard | 2005-12 | Alle rettigheder forbeholdes