This lab is about putting together the concepts we discussed in lecture to help you assemble your own programmer’s toolkit for creating dynamic web sites. In this lab you’ll learn how we can leverage PHP code embedded within our HTML to generate all sorts of content.
Lab Homework | Deadline | Slip Days | Credit | Solution |
---|---|---|---|---|
All Parts | Sun 2/2, 11:59pm | Max: 2 days | 20 points (completion) | Provided |
What you need.
Your textbook. You’ll probably want to use it as a reference to complete this homework.
If you plan on using your personal laptop to work on your assignments this semester, you should bring it. Otherwise you can use a lab computer. If you plan to use the lab computers, please bring a USB drive that you can use to save your work.
Sign the attendance sheet before you leave.
It is your responsibility to sign the attendance sheet before you leave. If it wasn’t handed to you, ask to sign it. No signature on the attendance sheet will result in an immediate 0 for this lab’s attendance grade. Forgetting to sign the attendance sheet will not be considered a valid excuse to have your lab attendance corrected.
Work together.
Work with your peers to complete this lab. Talk aloud, discuss, troubleshoot problems. You are encouraged to work together so long as you do your own work and you don’t give away answers. Every student should have the opportunity to learn this material. If you give away the answers, you’re taking away their learning opportunity.
Submit.
When you’re finished, follow the instructions in submit.md to submit your assignment.
In past semesters, students have made the mistake of attending the wrong lab section.
Note: Other platforms such as CoursePad and Scheduler are not synced with the university and you should not be looking at these sites to check enrollment.
In the case you are not in the right section, please go to the correct lab section now.
Objective: Paper Tower
1) Form teams of 4-5 students. 2) A TA will hand each team a scratch piece of paper. 3) Each team has exactly five minutes to construct the tallest freestanding structure using no other materials. 4) The winning team is the team with the tallest tower! 5) Now get to know your team in the next section…
You’ll be in this lab section with the same people all semester long. Take a moment to introduce yourself to those around you. I want you to get to know one another so you can help each other out. You might want to exchange contact information too.
Students who have a peer support network in class often do better. Use this opportunity to build your 2300 support network: sit in the same location when doing your 2300 homework (just do your own work), ask your peer to fill you in when you miss class, ask your peer to critique your project design!
Remember, there are as many A+’s available in this class as students; everyone can get an A+. Helping your peers will not in any way shape or form hurt your chances at earning an A+. Everyone benefits when we support each other!
git@github.coecis.cornell.edu:info2300-2020sp/YOUR_GITHUB_USERNAME-lab01.git
.\
Replace YOUR_GITHUB_USERNAME in the URL with your GitHub username.Partials save us time by reducing duplicate code. The website in your lab repository currently makes poor use of partials. For example, the structure of index.php’s partials should look like what is shown below.
Objective: We’ve already provided the init.php partial. Complete the partial plan above by creating the header.php and footer.php partials and use them in every page for this site.
The header partial should indicate to the user which page they are currently viewing in their browser. It currently looks like this:
Objective: You will change the header partial to programmatically indicate the current page like this:
Objective: As always, plan first, and then code. Write your plan as pseudocode as a comment at the top of header.php.
If you need to, you can write comments in PHP like this:
/*
This is a multi-
line comment in PHP.
*/
// This is a single line comment in PHP.
You may not know where to start here. That’s normal. Try brainstorming ideas how you might use the tools you have in your programmer’s toolbox to solve this problem. Talk to other students and discuss ideas. Don’t be too specific here and discuss actual code… you’ll still want to solve this yourself that way you learn more. You may also have to make several plans if your first few fail. Again, this is normal.
Hint: You can solve this using only variables (the stuff you’ve learned in class). You don’t need conditional statements, arrays, functions, loops (the stuff you haven’t learned in PHP yet) to do this.
Objective: Once you’ve got your plan, it’s now time to code it up! Programmatically identical the current page in the navigation bar.
Note: Undefined variable notices/warnings are okay.
Managing and maintaining the content of static HTML pages can take a lot of time. It’s often easier to store the content in some way (later we’ll learn how to do this with databases) and then use PHP to place that content in the HTML. In this part, we’ll add another tool to your toolkit: demonstrate how we can leverage functions and arrays to generate HTML content.
A benefit of using a function is that it shortens code that you would otherwise would have repeatedly displayed. This makes code concise and neat which improves readability. Functions also allow us to reproduce the same action we want while decreasing room for error, as we only need to make changes to arguments (parameters) taken in.
Take a look at the code for the Standards page. Observe that there is an array of the standards for this class.
If we wanted to output these standards to the screen we could write some code like this:
<li><?php echo htmlspecialchars($standards[0]); ?></li>
<li><?php echo htmlspecialchars($standards[1]); ?></li>
<li><?php echo htmlspecialchars($standards[2]); ?></li>
<li><?php echo htmlspecialchars($standards[3]); ?></li>
<li><?php echo htmlspecialchars($standards[4]); ?></li>
<li><?php echo htmlspecialchars($standards[5]); ?></li>
...
The many repeated parts just takes up space. Using a function, we can have the same display while using less than 5 lines of code (in comparison to the 20 lines we have now). Another benefit of a function is that it can help us prevent mistakes that commonly are made when just copying and writing several lines of code.
Here is a plan for how we might remove the repeated lines of code.
At the top of standards.php:
function print_standard( standard )
prints out standard enclosed in a <li> tag
end function
In the HTML body:
for each ( standard in standards )
call print_standard(standard)
end for each loop
We’ve already created the print_standard()
function declaration for you. We’ve also coded up the code for the the HTML body.
Objective: You just need to complete the inside of the print_standard()
function.
You might feel lost here. That’s normal. Take it slow and think through things. Discuss at a high level with your peers if you need to. Work together and support one another!
If you use resources created by other people, you need to cite that resource. Not citing that resource is plagiarism and is considered academic misconduct.
You are required to cite all resources according the course citation policy. Failure to cite all resources according to this policy will result in a minimum of a one letter grade deduction on an assignment.
Objective: Visit the course website and read the course citation policy now. (Yes, you need to read it again if you took 1300, it’s changed!)
Objective: Create a new citations.php page and add it to the nav bar.
Objective: Your citation page should include the two main citation rules for the class:
Hint: The bolded text here has semantic meaning. You probably want to use <strong>
or <em>
.
Objective: Provide an example for each citation rule on this page.
Objective: Your HTML and CSS must validate. Check that each page validates before you submit your assignment.
Hint: Validate HTML by viewing the PHP page in the browser, then view the HTML source in the browser. Copy the source and paste it into the HTML validator: https://validator.w3.org/nu/#textarea
The following individuals made contributions to this assignment.