treehouse : what would you like to learn today?
Web Design Web Development iOS Development

[Solved] How to include php headers and footers on html site

  • Alright, so I built my site completely using html and css. I am finding that as I'm updating it along the way it is becoming rather laboursome to have to go to every single .html page to modify the header and footer code just so it will function the same. I know you can simplify this using php so you only have to modify the one file and it will automatically update for every page. So I guess my question is how do I go about doing that?
  • <?php include 'header.php'; ?>


    You need to change your file extensions to .php

    So the end result would look like this:
    <?php include 'header.php'; ?>
    <!-- The <body> tag will be in the header file -->

    <div id="page-wrap">
    ALL YOUR CONTENT HERE
    </div>

    <!-- Your closing </body> and </html> tags will be in the footer file -->
    <?php include 'footer.php'; ?>
  • I usually also have a footer.php file and a sidebar.php file so I can break everything up and include it except the main content.
  • So let's say my I change my index.html to index.php. I copy all of my header code and paste it into a header.php file and then add this code to the top of every page?

    <?php include 'header.php'; ?>

    Will the header code then look something like this?

    <?php
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
    <html xmlns="http://www.w3.org/1999/xhtml&quot; xml:lang="en" lang="en">
    <head>

    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <title>Whiner Bros</title>
    <link rel="stylesheet" href="stylesheet.css" type="text/css" />

    </head>

    <body>

    ?>

    I tried experimenting with that and it won't let me preview the index.php file (probably because it's not a webpage)
  • The header doesn't need to include <?php ?> tags before and after, it can just be pure HTML.
  • Alright, how do I preview the .php files? Whenever I open them in the web they just close and then moves to my download folder.
  • Is there a reason you're using XHTML? You can make it even more simple by using the HTML5 doctype (add this to your header.php file):
    <!doctype html>
    <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Whiner Bros</title>
    <link rel="stylesheet" href="stylesheet.css" type="text/css">
    </head>

    <body>

    I also noticed your title. You're going to need a loop to determine the title of the page.

    and then to include it for every page, just paste this in your index file(s)

    <?php include 'header.php'; ?>
  • What do you mean by "preview"? Are you trying to open them in a browser on your local machine? Are they on your live website? Do you have PHP installed?
  • I am trying to open them in my browser on my local machine. That is how I have been viewing my .html pages so far as my site isn't completely live yet.
  • Yeah, if you're trying to open them up locally, it won't work. You would need to download Wamp (Windows) or Mamp (Mac). If you upload to a live server, it should work.
  • I'll try downloading the Mamp and let you know the results. Looks like it's going to take a couple minutes to download
  • Also, check out this screencast so you have an idea of how it works.
    http://css-tricks.com/video-screencasts/86-mamp/
  • Alright, MAMP is working properly, but I'm having a problem. I changed my index.html to index.php and placed it in the mamp/htdocs folder. I tested to see if it worked by placing random text into the index.php file and it appeared in the browser so Woot! But when I paste my html code that I had before the page remains completely blank. Not even any < p >text< /p > is showing up. I'm not sure what I should do from here
  • @hrechkaness Did you put anything for the root password?

    Also, just for kicks, try adding this before the HTML (at the very top of the page)
    <?php
    and then
    ?>
    after the html
  • I don't believe I put anything for the root password. I tried adding the php code to the beginning and end of my html and when I refreshed my web page I got a server error instead of a blank white page
    <?php

    ?>
  • Add a root password and see if that changes anything.

    What error did it display?
  • did you get a 500 error, or a PHP error message?
  • I added a root password but it didn't change anything, here is the error message I'm getting:
    http://i50.tinypic.com/zybja0.png
  • @hrechkaness What happens when you go here? http://localhost:8888/phpinfo.php

    Are you also putting the files you're working on inside htdocs?
  • I get this text

    Not Found

    The requested URL /phpinfo.php was not found on this server.
  • Is that file located in htdocs?
  • The only thing I have located in my htdocs so far is index.php, stylesheet.css, header.php
  • Move phpinfo.php inside htdocs and see if that solves it
  • Do I have to create a phpinfo.php file or is there an already existing one that came with MAMP?
  • @hrechkaness Follow this tutorial and reload Mamp. Then take a screenshot of the error.
  • Will do, I'll post back once I've finished the tutorial
  • Alright, I finished the tutorial but it turns out, that wasn't the answer to my problem. It was directly related to my header code. If I had listened to your advice in the beginning and changed it to the doc type to html5, I'm sure I wouldn't be having this problem. Here is the code I had to delete to make my page run smoothly.

    <?xml version="1.0" encoding="UTF-8"?>

    Thanks for all your help. I'll post back if I'm having any other issues but it looks like it should be smooth sailing from here. Cheers!
  • The tutorial would have allowed us to see where the problem was, not immediately solve it. Glad it's now working.
  • How can I include header & footer if my content page is inside sub folder. Could you plz tell me what script i've to use if my pages inside folder / sub folder. so far i know and see here: <?php include 'header.php'; ?> if my pages without folder.

  • You can go inside subfolders with include 'subfolder/header.php' or inside parent folder with include '../header.php'