PROJEKT 3 The Design Diaries LINK TIL BLOG: http://mbsgraphic.dk/blog/ Af Mikkel Borg Svendsen & Sebastian Frank MUL B 1
INDHOLDS- FORTEGNELSE HVEM ER BLOGGERNE? 3 USE CASE 4 ATTRIBUT TABEL 5 PHP CODE 6 2
HVEM ER BLOGGERNE? Navn: Mikkel Borg Svendsen Klasse: MUL B Mail: cph-ms554@cphbusiness.dk Portfolio: www.mbsgraphic.dk Navn: Sebastian Frank Klasse: MUL B Mail: cph-sa169@cphbusiness.dk Portfolio: www.sebastianfrank.dk 3
USE CASE Navn Opret indlæg ID UC 01 Rolle Besøgende Forudsætning Besøgende er logget på og bloggen og databasen på serveren er tilgængelig. Guide Start 1. Åbn blog 2. Skriv indlæg - Indhold: Titel, dato, brødtekst, forfatter 3. Opret indlæg Alternativ guide Resultat Slut Hvis formularen ikke fungerer: Print: FEJL: husk udfyld alle felter (Titel, dato, brødtekst, forfatter) Indlægget er oprettet i databasen og er tilgængelig for besøgende. 4
ATTRIBUT TABEL Post_ID Titel Brødtekst Pic Forfatter Dato 1 Web Design Tekst URL 1 Sebastian xx.xx.xxxx Trends Frank 2 Responsive Tekst URL 2 Mikkel Borg xx.xx.xxxx Web Design Svendsen 3 Material Design Tekst URL 3 Sebastian Frank xx.xx.xxxx Entity / Attributes Value Notes Datatype Length Relation POST Post_ID Autonumber Primary Key Int (PK) - Automatically generated unique no. Titel All char Headline for Varchar 50 Post. Author All char Author of Varchar 50 post Pic URL Photo JPG 50 Artikel All char Content of Post - text String Dato xx.xx.xxxx Date for upload Post CategoryID Autonumber Foreign Key (FK) - Relation (identifier) to Category Entity Date 11 Int 5
PHP CODE // FORBINDELSE TIL DB SERVEREN MED PHP7 MMYSQLI METODEN // 1. DEFINERER FORBINDELSES-KONSTANTER LOKALT //DEFINE("HOSTNAME", "LOCALHOST"); //DEFINE("MYSQLUSER", "ADMIN"); //DEFINE("MYSQLPASS", "BORGFRANK"); //DEFINE("MYSQLDB", "BLOG"); // 2. DEFINERER FORBINDELSES-KONSTANTER REMOTE DEFINE("HOSTNAME", "XXX"); DEFINE("MYSQLUSER", "XXX"); DEFINE("MYSQLPASS", "XXX"); DEFINE("MYSQLDB", "XXX"); REQUIRE_ONCE("DATABASE_FB.PHP") ECHO $_SERVER['PHP_SELF'] // HAS THE BUTTON BEEN USED? IF(ISSET($_POST['ADDSUBJECT'])){ // GET CONNECTION CONSTANTS REQUIRE_ONCE("DATABASE_FB.PHP"); $CONNECTION = NEW MYSQLI(HOSTNAME, MYSQLUSER, MYSQLPASS, MYSQLDB); // SET UTF8 CHARACTER SET FOR DATA $CONNECTION->SET_CHARSET("UTF8"); // GRAB USER INPUT USING INPUT FIELD NAMES // + SAFEGUARD AGAINST SQL INJECTION!!!!!!!!!!!!!!!!!!! $TITEL = MYSQLI_REAL_ESCAPE_STRING($CONNECTION, $_POST['TITEL']); $AUTHOR = MYSQLI_REAL_ESCAPE_STRING($CONNECTION, $_POST['AUTHOR']); 6
$PIC = MYSQLI_REAL_ESCAPE_STRING($CONNECTION, $_POST['PIC']); $ARTIKEL = MYSQLI_REAL_ESCAPE_STRING($CONNECTION, $_POST['ARTIKEL']); $DATO = MYSQLI_REAL_ESCAPE_STRING($CONNECTION, $_POST['DATO']); ///////////////////////// ///// IMAGE UPLOAD ///// ///////////////////////// $UPLOADOK = 0; IF(!EMPTY($_FILES['FILETOUPLOAD']['NAME'])) { $TARGET_DIR = "IMAGES/"; //SPECIFIES THE DIRECTORY WHERE THE FILE IS GOING TO BE PLACED $TARGET_FILE = $TARGET_DIR. BASENAME($_FILES['FILETOUPLOAD']['NAME']); //SPECIFIES THE PATH OF THE FILE TO BE UPLOADED $UPLOADOK = 1; MOVE_UPLOADED_FILE($_FILES['FILETOUPLOAD']['TMP_NAME'], $TARGET_FILE); //TMP_NAME CONTAINS THE ACTUAL COPY OF YOUR FILE CONTENT ON THE SERVER ECHO "THE IMAGE". BASENAME( $_FILES['FILETOUPLOAD']['NAME']). " HAS BEEN UPLOADED - "; } ELSE { ECHO "NO IMAGE UPLOADED. "; } /////////// END IMAGE UPLOAD //////////// IF($UPLOADOK == 1){ $SQLUPDATE = "INSERT INTO POST (TITEL, AUTHOR, PIC, ARTIKEL, DATO) VALUES ('$TITEL', '$AUTHOR', '$PIC', '$ARTIKEL', '$DATO', '$TARGET_FILE')"; } ELSE { $SQLUPDATE = "INSERT INTO POST (TITEL, AUTHOR, PIC, ARTIKEL, DATO) VALUES ('$TITEL', '$AUTHOR', '$PIC', '$ARTIKEL', '$DATO')"; } //USER FEEDBACK // IS $UPDATE TRUE? WAS THE QUERY EXECUTED? IF(MYSQLI_QUERY($CONNECTION, $SQLUPDATE)){ ECHO 'NEW SUBJECT ADDED TO DATABASE'; }ELSE{ ECHO 'OOOPS, SOMETHING WENT WRONG...'; } 7
// CLOSE CONNECTION TO DATABASE SERVER MYSQLI_CLOSE($CONNECTION); //////////////////// //END IF ISSET: } REQUIRE_ONCE("DATABASE_FB.PHP") // 2. ETABLERER FORBINDELSEN VIA ET MYSQLI-OBJEKT $CONNECTION = NEW MYSQLI(HOSTNAME, MYSQLUSER, MYSQLPASS, MYSQLDB); $CONNECTION->SET_CHARSET("UTF8"); // SET UTF8 CHARACTER SET FOR DATA //////////////////////////////////////////////////////////// /////////// RETRIEVE A RECORD FROM DATABASE TABLE/////////// /////////////////////////////////////////////////////////// // FORMULATE AND SEND A SQL QUERY USING OUR MYSQLI OBJECT //ARTICLES DISPLAYED ON THE WEBSITE --> // DYNAMIC RENDERING USING A QUERY + WHILE LOOP --> // NEW QUERY DATA_2 $DATA_2 = $CONNECTION->QUERY("SELECT * FROM POST"); //WHILE THERE ARE RECORDS IN THE DATABASE WHILE($RESULT = $DATA_2->FETCH_ASSOC()){ ECHO '<DIV CLASS="CARD FIRST" STYLE="MARGIN-TOP: -80PX; MARGIN-BOTTOM: 110PX;">'; ECHO '<H2>'. $RESULT['TITEL']. '</H2>'; ECHO '<P CLASS="DATEANDNAME">'. $RESULT['AUTHOR']. '</"DATEANDNAME">'; ECHO '<IMG SRC="IMAGES/'. $RESULT['PIC']. '" ALT="BILLEDE"'. $RESULT['PIC']. '>'; ECHO '<P CLASS="TEXT">'. $RESULT['ARTIKEL']. '</P>'; ECHO '<H3 CLASS="DATEANDNAME">'. $RESULT['DATO']. '</H3>'; ECHO '</DIV>' ;} 8