At the start of this project I have extremely limited experience of using PHP. I did not know anything about the syntax, and had only modified tiny bits of code when using the Cutenews content management system on a personal website. After asking around at Christmas about what resources to get, I got a couple of books which I was going to use for the project.
When it came to planning the project, I split the process into 5 stages. Firstly, an initial research stage, in which I would find out about PHP and its uses in interactive media. Secondly I would use tutorials and learn about how to create applications with PHP, which I would later apply to stage three, where I would plan my project, and stage 4 where I would build my project. Lastly, an evaluation would be written of the planning and execution of the project.
The project I outlined was to create a content management system for an image gallery. I knew that this would be a lot to try and achieve in 96 hours, but based on how quickly I had picked up using software I felt that it was time to give myself a big challenge.
When evaluating the uses of PHP, I found it amazing as to how many different applications could be made. Automation of tasks has always interested me in interactive media, and I could instantly see the potential that PHP would have for using in the future. I wrote an online journal post about how PHP could be used, and placed in links to my research.
As it came to learning PHP, I used the PHP5, Apache, MySQL web development book. The initial stage of setting up an offline Apache server was difficult and testing, and took nearly 3 hours to get working correctly. This frustration set the tone for the early part of the project, as following the tutorials took a lot more time than I had envisaged. Small mistakes made when copying code out of a book would lead to the code not working at all, and fixing these issues took time. I realise that I could have used online tutorials which I could have copied and pasted, but I thought that in the long term it would be better to practice writing out the code as this may have helped me remember the syntax.
Problems with my offline server only got worse when I tried to connect the PHP to a database. After much frustration, I decided to test the WAMP program, which would set up all of the Apache, MySQL and PHP in one go. I found this program to be invaluable through the project, and as it uses PHPmyAdmin which my server has, I felt that I was going to be able to get to grips with the database side of the project much better.
During the learning part of the project I felt that creating evidence was tough to accomplish. I had written notes in my sketchbook for reference, but as the tutorials took a long time to complete, the quantity was ultimately unsatisfying. I also found that very little of the code was ‘sticking’, as I was just copying code out of the book. Luckily this changed when I started building my project for real.
When it came to building the project, I found that chapter 7 of the PHP5, Apache, MySQL book would give me a good skeleton site for me to work with when building my project. This allowed a user to upload an image, give it a name, and have it displayed in a gallery. Although my initial plan was to use a login system, I decided that I should concentrate on getting a solid finished project instead of being tied down to my plan too much. I would after all have a website which did 90% of the things I wanted it to do in my initial plan.
Creating the skeleton site was relatively easy, as I had set aside a lot of time to really concentrate on getting it made correctly. I think that this large amount of exposure to the code helped cement some of the theories I had learnt about in second stage of the project, which came as some relief. I often find that the most important things to learn are the seemingly trivial things such as getting the project to work online and the correct directories placed into the code.
Once the skeleton was completed, I moved the site to an online environment to check that it would work on my web server. This process was not quick or easy, as many books simply explain how to set up the documents to work on an offline server. Issues such as setting up a user and database were not completely new to me, but connecting to a live database were. The PHPmyAdmin software certainly helped, as I could simply export my tables of data from the offline server and then import them to my online one. After a few user privilege issues, I managed to get the site working online, but only in part.
My tutorial used the greyscale from the GD library. However, my web server only had PHP 4.4.4, and possibly due to changes in the code between versions my greyscale feature would not work. Although this was annoying, I felt that my intentions to use it were valid, and that I had been struck down by an unforeseen circumstance outside of my control. I simply commented out this part of the code, and my page worked again, all be it with a reduction in its functionality.
The next stage was to change my code so that it would look like the design I had posted on my online learning journal. I found it disappointing that I had taken the time to create and prepare the design, only to find that there were no comments left about the design. I do not believe that I should have to pester people to give feedback at this stage of the course. Despite of this, I felt that my design was pretty simple anyway, and that feedback would not have significantly changed it.
Altering my code became a daunting task after placing in the XHTML 1.0 Strict DOCTYPE. There were many errors in my code, as the book did not supply valid XHTML. I had to strip away large parts of the code and replace it, which in itself was a very valid exercise. Again, navigating my way through and altering small parts of the code taught me a lot about how the code worked in a ‘real’ sense.
On my gallery page I tried to alter the code for the tables containing the images. I did however find this task too difficult, as I was repeatedly met with PHP errors. I felt that this part of the site could legitimately be a table, as parts such as the date, name of the poster and title could be classed as tabular data. I decided to style the table appropriately instead, which I think was a good compromise in this situation.
Having gained confidence with using the code, I decided to see if I could alter it so that the images would open with the Lightbox application. After a couple of hours of tweaking the code, I finally got the images to open in this way. This was a big issue for me, because it made me feel as though I had been able to figure out what parts of the PHP code I could manipulate and change; I was now in control of the code, and it was not in control of me as it had been for the first three quarters of the project. I changed the images which made up the Lightbox so that it would match the rest of the website, which I think really adds to the cohesion of the design.
The final part of the project was to create an index page for my site which would link to all the parts which made up the project. This included my initial research and learning journal posts, as well as the finished project. Although many of my colleagues had created a blog to show the development of their projects, I felt it was more appropriate to link to my normal learning journal as it would not cannibalise the visits from other students. This has now created a one stop page to find all the resources which made up my project, and I think this works well.
In conclusion, I am very pleased with the outcome of this project. At some points of the project, I felt that I would not get a finished product of any kind. Although my finished project does not contain elements like the login or the greyscale image feature, it still did 90% of the things I wanted it to. The project has been a good introduction to PHP and MySQL, and I now feel that I can take it further in my own time. Usually it is the formalities which cause the most problems, and now that I have these sussed I can do more work with this coding language.
For future projects such as this I think that I will set smaller targets, as I believe the learning curve for a coding language is substantially larger than that of a software program. I found that the syntax of PHP was quite heavy, and remembering small parts of the code was difficult to do. I think setting smaller goals would also help with motivation when conducting a project, as during this one I did at times feel as though the work was getting on top of me and that I was not creating enough evidence for some parts of the assignment.
One of the problems when learning something completely new is not knowing how well you will ‘pick up’ the knowledge. I believe that constantly evaluating and tweaking the approach can help to move the project along. There were certainly a lot of strategy changes during my project, such as when I decided to switch to the WAMP system or to not do the login system for the site. This did allow me to get a much better finished product, which will be a solid foundation for the future.
Wordcount: 1748