Showing posts with label databases. Show all posts
Showing posts with label databases. Show all posts

Monday, 25 April 2016

Back log on the blog front.....

The rest of LAST week in Codeigniter
Wednesday April 20th 
I got most of the functionality working including reading to the database. We were given a check list in class and I checked my list of tasks from the sheet. The difficult part of this project is styling in CSS so I decided to leave it and catch up with my final year project. A large part of creative multimedia programming depends on bringing factors together; the layout (HTML), styles (CSS) , user functionality (JavaScript)  and server side functionality (Codeigniter and php with a connected database). I am starting to see the reason and big picture and how and why all of these factors come into play.

Using Codeigniter as a tool and a platform for a near enough real life project is helping me understand more about the user experience and how this ties in with designing and programming functionality into a project. The user has to be in mind at every step! 

This is what I have achieved in basic HTML and CSS it is responsive so far...

Image 1: Three responsive views of 'Go West' news site featuring day trips in the West of Ireland 


Thursday - Friday was spent on a different project - a different Codeigniter and creative multimedia programming exercise.  More about that later...

The weekend of April 23rd - 24th 
ALL Weekend was spent not trying to get the articles to be updated, deleted and read to the database like I wanted but spent getting everything to look nice! Most of Sunday was spent trying to get a registration form to style. This is what happened: when I fooled around in google inspect - (note I did NOT touch the CSS)...
Problem?
Fix? Copyied & pasted a 'good' login form to a dummy sheet and pasted the 'good' form data part from the messed up one (that I know is being read to the database) and smushing it together again.
Anyway it worked but instead of being overjoyed I was relieved that I don't have to ask another silly question!!!!

Image 2: Two navigation bars - Register User Page 

Image 3: Correct Navigation Bar - Register User Page 

This is making me wonder about this industry as a whole. Little regulation and weird stuff like this that can take hours to fix. Don't get me wrong, the levels of satisfaction I have felt this week are enormous but it is soul destroying when you can't execute any creative multimedia programming techniques that you want to do.

I am saying is it takes one away from other tasks and valuable creative/analytical thinking if you are going around in circles. Turns out I inserted two by accident and I can't seem (by Monday night to get rid of it!) .....

Also from image 3, the container id that styles the registration form in the above fields, in the Register User page seems to be semi-working today - another weird CSS thing, and horay another thing that is 'less mess' to fix. Below is the 'good' login page with all ids' being read into Codeigniter from linked assets CSS file. 


Image 4: Good log in form reading the CSS to be centered & behaving well 


 What I learned this week:
- That I can easily link & write views in codeigniter!
 - I am using the inspect element in Google & it is saving me so much !!! Thank you   Google! 
- I learned to (finally) tab my code correctly so that it mimics the natural form of the document how it is being read by the browser, whats more I understand why. A small step but enlightening.

Messy weekend programming issues continue....
I had a messy moment linking files and trying to implement the ‘alt’ attribute to an image in Codeigniter. I am still unclear which of the below is correct to use I am going to ask a tutor tomorrow I assume the latter, with the alt tags. Feel free to comment.... 

No alt tags:
 <?php echo "<img alt=\"Galway Lake with Mountains\" src=\"$img_base/assets/images/lake.jpg\" />"; ?>

Alt tags:
<img src="<?php echo $img_base . "/assets/images/skellig3.jpg"?>" alt="Skellig Bee Hive Hut" />

I am also getting red errors on inputs in a form and I don't know why but I have a feeling its because I don't understand enough about forms and buttons and taking in data from the user. I need to go back and learn about forms and buttons. We are designers, our job is to make a world with richer user experiences and lets face its all about the user in creative multimedia programming! 

Image 5: From Input Codeigniter and errors appearing (again!) 




Saturday, 16 April 2016

Curious Room Databases Part Two


Curious Room Data Base Showing Tables
Image 1: phpMyAdmin database showing tables


