PHP CMS php/sql

som3

Lieutenant
Registriert
Jan. 2010
Beiträge
992
Hallo.
Ich bin gerade dabei mit ein kleines eigenes CMS zu basteln.

momentan habe ich eine index.php und function.php
Meta tags, css files, pagetiel etc wirs in der function festgelegt.

Ich wollte es so machen das man eine Page hat mit einer Textbox mit der man die werte der Variabel überschreiben kann (mit SQL)

wie könnte man dies am sichersten umsetzen?
Und mein content wird in die Index inculidert.
Header, Footer und der page content (home,error,contact, etc)
Der Page Titel steht als Variable in der Index ($pagename (wird in der functions deklariert))

Wie könne ich es umsetzen das der pagetitel (also $pagename) = [Text passend zu Seite] ist.
also zb
domain.com | Home
domain.com | Contact

je nachdem welche Datei gerade includiert wird.

Source Code
HTML:
<?php include "functions.php"; ?>
<?PHP
    $Pages = array(); 
 
    function registerPages() {
    global $Pages;
    $pageHandle = opendir('./pages/');
    while($phPage = readdir($pageHandle)) {
    if($phPage != '.' && $phPage != '..' && $phPage != '.htaccess' && $phPage && is_dir('./pages/'.$phPage)===false) { 
    $phKey = substr($phPage,0,strpos($phPage,'.')); 
    $Pages[$phKey] = $phPage; 
    }
    }
    closedir($pageHandle);
    }
 
    registerPages(); 
 
    function cP($page) { 
    global $Pages;
    if(is_file('./pages/'.$Pages[$page])) {
    return true;
    }
    else {
    return false;
    }
    }
 
    function gP($page) { 
    global $Pages;
    if(cP($page)) {
    return $Pages[$page]; 
    }
    else {
    return 'error.php'; 
    }
    }
?>
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <!--STYLE SHEETS-->
        <?php print $maincss; ?>
        <?php print $gridcss; ?>
        <?php print $customcss; ?>
        
        <!--META TAGS-->
        <?php print $meta; ?>
        
        <!--SCRIPTS-->
        <?php print $scripts; ?>
        
        <!--TITEL-->
        <?php print $pagename; ?>

    </head>
    <body>
        <?php echo $jswarning; ?>
        <header>
            <?php include "header.php"; ?>
        </header>
        <section>
            <?PHP
                if(isset($_GET['page']) && !empty($_GET['page'])) { 
                include('./pages/'.gP($_GET['page']));
                }
                else {
                include('./pages/home.php');
                }
            ?>
        </section>
        <footer>
            <?php include "footer.php"; ?>
        </footer>

    </body>
</html>

Code:
<?php
//-------------------STYLE SHEETS--------------------//
//---------------------------------------------------//
$maincss = '
        <link rel="stylesheet" href="style/main.css" type="text/css" />
        ';
$gridcss = '
        <link rel="stylesheet" href="style/grid.css" type="text/css" />
        <!--[if lte IE 9]>
            <link rel="stylesheet" href="style/ie.css" type="text/css" media="screen" 
        <![endif]-->
        ';
$customcss = '
        ';        
//-------------------META TAGS-----------------------//
//---------------------------------------------------//
$meta = '
        <!-- -->
        ';

//---------------------SCRIPTS-----------------------//
//---------------------------------------------------//
$scripts ='
        <script type="text/javascript" src="js/css3-mediaqueries.js"></script>
        <!-- MORE SCRIPTS -->
        ';

//-------------------PAGE NAMES----------------------//
//---------------------------------------------------//
$pagename = '
        <title>Domain.com</title>
        ';

//-------------------SLIDER IMG----------------------//
//---------------------------------------------------//

//-------------------SEARCH CODE---------------------//
//---------------------------------------------------//


//-------------------FRONT COL ONE-------------------//
//---------------------------------------------------//


//-------------------FRONT COL TWO-------------------//
//---------------------------------------------------//


