Commit ea03c8db authored by danmcquillan's avatar danmcquillan
Browse files

coursework blog step 6

parent c4f529dc
<?php
error_reporting( E_ALL );
ini_set( "display_errors", 1 );
include_once "../../../coursework_blog_config.php";
$db = new PDO( $dbInfo, $dbUser, $dbPassword );
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$title = "PHP/MySQL blog demo";
$css="css/blog.css";
$embeddedStyle = "";
include_once "views/header.php";
include_once "views/admin/admin-navigation.php";
$navigation = isset( $_GET['page'] );
if ( $navigation ) {
//prepare to load corresponding controller
$contrl = $_GET['page'];
} else {
//or prepare to load default controller
$contrl = "entries";
}
//load the controller
include_once "controllers/admin/$contrl.php";
include_once "views/footer.php";
?>
<?php
include_once "models/Blog_Entry_Table.class.php";
$entryTable = new Blog_Entry_Table( $db );
//was editor form submitted?
$editorSubmitted = isset( $_POST['action'] );
if ( $editorSubmitted ) {
$buttonClicked = $_POST['action'];
//was "save" button clicked
$insertNewEntry = ( $buttonClicked === 'save' );
if ( $insertNewEntry ) {
$title = $_POST['title'];
$entry = $_POST['entry'];
//save the new entry
$entryTable->saveEntry( $title, $entry );
}
}
$entryRequested = isset( $_GET['id'] );
if ( $entryRequested ) {
$id = $_GET['id'];
$entryData = $entryTable->getEntry( $id );
$entryData->entry_id = $id;
// $entryData->message = "";
} else {
$entryData = new StdClass();
$entryData->entry_id = 0;
$entryData->title = "";
$entryData->entry_text = "";
// $entryData->message = "";
}
include_once "views/admin/editor-html.php";
?>
<?
include_once "models/Blog_Entry_Table.class.php";
$entryTable = new Blog_Entry_Table( $db );
$allEntries = $entryTable->getAllEntries();
include_once "views/admin/entries-html.php";
?>
<?
include_once "models/Blog_Entry_Table.class.php";
$entryTable = new Blog_Entry_Table( $db );
$entryClicked = isset( $_GET['id'] );
if ($entryClicked ) {
$entryId = $_GET['id'];
$entryData = $entryTable->getEntry( $entryId );
// print_r($entryData);
include_once "views/entry-html.php";
} else {
$entries = $entryTable->getallentries();
include_once "views/list-entries-html.php";
}
?>
-- this will create a table for blog entries
CREATE TABLE blog_entry (
entry_id INT NOT NULL AUTO_INCREMENT,
title VARCHAR( 150 ),
entry_text TEXT,
date_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ( entry_id )
)
/* code listing for blog/css/blog.css */
form#editor{
width: 300px;
margin:0px;
padding:0px;
}
form#editor label, form#editor input[type='text']{
display:block;
}
form#editor #editor-buttons{
border:none;
text-align:right;
}
form#editor textarea, form#editor input[type='text']{
width:90%;
margin-bottom:2em;
}
form#editor textarea{
height:10em;
}
<?php
error_reporting( E_ALL );
ini_set( "display_errors", 1 );
include_once "../../../coursework_blog_config.php";
$db = new PDO( $dbInfo, $dbUser, $dbPassword );
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$title = "PHP/MySQL blog demo";
$css="css/blog.css";
$embeddedStyle = "";
include_once "views/header.php";
include_once "controllers/blog.php";
include_once "views/footer.php";
?>
<?php
class Blog_Entry_Table {
private $db;
public function __construct ( $db ) {
$this->db = $db;
}
public function saveEntry ( $title, $entry ) {
$entrySQL = "INSERT INTO blog_entry ( title, entry_text )
VALUES ( ?, ?)";
$entryStatement = $this->db->prepare( $entrySQL );
$formData = array( $title, $entry );
try{
$entryStatement->execute( $formData );
} catch (Exception $e){
$msg = "<p>You tried to run this sql: $entrySQL<p>
<p>Exception: $e</p>";
trigger_error($msg);
}
}
public function getAllEntries () {
$sql = "SELECT entry_id, title, SUBSTRING(entry_text, 1, 150) AS intro FROM blog_entry";
$statement = $this->makeStatement($sql);
return $statement;
}
public function getEntry( $id ){
$sql = "SELECT entry_id, title, entry_text, date_created FROM blog_entry WHERE entry_id = ?";
$data = array($id);
$statement = $this->makeStatement( $sql, $data);
$model = $statement->fetchObject();
return $model;
}
public function makeStatement( $sql, $data = NULL) {
$statement = $this->db->prepare( $sql );
try{
$statement->execute( $data );
} catch (Exception $e) {
$exceptionMessage = "<p>You tried to run this sql: $sql <p>
<p>Exception: $e</p>";
trigger_error($exceptionMessage);
}
return $statement;
}
}
?>
<?php
$out = "
<nav id='admin-navigation'>
<a href='admin.php?page=entries'>All entries</a>
<a href='admin.php?page=editor'>Editor</a>
</nav>";
echo $out;
?>
<?php
$out = "
<form method='post' action='admin.php?page=editor' id='editor'>
<input type='hidden' name='id' value='$entryData->entry_id' />
<fieldset>
<legend>New Entry Submission</legend>
<label>Title</label>
<input type='text' name='title' maxlength='150' value='$entryData->title' required />
<label>Entry</label>
<textarea name='entry'>$entryData->entry_text</textarea>
<fieldset id='editor-buttons'>
<input type='submit' name='action' value='save' />
</fieldset>
</fieldset>
</form>
";
echo $out;
?>
<?php
if ( isset( $allEntries ) === false ) {
trigger_error('views/admin/entries-html.php needs $allEntries');
}
$entriesAsHTML = "<ul>";
while ( $entry = $allEntries->fetchObject() ) {
$href = "admin.php?page=editor&amp;id=$entry->entry_id";
$entriesAsHTML .= "<li><a href='$href'>$entry->title</a></li>";
}
$entriesAsHTML .= "</ul>";
echo $entriesAsHTML;
?>
<?php
//check if required data is available
$entryDataFound = isset( $entryData );
if ( $entryDataFound === false ) {
trigger_error('views/entry-html.php needs an $entryData object');
}
//properties available in $entry: entry_id, title, entry_text, date_created
echo "<article>
<h1>$entryData->title</h1>
<div class='date'>$entryData->date_created</div>
$entryData->entry_text
</article>";
<?php
$out = "
</body>
</html>
";
echo $out;
?>
<?php
$out = "<!DOCTYPE html>
<html>
<head>
<title>$title</title>
<meta http-equiv='Content-Type' content='text/html;charset=utf-8' />
<link rel='stylesheet' type='text/css' href='$css'>
<link rel='stylesheet' type='text/css' href='$embeddedStyle'>
</head>";
echo $out;
?>
<?php
$entriesFound = isset( $entries );
if ( $entriesFound === false ) {
trigger_error( 'views/list-entries-html.php needs $entries' );
}
$entriesHTML = "<ul id='blog-entries'>";
while ( $entry = $entries->fetchObject() ) {
$href = "index.php?page=blog&amp;id=$entry->entry_id";
//create an <li> for each of the entries
$entriesHTML .= "<li>
<h2>$entry->title</h2>
<div>$entry->intro
<p><a href='$href'>Read more</a></p>
</div>
</li>";
}
$entriesHTML .= "</ul>";
echo $entriesHTML;
?>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment