vanessa123 Posted April 7, 2009 Share Posted April 7, 2009 Hi, need help I have 3 radio buttons and six checkboxes - the radio buttons have different dollar values but the checkboxes have the same dollar value. my first form works great but I can't get the second form to calculate the radio button with the checkboxes...? really need help as the assignment is due in two days and I am getting desperate. Has to be in php tho. Cheers First page: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link href="styles.css" rel="stylesheet" type="text/css"> <title>Outdoor Adventures - Play Set Options</title> </head> <body> <h1>Outdoor Adventures - Play Set Options</h1> <p> Welcome to Outdoor Adventures. Complete the form below to calculate the cost of one of our play sets. </p> <form action="cost.php" method="post"> <table width="750" border="0" cellpadding="0" cellspacing="0"> <table width="750" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="88">First name: </td> <td width="662"><input type="text" id="first_name" name="first_name" size="30" maxlength="20" /></td> </tr> <tr> <td>Last name: </td> <td><input type="text" id="last_name" name="last_name" size="30" maxlength="20" /></td> </tr> <tr> <td>Phone: </td> <td><input type="text" id="phone" name="phone" size="10" maxlength="10" /></td> </tr> </table> <p>Base model play set:<br> <input type="radio" id="single" name="base" value="Single"> <label for="single">Single<br /> <input type="radio" id="double" name="base" value="Double"> <label for="double">Double</label><br /> <input type="radio" id="monkey" name="base" value="Double with monkey bars"> <label for="monkey">Monkey</label><br /> <p>Optional extra components:<br> <input type="checkbox" id="MetalClimbBar" name="extra[0]" value="Metal climb bar" /> <label for="MetalClimbBar">Metal climb bar</label><br /> <input type="checkbox" id="FiremanPole" name="extra[1]" value="Fireman pole" /> <label for="FiremanPole">Fireman Pole</label><br /> <input type="checkbox" id="See-saw" name="extra[2]" value="See-saw" /> <label for="See-saw">See-saw</label><br /> <input type="checkbox" id="Rock-climbingWall" name="extra[3]" value="Rock-climbing wall" /> <label for="Rock-climbingWall">Rock-climbing Wall</label><br /> <input type="checkbox" id="Trapezeandrings" name="extra[4]" value="Trapeze and rings" /> <label for="Trapezeandrings">Trapeze and rings combo</label><br /> <input type="checkbox" id="RopeLadder" name="extra[5]" value="Rope ladder" /> <label for="RopeLadder">Rope Ladder</label><br /> </p> <p> <input type="submit" value="Submit" > <input type="reset"> </p> </form> </body> </html> Second page: <?php // Variables for storing data and calculations $errors = ""; $count = 0; $cost = 0; // Function to display errors function errorMessage($errors) { echo "<p>Your order could not be completed. Please check the errors below:<br />"; echo "<ul>"; echo $errors; // Display error message echo "</ul>"; echo "Click the green \"back\" button to try again.<br />"; } // if the form has been posted,analyse it, strip out any leading or trailing spaces: if(_POST) { foreach ($_POST as $field_name => $value) { $value = trim($value); $$field_name = $value; } } $extra_arr = array('Climb bar'=>100, 'Fireman pole'=>100, 'See-saw'=>100, 'Rock-climbing wall'=>100, 'Trapeze and rings'=>100,'Rope ladder'=>100); // Testing for input errors and nil entries in the various areas of the form if($first_name == "" || is_numeric($first_name)) { $errors .= "<li>a first name needs to be entered</li><br />"; } if($last_name == "" || is_numeric($last_name)) { $errors .= "<li>a last name needs to be entered</li><br />"; } if($phone === "" || is_numeric($last_name)) { $errors .= "<li>a phone number needs to be entered</li><br />"; } if($base == "") { $errors .= "<li>a base needs to be selected</li><br />"; } if($base == "Single" ) { $cost = 550; } if($base == "Double") { $cost = 600; } if($base == "Double with monkey bars") { $cost = 700; } for($i = 0; $i < 6; $i++) { if($extra_arr[$i]) { $count = ++; } } // If no errors, display the form data if($errors == "") { echo <<<END <p>First name: $first_name</p> <p>Last name: $last_name</p> <p>Phone: $phone</p> <p>Base: $base</p> Optional extra components: <ul> END; for($i = 0; $i < 6; $i++) { if($extra_arr[$i]) { echo <<<END <li>$extra_arr[$i]</li> END; $cost++; } } echo <<<END </ul> <p>Cost: $$cost</p> END; } else // If errors, display errors { errorMessage($errors); } ?> Quote Link to comment https://forums.phpfreaks.com/topic/152963-calculating-radio-and-checkboxes/ Share on other sites More sharing options...
Yesideez Posted April 7, 2009 Share Posted April 7, 2009 Can you post the HTML (or a link to the page if online) with sample data please? Bit difficult without it. Quote Link to comment https://forums.phpfreaks.com/topic/152963-calculating-radio-and-checkboxes/#findComment-803339 Share on other sites More sharing options...
Yesideez Posted April 7, 2009 Share Posted April 7, 2009 Erm... can you surround that with CODE tags please? Makes it easier to read and preserves formatting! Quote Link to comment https://forums.phpfreaks.com/topic/152963-calculating-radio-and-checkboxes/#findComment-803349 Share on other sites More sharing options...
vanessa123 Posted April 7, 2009 Author Share Posted April 7, 2009 I'm not sure what you mean? Do I have to rewrite it? Quote Link to comment https://forums.phpfreaks.com/topic/152963-calculating-radio-and-checkboxes/#findComment-803354 Share on other sites More sharing options...
Yesideez Posted April 7, 2009 Share Posted April 7, 2009 One easier way of displaying data using ECHO is... echo "<p>First name: $first_name</p> <p>Last name: $last_name</p> <p>Phone: $phone</p> <p>Base: $base</p> Optional extra components: <ul>"; There's no mention of any prices in the HTML (visible to the user) to show them what they're spending. If I click "Double" it unselectes and goes back to Single being selected - missing </label> <input type="radio" id="single" name="base" value="Single"> <label for="single">Single</label><br /> <input type="radio" id="double" name="base" value="Double"> <label for="double">Double</label><br /> <input type="radio" id="monkey" name="base" value="Monkey"> <label for="monkey">Monkey</label><br /> I've added it for you. I've also changed the value of monkey to Monkey - why have a long line of text? As for the checkboxes I've edited the HTML slightly removing the square brackets: <input type="checkbox" id="MetalClimbBar" name="extra0" value="Metal climb bar" /> <label for="MetalClimbBar">Metal climb bar</label><br /> <input type="checkbox" id="FiremanPole" name="extra1" value="Fireman pole" /> <label for="FiremanPole">Fireman Pole</label><br /> <input type="checkbox" id="See-saw" name="extra2" value="See-saw" /> <label for="See-saw">See-saw</label><br /> <input type="checkbox" id="Rock-climbingWall" name="extra3" value="Rock-climbing wall" /> <label for="Rock-climbingWall">Rock-climbing Wall</label><br /> <input type="checkbox" id="Trapezeandrings" name="extra4" value="Trapeze and rings" /> <label for="Trapezeandrings">Trapeze and rings combo</label><br /> <input type="checkbox" id="RopeLadder" name="extra5" value="Rope ladder" /> <label for="RopeLadder">Rope Ladder</label><br /> You can then run a for() loop with a switch() statement to check for those ticked: for ($i=0;$i<6;++$i) { switch ($i) { case 0:if ($_POST['extra0']) {$total+=100;};break; case 1:if ($_POST['extra1']) {$total+=200;};break; case 2:if ($_POST['extra2']) {$total+=300;};break; case 3:if ($_POST['extra3']) {$total+=400;};break; case 4:if ($_POST['extra4']) {$total+=500;};break; case 5:if ($_POST['extra5']) {$total+=600;};break; } } That's presuming $total contains the total so far. How's that? Quote Link to comment https://forums.phpfreaks.com/topic/152963-calculating-radio-and-checkboxes/#findComment-803355 Share on other sites More sharing options...
Yesideez Posted April 7, 2009 Share Posted April 7, 2009 Also noticed double dollar sign: $$field_name = $value; Should this be: $field_name = $value; Quote Link to comment https://forums.phpfreaks.com/topic/152963-calculating-radio-and-checkboxes/#findComment-803357 Share on other sites More sharing options...
vanessa123 Posted April 7, 2009 Author Share Posted April 7, 2009 Thank you, am going to try all your suggestions...thanks.. was trying to clean up my mess...but your stuff sounds logical. Will let you know how I go. Cheers. Quote Link to comment https://forums.phpfreaks.com/topic/152963-calculating-radio-and-checkboxes/#findComment-803392 Share on other sites More sharing options...
Yesideez Posted April 7, 2009 Share Posted April 7, 2009 Hope it works out for you Quote Link to comment https://forums.phpfreaks.com/topic/152963-calculating-radio-and-checkboxes/#findComment-803410 Share on other sites More sharing options...
sasa Posted April 8, 2009 Share Posted April 8, 2009 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link href="styles.css" rel="stylesheet" type="text/css"> <title>Outdoor Adventures - Play Set Options</title> </head> <body> <h1>Outdoor Adventures - Play Set Options</h1> <p> Welcome to Outdoor Adventures. Complete the form below to calculate the cost of one of our play sets. </p> <form action="cost.php" method="post"> <table width="750" border="0" cellpadding="0" cellspacing="0"> <table width="750" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="88">First name: </td> <td width="662"><input type="text" id="first_name" name="first_name" size="30" maxlength="20" /></td> </tr> <tr> <td>Last name: </td> <td><input type="text" id="last_name" name="last_name" size="30" maxlength="20" /></td> </tr> <tr> <td>Phone: </td> <td><input type="text" id="phone" name="phone" size="10" maxlength="10" /></td> </tr> </table> <p>Base model play set:<br> <input type="radio" id="single" name="base" value="Single"> <label for="single">Single<br /> <input type="radio" id="double" name="base" value="Double"> <label for="double">Double</label><br /> <input type="radio" id="monkey" name="base" value="Double with monkey bars"> <label for="monkey">Monkey</label><br /> <p>Optional extra components:<br> <input type="checkbox" id="MetalClimbBar" name="extra[0]" value="Metal climb bar" /> <label for="MetalClimbBar">Metal climb bar</label><br /> <input type="checkbox" id="FiremanPole" name="extra[1]" value="Fireman pole" /> <label for="FiremanPole">Fireman Pole</label><br /> <input type="checkbox" id="See-saw" name="extra[2]" value="See-saw" /> <label for="See-saw">See-saw</label><br /> <input type="checkbox" id="Rock-climbingWall" name="extra[3]" value="Rock-climbing wall" /> <label for="Rock-climbingWall">Rock-climbing Wall</label><br /> <input type="checkbox" id="Trapezeandrings" name="extra[4]" value="Trapeze and rings" /> <label for="Trapezeandrings">Trapeze and rings combo</label><br /> <input type="checkbox" id="RopeLadder" name="extra[5]" value="Rope ladder" /> <label for="RopeLadder">Rope Ladder</label><br /> </p> <p> <input type="submit" value="Submit" > <input type="reset"> </p> </form> </body> </html> Second page: <?php // Variables for storing data and calculations $errors = ""; $count = 0; $cost = 0; // Function to display errors function errorMessage($errors) { echo "<p>Your order could not be completed. Please check the errors below:<br />"; echo "<ul>"; echo $errors; // Display error message echo "</ul>"; echo "Click the green \"back\" button to try again.<br />"; } // if the form has been posted,analyse it, strip out any leading or trailing spaces: if($_POST)// { foreach ($_POST as $field_name => $value) { $value = is_array($value) ? $value : trim($value); $$field_name = $value; } } $extra_arr = array('Climb bar'=>100, 'Fireman pole'=>100, 'See-saw'=>100, 'Rock-climbing wall'=>100, 'Trapeze and rings'=>100,'Rope ladder'=>100); // Testing for input errors and nil entries in the various areas of the form if($first_name == "" || is_numeric($first_name)) { $errors .= "<li>a first name needs to be entered</li><br />"; } if($last_name == "" || is_numeric($last_name)) { $errors .= "<li>a last name needs to be entered</li><br />"; } if($phone === "" || is_numeric($last_name)) { $errors .= "<li>a phone number needs to be entered</li><br />"; } if($base == "") { $errors .= "<li>a base needs to be selected</li><br />"; } if($base == "Single" ) { $cost = 550; } if($base == "Double") { $cost = 600; } if($base == "Double with monkey bars") { $cost = 700; } /* for($i = 0; $i < 6; $i++) { if($extra_arr[$i]) { $count++;// } } */ $count = count($extra); // If no errors, display the form data if($errors == "") { echo <<<END <p>First name: $first_name</p> <p>Last name: $last_name</p> <p>Phone: $phone</p> <p>Base: $base</p> Optional extra components: <ul> END; foreach ($extra as $name){ echo "<li>$name</li>\n"; $cost += $extra_arr[$name]; } echo <<<END </ul> <p>Cost: $$cost</p> END; } else // If errors, display errors { errorMessage($errors); } ?> Quote Link to comment https://forums.phpfreaks.com/topic/152963-calculating-radio-and-checkboxes/#findComment-804350 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.