//-------------------FRONT COL THRE------------------//
//---------------------------------------------------//

//----------------------OTHER------------------------//
//---------------------------------------------------//
$jswarning = '
<noscript>
            <div id="noscript-warning">This Website works best with JavaScript enabled!</div>
        </noscript>
        ';
        
//---------------------------------------------------//        
?>
 
Hi,

Ich bin gerade dabei mit ein kleines eigenes CMS zu basteln.

Und genau da habe ich schon aufgehört zu lesen :) Soll das nur zur Übung sein aus Spaß an der Freude oder soll das auch irgendwann eingesetzt werden?

Falls letzteres: Wenn Audi bei jedem gebauten Fahrzeug das Rad neu erfinden müsste könnte sich kein Mensch einen Audi leisten. Soll bedeuten: Warum etwas selber stricken wenn es fertige, gute, erprobte, getestete Lösungen für lau gibt?

Falls es wirklich nur um den spaß am Programmieren geht dann gib nochmal Bescheid, dann kann man sich das ja nochmal ansehen ;)

VG,
Mad
 
Ich möchte damit ein wenig die Arbeit mit php in Verbindung mit sql üben^^
 
So sehe ich das leider auch. Es ist einfach kein Bedarf noch ein weiteres CMS zu programmieren wo es mehr als genug Auswahl für alle erdenklichen Probleme und Erfahrungen gibt. Auch einfach und kompliziert in der Bedienung etc; einfach alles vorhanden..

Je komplizierter die Bedienung umso mehr Umfang aber naja..


Edit: Wenn du nur üben willst, tut es da nicht auch eine normale Seite statt gleich ein neues CMS System ^^?
 
Es soll ja kein richtiges CMS sein.
Nur eine Seite mit einem HTML Formular worüber ich Variablen in der Seite bearbeiten kann

Also das CMS mache ich nicht nur aus Spaß sondern zum üben.
Für richtige Website nutze ich bereits Joomla etc^^
 
Naja ich würde dir raten einfach je nach include eine Variable zu setzen die immer die gleiche bezeichnung hat und diese dann per Switch-Case abzufragen.
 
Hi,

jo, so wie IC3HANDS das sagt würde ich das auch erstmal machen. Klingt für den Anwendungsfall doch recht zielführend :)

VG,
Mad
 
Ich denke auch nicht das es da groß eine andere Lösung gibt ^^

Edit: Hab doch noch eine Idee!

Du könntest den Dateinamen der includierten Datei auslesen und diesen nutzen, dann musst nur die Dateien entsprechend benennen. Dann haste weniger Code der falsch sein kann und musst dein Switch-Case nicht für jede neue Seite anpassen.
 
so ein kleines eigenes cms ist ja nicht verkehrt.. kann man viel besser anpassen und man hat auch nur die sachen die man braucht.. aber bevor du dich an soetwas heranwagst solltest du dir vll mal oop und mvc angucken.. sonst wird das echt schmutzig.. und dir dann ein kleines framework schnappen und mit hilfe von dem das umsetzt..

fatfree ist sehr zugänglich http://bcosca.github.com/fatfree/

hab hier mal vor paar monaten damit rumgespielt und ein kleines cms gebastelt.. würde ich heute nicht so machen :D aber vll ist der code ja ganz hilfreich https://github.com/klomann/slimcms
 
frage an die kritiker hier:

warum wird eigentlich jedem geraten seine idee/projekt/ansatz in die tonne zu treten, weil es ja hundert andere arten von CMS schon gibt? gerade wenn es um den lernprozess geht ist ein CMS ein wunderbares beispiel an dem man wachsen kann.

für private zwecke habe ich mir auch mein eigenes CMS geschrieben - weil ich es mein eigenen nennen kann und den code auch verstehe und nachvollziehen kann.
 
Hi,