So to follow on with this ‘little’ database story, this doesn’t happen magically. I wish it did. In another module we are learning how to use the framework Codeigniter with php and the aforementioned use of databases and tables to allow basic functionality to get front end project (allowing user to meditated with a chosen avatar and other users with their avatars) and get it to pass data back and forth to the backend; the database. 

My goal is to complete the steps of CRUD. Create, read, update and delete So far using a database from class called users I have accomplished some basic programming steps. The first thing that had to be done was to create a database, in this case users. It is located in a folder called NoticeCI that exists in a Codeigniter folder. This is a list of the screen shots of what I have working:
/User/getUser
/User/User
Link: ‘edit update details’;  User\getUpdateDetails
/User/saveUserDetails

Image of controller User not found
Image 2: User/getUser

Image of controller User get user
 Image 3: User/User

Image of user get update details
Image 4: User/getUpdateDetails

Image 5: saveUserDetails

Saving user details on the database
Image 6: saveUserDetails in database (row one) It says hi Fina in Image 7 and FirstName is Fina above 
 The last one on the list is giving me a lot of trouble as I cannot save the new user details to the database. I was able to do so on 14th March in class but not now. My databases should refresh to show the new details but it is not. I have looked though the notes and the function in the saveUserDetails but I am missing something I have checked the links also in the first file called userHomePage which was userhomepage. I have gone back to the User\User folder to find any errors below or the subsequent pages the path of the framework leads to but I cannot find the issue. On my localhost nothing is happening. No even an error!!!


Here is some of the code used for programming the above : 

public function saveUserDetails($UserID){
//prepare an array of user info submittd via the POST

  $user = array(
"UserName"=> $_POST["UserName"],
"Password"=> $_POST["Password"],
"FirstName"=> $_POST["FirstName"],
"SurName"=> $_POST["SurName"],
"Mobile"=> $_POST["Mobile"],
"AddressLine1"=> $_POST["AddressLine1"],
"AddressLine2"=> $_POST["AddressLine2"],
"AddressLine3"=> $_POST["AddressLine3"],
"Email"=> $_POST["Email"],
"UserID"=> $UserID,

);


//call the function in the model to do the update and get back a boolean flag
//$flag hold tru/false value depending on whether the update was successful or not
$flag = $this->User_Model->updateUser($user);

//pass $flag to function to determine whether success/failure page should be displayed
if($flag){
//set user details in $data - this will be need inthe userhomepage
$data['User'] = $user;
$this->load->view("User/userHomePage",$data);
}else{

    $data['msg'] = "error on update to user details";
    $this->load->view('mgspage', $data);
}//end function
}
}
Okay so straight after this at exactly 5.17pm on 9th April it worked! I decided to write about what was happening to see if it would help with a) frustration and b) identify any new patterns for me to see and then I then I just decided to go back on the getUpdateDetails page, refresh, input new data and presto. It updated the database. Wow. It feels great but like any decent creative multimedia programmer I will just be looking now to do the delete functionality as I am a full WEEK behind in class. 

What did I do? It was a small typing error – the file was called getUpdateDetails not getupdatedetails as it should have been. Oh my. Who said camel casing for programming was good? Moving forward I think it will be all lower case when I can when I am programming because let’s face it trying to practice creative multimedia programming is hard to begin and then trying to implement creative concepts and execute them over a variety of platforms is another!!!  

I went for a coffee today to take a break from programming php and it taught me two things:
1.       My FYP is useful – taking breaks & doing nothing are good for creativity! Promoting this value is viable in demanding situations.
2.       Whilst on that coffee break an hour ago I told my friend’s boyfriend about taking a WEEK to find an error and he said, I quote:  ‘Now you are programming’. So in a day to find two errors myself is a happy feeling.
The next step will be to create and implement the VanilllaCI around my project Curious Room but I have to go back first and fix the actual look and basic functionality of my project before I attempt to change them into php pages. In truth I feel a bit lost about the next stem and don’t know how to do it – I have just spoken briefly with someone in the learning center about how it ‘happens’.  Apparently it’s as simple as saving the dot html extensions as dot phps… ? Hmm.  
To finish now this is working:

User/saveUserDetails

