Here is some code, which I modestly suggest is superior for the following
reasons:
1. Includes simply scaffolding (ie a sample form).
2. Code is separated into functions, rather than one monolithic block.
3. Somewhat improved word-counting.
==============================
<html>
<head>
<style>
body {
font-family: Verdana,Arial,sans-serif;
}
</style>
</head>
<body>
<h2>Price-An-Ad</h2>
<form>
New ad text:<br />
<textarea name='ad' style='width:400px; height:300px;'></textarea><br />
<input type='checkbox' name='deduct' value='true'>Make deduction<br />
Run length <select name='weeks'>
<option value='1' selected>One week
<option value='2'>Two weeks
<option value='4'>One month
</select><br />
<input type='submit' value='Calculate'>
</form>
<?php
if (isset($ad)) {
$ad = stripslashes($ad);
$words = count_words($ad);
$price = calc_price($words, $deduct, $weeks);
echo
"Priced text:"
."<div style='width:400px;'><pre>$ad</pre></div>"
."$words words, ".(isset($deduct) ? "with" : "no")." deduction, for
$weeks weeks comes to ".sprintf("\$%01.2f",$price);
}
function count_words($text) {
$count = 0;
$tok = strtok($text, " ");
while (is_string($tok)) {
if (strlen($tok) > 0)
$count++;
$tok = strtok(" ");
}
return $count;
}
function calc_price($words, $deduct, $weeks) {
// base price
$price = 5.00;
// additional cost for more than ten words
if ($words > 10)
$price += ($word - 10) * 0.20;
// favored-customer deduction
if ($deduct)
$price -= 1.50;
// by number of weeks to appear
$price *= $weeks;
return $price;
}
?>
</body></html>
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php