warum wird eigentlich jedem geraten seine idee/projekt/ansatz in die tonne zu treten, weil es ja hundert andere arten von CMS schon gibt? gerade wenn es um den lernprozess geht ist ein CMS ein wunderbares beispiel an dem man wachsen kann.

Dann Rückfrage an dich: Warum liest du nicht erstmal genau, was ich bzw. wir geschrieben haben?

Falls es wirklich nur um den spaß am Programmieren geht dann gib nochmal Bescheid, dann kann man sich das ja nochmal ansehen

Ein CMS für den Produktiveinsatz neu zu programmieren, obwohl es gut funktionierende, anpassbare, erweiterbare, getestete und standardkonforme Kostenloslösungen gibt ist wirtschaftlich und fachlich ein Kopfschuss. Zu Übungszwecken wie geschrieben schön und gut - wobei auch da IC3HANDS recht hat: wozu ein ganzes CMS, wenn dann nur ein Teilbereich geübt werden soll?

für private zwecke habe ich mir auch mein eigenes CMS geschrieben - weil ich es mein eigenen nennen kann und den code auch verstehe und nachvollziehen kann

Man kann auch auf Joomla aufbauend ein "eigenes" CMS machen und den Code verstehen und nachvollziehen - wüsste nicht was daran so unmöglich sein soll.

VG,
Mad
 
Hallo.
Ich habe gerade eine Datenbank erstellt. Name = Testdb
mit 3 Spalten (id,Variable,Wert)
Habe mich mit der Datenbank verbunden und möchte nun den Wert auslesen.
als Varibale steht in der Datenbank pagename und als Wert Domain.com
Nun habe ich schon herausgefunden das ich diese Codezeile brauche:
SELECT Wert FROM Testdb WHERE Varibale = pagename

Habe die ganze zeit gegooglet und im PHP Manual gesucht aber meine an säte haben nicht dazu geführt das $pagename = Wert von pagename aus db Testdb ist.
 
Dafür musst du erstmal eine Verbindung zur DB aufbauen, diese Speichern, mit dieser dann die Anfrage an die DB senden und das Ergebnis entsprechend verarbeiten das es dann auch benutzbar wird.
 
Hinsichtlich Datenbank-Anfragen rate ich dir aus Sicherheits- und Bequemlichkeitsgründen: verwende eine quelloffene Datenbank-Klasse.

Was von meinem Standpunkt als Entwickler in einem CMS drin sein muss:
- Verwalten der Seitenstruktur
- Verwalten der Inhalte der einzelnen Seiten
- flexible Templates, je nach Seite... manchmal braucht man z.B. auch mal ein <aside> links oder rechts
- modulares Konzept. man nutzt das CMS ja nicht für ein Projekt, sondern für viele. Manche brauchen einen Eventkalender im Sidebar, andere n Newsletter-Registrier-Formular im Footer, das nächste Projekt enthält ein Forum... Content-Module sollten irgendwie dynamisch positionierbar und aktivierbar sein.

Für einige der Sachen kann man übrigens wunderbar mit der PHP-Funktion glob() arbeiten, wenn man sich strikt an gewisse Namensregeln hält.
Angenommen, man will wissen, welche Module für das aktuelle Projekt zur Verfügung stehen: glob("module/mod_*.php")... ein Array von allen mod_irgendwas.php - Dateien. Wenn jetzt jedes Modul eine "init"-Datei namens mod_modulname.php im Ordner module hat (und von da aus weitere Scripte einbindet) klappt alles wunderbar. Dann kannste dir sogar ein Modul-Dropdown basteln.
 
IC3HANDS schrieb:
Dafür musst du erstmal eine Verbindung zur DB aufbauen, diese Speichern, mit dieser dann die Anfrage an die DB senden und das Ergebnis entsprechend verarbeiten das es dann auch benutzbar wird.

Verbindung zur DB steht schon.
Aber wie mache ich es jetzt?
JEmand einen Link parat für PHP Manual mit der passenden Funktion?
 
Zurück
Oben