and now I just need to get a message to the home page to say the details have been updated……

I don't know how at this point how much I will be doing with creative multimedia programming but I will try my best! 



Saturday, 9 April 2016

How it works! Curious Room Database

Image 1: Relationship between tables: Curious Room 


How the project works:
There are many employees in a company and employees can sign up for an account. In this account ‘Curious Room’ the employee is entitled to five tokens a month. Each token allows an employee to have a half hour of free time to engage in a relaxing activity. Therefore each employee who uses the system can have two and a half hours to relax during work hours in any given month. Employees can only use up to two tokens per week so they have at least one session a week and on any week in the month they can choose to ‘spend’ their fifth token.

Employees can only use the system by choosing an avatar. The rationale behind this is that they are abstracting both themselves and the activity. Hopefully it will encourage new interactions within the company and allow a degree of chance whilst using the system. In other words there is less of a chance of two buddies pairing off each week for the same session. The idea is that one avatar will not know who they will be engaging in the session with.  Each meditation session lasts 17 minutes with 13 minutes to login and get to the session and a few minutes to give feedback at the end.   

Step 1: User logs in and has an avatar associated with their account.
Step 2: User can change their avatar to a new one for a session.
Step 3: User can request to meditate with another person.
Step 4: User makes a request to see if there is a)a person to engage in a session with and b) to see if there is a room free for the meditation session.
When this was first designed at the end of February it was more complicated but after further research two factors became an issue.

1.       That a session less than a half hour is just not realistic in real terms to relax
2.       That further down the project road, after testing matching people to different times might be an option.

For now the cleanest option to develop the project is to refresh the rooms every half hour and if an avatar requests a session with another if they are free then this is a match for a session. The user then will have approximately 3 minutes to go to a room to begin the meditation. Once the user commits to a meditation session their token will be used.

Token/Session Design Issue: 
Does the user table with the token get updated when both match (room & other avatar) or when the user reaches the room and places their token in the cradle? For this project it will run straight away and update on the database. For future when the person takes their token to the room and places the physical token (with an rfid reader tag inside) the cradle would then talk to the data base and update the database to reflect the token being subtracted from the users account.  

Image 2: Visual Representation of a physical token user would use to start session. Token would be embedded with RFID reader chip to communicate with database. 


The High View:
There are five tables in my database for my final year project. These tables are:
-          Avatar
-          Employee
-          Employee has session
-          Session
-          Room
The avatars table is a one to many relationship with employees so we have avatars for many employees. Employees then have many meditation sessions but linking a ‘many’ employees to a ‘many’ sessions table would be illegal in a mySql database, it is not possible. We have to break up this relationship and make it more manageable. This is done by making a ‘link’ table. So as you can see in the diagram one employee has many sessions and from the ‘Employee has session’ table we have a relationship – employee has many sessions with a session table (single). That sounds funny to clarify employee has many sessions. One session has many ‘employee has sessions’. 
The curious room table many sessions take place in one room at different times.

To look at the tables more closely the first table avatar has 3 rows:
Table Avatar
Id – (PK) unique, auto incrementing 1,2, 3 etc.
FileName, (associated with the jpg corresponding to the avatar that the employee will choose)
Name (ie name of avatar CalmStar)
Employee Table
(Fields right now just two users were inputted):
Employee ID (PK),   (right now just 1 & 2 employees have been submitted for this project.)
FirstName
SurName
UserName
Password,
Tokens
Avatar: 1,2
Last Token used on: date and time ( this is set to go back to reset on the 1st of every month)
Employee_has_session table (both fields in this table make up the primary key so it is a composite key because an employee has to have a session for the event to occur)
Employee (FK, composite Key)
Session (FK, composite Key)
Room table (the room table has an id because if the system was developed there could be more than one room for different activities i.e meditation and yoga so each room could be identified individually.
Id (PK).
Number
Name of employee
Session Table
SessionID (PK)
Room
TimeStamp
Duration
Rating

This breakdown should give a clearer view of how the system works for users and for management of the database. In the next post I will talk about how this will move into Codeigniter as a full project.