Jump to content
Larry Ullman's Book Forums

Leaderboard

Popular Content

Showing content with the highest reputation on 02/25/21 in Posts

  1. Hi All, Here is my solution to Pursue exercises in CH3. I combined 4 questions into one script. If you could take a look at my code and correct if I am wrong, I would be reaaaaly appreciated! Here are the questions on the book: # 1. Change calculator.php so that it uses a constant in lieu of the hard-coded average speed of 65. # 2. Better yet, modify calculator.php so that the user can enter the average speed or select it from a list # of options. # 3. Update the output of calculator.php so that it displays the number of days and hours the trip will take, when the number of hours is greater than 24. # 4. As a more advanced trick, rewrite calculator.php so that the create_radio( ) function call is only in # the script once, but still creates three radio buttons. Hint: Use a loop. Here is my solution script: ( I highlighted the code for the solution ) <?php # Script 3.10 - calculator.php #5 - Pursue # 1. Change calculator.php so that it uses a constant in lieu of the hard-coded average speed of 65. # 2. Better yet, modify calculator.php so that the user can enter the average speed or select it from a list # of options. # 3. Update the output of calculator.php so that it displays the number of days and hours the trip will take, # when the number of hours is greater than 24. # 4. As a more advanced trick, rewrite calculator.php so that the create_radio( ) function call is only in # the script once, but still creates three radio buttons. Hint: Use a loop. # # // This function creates a radio button. // The function takes two arguments: the value and the name. // The function also makes the button "sticky". function create_radio($value, $name = 'gallon_price') { // Start the element: echo '<input type="radio" name="' . $name . '" value="' . $value . '"'; // Check for stickiness: if (isset($_POST[$name]) && ($_POST[$name] == $value)) { echo ' checked="checked"'; } // Complete the element: echo " /> $value "; } // End of create_radio() function. // This function calculates the cost of the trip. // The function takes three arguments: the distance, the fuel efficiency, and the price per gallon. // The function returns the total cost. function calculate_trip_cost($miles, $mpg, $ppg) { // Get the number of gallons: $gallons = $miles / $mpg; // Get the cost of those gallons: $dollars = $gallons * $ppg; // Return the formatted cost: return number_format($dollars, 2); } // End of calculate_trip_cost() function. $page_title = 'Trip Cost Calculator'; include ('includes/header.html'); // PURSUE 1 - Define the constant for average speed: define ('AVERAGE_SPEED', 65); // Check for form submission: if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Minimal form validation: if (isset($_POST['distance'], $_POST['gallon_price'], $_POST['efficiency'], $_POST['average_speed']) && is_numeric($_POST['distance']) && is_numeric($_POST['gallon_price']) && is_numeric($_POST['efficiency']) && is_numeric($_POST['average_speed'])) { // Calculate the results: $cost = calculate_trip_cost($_POST['distance'], $_POST['efficiency'], $_POST['gallon_price']); //$hours = $_POST['distance'] / AVERAGE_SPEED; $hours = $_POST['distance'] / $_POST['average_speed']; // PURSUE 3 - Calculate days and modulus $days = $hours / 24; $days_modulus = $days % 24; // PURSUE 3 - Print the results, using Days and Hours if ( $hours <= 24) { echo '<h1>Total Estimated Cost</h1> <p>The total cost of driving ' . $_POST['distance'] . ' miles, averaging ' . $_POST['efficiency'] . ' miles per gallon, and paying an average of $' . $_POST['gallon_price'] . ' per gallon, is $' . $cost . '. If you drive at an average of ' . $_POST['average_speed'] . ' miles per hour, the trip will take approximately ' . number_format($hours, 2) . ' hours.</p>'; } else { echo '<h1>Total Estimated Cost</h1> <p>The total cost of driving ' . $_POST['distance'] . ' miles, averaging ' . $_POST['efficiency'] . ' miles per gallon, and paying an average of $' . $_POST['gallon_price'] . ' per gallon, is $' . $cost . '. If you drive at an average of ' . $_POST['average_speed'] . ' miles per hour, the trip will take approximately ' . number_format($days, 2) . ' days and ' . $days_modulus . ' hours.</p>'; } } else { // Invalid submitted values. echo '<h1>Error!</h1> <p class="error">Please enter a valid distance, price per gallon, fuel efficiency and average speed.</p>'; } } // End of main submission IF. // Leave the PHP section and create the HTML form: ?> <h1>Trip Cost Calculator</h1> <form action="" method="post"> <p>Distance (in miles): <input type="text" name="distance" value="<?php if (isset($_POST['distance'])) echo $_POST['distance']; ?>" /></p> <p>Ave. Price Per Gallon: <span class="input"> <?php // PURSUE 4 the create_radio( ) function call is only in the script once // Step 1: create an array to hole the three radio button values: $radio_values = array('3.00', '3.50', '4.00', '5.00'); // Step 2: use a foreach loop to loop through the array: foreach ($radio_values as $radio_value) { create_radio($radio_value); } //create_radio('3.00'); //create_radio('3.50'); //create_radio('4.00'); ?> </span></p> <p>Fuel Efficiency: <select name="efficiency"> <option value="10"<?php if (isset($_POST['efficiency']) && ($_POST['efficiency'] == '10')) echo ' selected="selected"'; ?>>Terrible</option> <option value="20"<?php if (isset($_POST['efficiency']) && ($_POST['efficiency'] == '20')) echo ' selected="selected"'; ?>>Decent</option> <option value="30"<?php if (isset($_POST['efficiency']) && ($_POST['efficiency'] == '30')) echo ' selected="selected"'; ?>>Very Good</option> <option value="50"<?php if (isset($_POST['efficiency']) && ($_POST['efficiency'] == '50')) echo ' selected="selected"'; ?>>Outstanding</option> </select></p> <!-- // PURSUE 2 - Let user enter average speed: (Select from a list of options is not implemented here) --> <p>Average Speed: <input type="text" name="average_speed" value="<?php if (isset($_POST['average_speed'])) echo $_POST['average_speed']; ?>"></p> <p><input type="submit" name="submit" value="Calculate!" /></p> </form> <?php include ('includes/footer.html'); ?>
    1 point
  2. Thanks Larry, I got it; that way these two variables $days and $days_modulus: $days = $hours / 24; $days_modulus = $days % 24; are not needed, which makes the code concise. I moved them into the 'else' conditional: } else { // $hours > 24 echo '<h1>Total Estimated Cost</h1> <p>The total cost of driving ' . $_POST['distance'] . ' miles, averaging ' . $_POST['efficiency'] . ' miles per gallon, and paying an average of $' . $_POST['gallon_price'] . ' per gallon, is $' . $cost . '. If you drive at an average of ' . $_POST['average_speed'] . ' miles per hour, the trip will take approximately ' . number_format( $hours / 24, 2) . ' days and ' . ($hours / 24) % 24 . ' hours.</p>'; ------------- Here is the updated full script: <?php # Script 3.10 - calculator.php #5 - Pursue # 1. Change calculator.php so that it uses a constant in lieu of the hard-coded average speed of 65. # 2. Better yet, modify calculator.php so that the user can enter the average speed or select it from a list # of options. # 3. Update the output of calculator.php so that it displays the number of days and hours the trip will take, # when the number of hours is greater than 24. # 4. As a more advanced trick, rewrite calculator.php so that the create_radio( ) function call is only in # the script once, but still creates three radio buttons. Hint: Use a loop. # # // This function creates a radio button. // The function takes two arguments: the value and the name. // The function also makes the button "sticky". function create_radio($value, $name = 'gallon_price') { // Start the element: echo '<input type="radio" name="' . $name . '" value="' . $value . '"'; // Check for stickiness: if (isset($_POST[$name]) && ($_POST[$name] == $value)) { echo ' checked="checked"'; } // Complete the element: echo " /> $value "; } // End of create_radio() function. // This function calculates the cost of the trip. // The function takes three arguments: the distance, the fuel efficiency, and the price per gallon. // The function returns the total cost. function calculate_trip_cost($miles, $mpg, $ppg) { // Get the number of gallons: $gallons = $miles / $mpg; // Get the cost of those gallons: $dollars = $gallons * $ppg; // Return the formatted cost: return number_format($dollars, 2); } // End of calculate_trip_cost() function. $page_title = 'Trip Cost Calculator'; include ('includes/header.html'); // PURSUE 1 - Define the constant for average speed: define ('AVERAGE_SPEED', 65); // Check for form submission: if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Minimal form validation: if (isset($_POST['distance'], $_POST['gallon_price'], $_POST['efficiency'], $_POST['average_speed']) && is_numeric($_POST['distance']) && is_numeric($_POST['gallon_price']) && is_numeric($_POST['efficiency']) && is_numeric($_POST['average_speed'])) { // Calculate the results: $cost = calculate_trip_cost($_POST['distance'], $_POST['efficiency'], $_POST['gallon_price']); //$hours = $_POST['distance'] / AVERAGE_SPEED; $hours = $_POST['distance'] / $_POST['average_speed']; // PURSUE 3 - Output displays the number of days and hours the trip will take if ( $hours <= 24) { echo '<h1>Total Estimated Cost</h1> <p>The total cost of driving ' . $_POST['distance'] . ' miles, averaging ' . $_POST['efficiency'] . ' miles per gallon, and paying an average of $' . $_POST['gallon_price'] . ' per gallon, is $' . $cost . '. If you drive at an average of ' . $_POST['average_speed'] . ' miles per hour, the trip will take approximately ' . number_format($hours, 2) . ' hours.</p>'; } else { // $hours > 24 echo '<h1>Total Estimated Cost</h1> <p>The total cost of driving ' . $_POST['distance'] . ' miles, averaging ' . $_POST['efficiency'] . ' miles per gallon, and paying an average of $' . $_POST['gallon_price'] . ' per gallon, is $' . $cost . '. If you drive at an average of ' . $_POST['average_speed'] . ' miles per hour, the trip will take approximately ' . number_format( $hours / 24, 2) . ' days and ' . ($hours / 24) % 24 . ' hours.</p>'; } } else { // Invalid submitted values. echo '<h1>Error!</h1> <p class="error">Please enter a valid distance, price per gallon, fuel efficiency and average speed.</p>'; } } // End of main submission IF. // Leave the PHP section and create the HTML form: ?> <h1>Trip Cost Calculator</h1> <form action="" method="post"> <p>Distance (in miles): <input type="text" name="distance" value="<?php if (isset($_POST['distance'])) echo $_POST['distance']; ?>" /></p> <p>Ave. Price Per Gallon: <span class="input"> <?php // PURSUE 4 - the create_radio( ) function call is only in the script once // Step 1: create an array to hold the three/four/... radio button values: $radio_values = array('3.00', '3.50', '4.00', '5.00'); // Step 2: use a foreach loop to loop through the array: foreach ($radio_values as $radio_value) { create_radio($radio_value); } //create_radio('3.00'); //create_radio('3.50'); //create_radio('4.00'); ?> </span></p> <p>Fuel Efficiency: <select name="efficiency"> <option value="10"<?php if (isset($_POST['efficiency']) && ($_POST['efficiency'] == '10')) echo ' selected="selected"'; ?>>Terrible</option> <option value="20"<?php if (isset($_POST['efficiency']) && ($_POST['efficiency'] == '20')) echo ' selected="selected"'; ?>>Decent</option> <option value="30"<?php if (isset($_POST['efficiency']) && ($_POST['efficiency'] == '30')) echo ' selected="selected"'; ?>>Very Good</option> <option value="50"<?php if (isset($_POST['efficiency']) && ($_POST['efficiency'] == '50')) echo ' selected="selected"'; ?>>Outstanding</option> </select></p> <!-- // PURSUE 2 - Let user enter average speed: (Select from a list of options is not implemented here) --> <p>Average Speed: <input type="text" name="average_speed" value="<?php if (isset($_POST['average_speed'])) echo $_POST['average_speed']; ?>"></p> <p><input type="submit" name="submit" value="Calculate!" /></p> </form> <?php include ('includes/footer.html'); ?>
    1 point
×
×
  • Create New...