=====
CS 328 - Week 3 Lecture 1 - 2025-02-03
=====

=====
TODAY WE WILL:
=====
*   announcements
*   CLIENT TIER - a FEW more HTML basics
*   ...and then intro HTML tables
*   ...(and hopefully) start intro to HTML forms
    *   (no, it turns out we'll start discussion of HTML forms on Thursday)
*   prep for next class

=====
*   should be working on Homework 2
    *   at-least-1st-attempts due by 11:59 pm on Friday, February 7
    *   all the problems are submitted on nrs-projects
        using ~st10/328submit
    *   submit early, submit often!

*   should be reading/working through zyBooks text Chapters 1 AND 2
    ("HTML Fundamentals" and "More HTML")
    *   we'll be using this material this week and beyond
        (although for full credit for the activities,
	they need to be completed by 11:59 pm Friday, February 28,
	the Friday before Exam 1)

=====
special characters
=====
*   there are HTML entities for special characters

*   some "classic" examples:

    <     less-than character, <
    >     greater-than character, >
    &    ampersand character, &

*   you can also get a Unicode character using the syntax:

    &#UnicodeNum;

    for example, Interrobang has Unicode number 8253, so to get this
    character, I could use:

    ‽

=====
a little more about the img element
=====
*   reminder:
    *   void element
    *   inline element
    *   requires a src attribute
        whose value is where to get the image
    *   requires an alt attribute
        to describe the image (in case it cannot be obtained,
	or displayed, or for assistive technology, etc.)

*   attributes width and height are optional,
    but if given, they should be given in pixels,
    and it is considered good practice that they be the image's
    actual size (to give a clue to the browser how much space to leave
    for the image) --

    good practice is to *resize* images using CSS,
    NOT using the img attributes width, height

====
a LITTLE more about URLs, absolute and relative:
====
*   URL: uniform resource locator
    *   supposed to be unique, and link to a resource on the Internet

*   absolute URL:
    protocol://web_server/etc
    *   "pieces" separated by forward slashes! /

    protocol? such as https, http, sftp, etc.

    web_server? such as nrs-projects.humboldt.edu

    etc? depends on the web server, how it has been set up for
    users to have pages
    *   on nrs-projects, the user's account the resource is in
        is given after the web server, preceded by a ~ (tilde)

    *   then, you put the relative pathname to the resource
        relative to the public_html directory (but don't PUT
	public_html)

    *   if you give a directory name, it will look for a file
        named index.* in that directory, and display that if it is found

*   relative URL: will be assumed to be relative to the directory
    of the HTML document it is contained in;

    *   it should NOT start with a protocol!
    *   it should NOT start with a / ! <-- UNIX/Linux systems treat that as
                                           the root of their filesystem!

    *   if an HTML document has:
        
        <img src="doxy.jpg" alt="smooth-haired dachshund" />

        ...the web server will look for a file named doxy.jpg in the
	   same directory that this HTML document is in;

    *   if an HTML document has:

        <img src="faves/pets/capy.png" alt="capybara" />

        ...the web server will look, starting in the directory
	   that this HTML document is in, for a subdirectory faves,
	   and for a faves' subdirectory pets,
	   for a file named capy.png in faves' subdirectory pets 

    *   fun fact: .. and . appear to work in URLs...!
        *   . is a nickname for the current directory
	*   .. is a nickname for the parent directory

    *   if an HTML document has:

        <img src="../kitty.png" alt="grey-striped cat" />

        ...the web server will look, starting from the directory
	   that this HTML document is in, in that directory's parent directory
	   for a file named kitty.png

=====
a - anchor element - used for hyperlinks
=====
*   another inline element
*   has content! this content will be linked to the specified content...
    ...the value of its href attribute, typically an absolute or relative
       URL

*   the content should describe the content being linked to
    (to help with assistive technologies)

    NOT so good:
    <p> Click <a href="sched.html">here</a> for the conference schedule </P
    *   "here" is NOT very descriptive of the content being linked to!

    hopefully better:
    <p> <a href="sched.html>Conference schedule</a> </p>
    *   "Conference schedule" is more descriptive of the content being linked to;
    
====
table element
====
*   we'll use to structure tabular data (like the result from
    a select statement...!)

    and NOT for formatting purposes...! <-- use CSS for formatting forms, etc.!

*   table element - represents a table

    what can be in a table element?
    *   caption element - content describes the table, and will be
        displayed with the table <-- required for CS 328 class style

    *   tr elements - table rows - contents are a row's contents

        what can be in a tr?
	*   td elements - table data - a cell's contents in a table
	*   th elements - table header - a cell containing a table header
	    *   GOOD STYLE (and CS 328 course style standard)
	        a th element should include an attribute scope,
		scope="row" if the table header heads a row,
		scope="col" if the table header heads a column

    *   the default formatting of a table is without borders --
        BUT we'll see there are nice formatting options for tables
	using CSS!

    *   see the course zyBooks Chapter 2 for some of the additional options
        for tables when you have cells that take up more one row or column,
	etc. -- for CS 328 purposes, basic tables will be fine!

        *   we'll see that "building" a table element as you loop
	    through a query's results is quite feasible

    *   see table example in 328lect03-1.html