Jump to content
Larry Ullman's Book Forums

AlexHe

Members
  • Posts

    2
  • Joined

  • Last visited

Posts posted by AlexHe

  1. Hi,

    there is an exercise from page 286, chapter 10, "make the function in menus.php take arguments to indicate the starting year and the number of years to generate. [...] rewrite the function body so that it uses these values in the year for loop". So, we may have two fields for entering the starting year (for ex. 1990) and the numbers of years (for ex. 15), in order to create a pull-down menu by a user-defined function (1990, 1991, 1992 etc).

    The thing is, how on earth can i retrieve the chosen year from the select-list, in order to print a message like "you have chosen year X"?

    The code as far as i was able to write it, is:

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
     <head>
      <meta http-equiv="content-type" content="text/xml; charset=utf-8" />
      <title>Menu</title>
     </head>
     <body>
     <?php
     //Define function that makes pull-down menus for the years:
     function make_date_menus ($start_year, $years) {
       print '<select name="year_list">';
       for($y=$start_year; $y<=($start_year+$years); $y++) {
         print "\n<option value=\"$y\">$y</option>";
       }
       print "</select>\n";
     } // End of make_date_menus
    
     //Check for a form submission:
     if ($_SERVER['REQUEST_METHOD']=='POST') {
       if (is_numeric($_POST['start_year']) && is_numeric($_POST['years'])) {
         if ($_POST['start_year']>0 && $_POST['years']>0) {
         make_date_menus ($_POST['start_year'], $_POST['years']);
       } else { //Negative numbers entered
         print "<p><em> Please enter positive numbers!</em></p>";
       }  
       } else { //Incorrect values entered
         print '<p><em> Please enter a valid starting year and number of years!</em></p>';
       }
     }
     ?>
    
       <form action="menus.php" method="post">
         <p>Enter the starting year: <input type="text" name="start_year" /></p>
         <p>Enter the number of years to generate: <input type="text" name="years" /></p>
         <input type="submit" name="submit" value="Make the menu!" />
       </form>  
     </body>    
    </html>
    

    Thanks!

     

     

     

     

     

    Check my code out:

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

    <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8" />

    <title>Date Menus</title>

    </head>

    <body>

    <?php // Script 10.1 - menus.php

    /* This script defines and calls a function. */

     

    // This function makes three pull-down menus for the months, days, and years.

    function make_date_menus($start_year, $end_year = 2012) {

     

    // Array to store the months:

    $months = array (1 => 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');

     

    // Make the month pull-down menu:

    print '<select name="month">';

    foreach ($months as $key => $value) {

    print "\n<option value=\"$key\">$value</option>";

    }

    print '</select>';

     

    // Make the day pull-down menu:

    print '<select name="day">';

    for ($day = 1; $day <= 31; $day++) {

    print "\n<option value=\"$day\">$day</option>";

    }

    print '</select>';

     

    // Make the year pull-down menu:

    print '<select name="year">';

    //$start_year = date('Y');

    for ($y = $start_year; $y <= $end_year; $y++) {

    print "\n<option value=\"$y\">$y</option>";

    }

    print '</select>';

     

    } // End of make_date_menus() function.

     

    // Make the form:

    print '<form action="" method="post">';

    make_date_menus(2011, 2050);

     

    print '</form>';

     

    ?>

    </body>

    </html>

     

    OK,this is not a so user-friendly...but that's cool,I think! :P

×
×
  • Create New...