The following php programs are presented to aid educators in developing interactive modules for their students on the world wide web.
Where teachers have access solely to the public_html directory, and no access to the cgi-bin directory, php is a method of writing interactive material without using Perl.
The following code, 2 programs, one a question (test.php), and one a grading module called "process.php", are presented. I am no expert in php, and cobbled this together just to show the reader that it can be done.
test.php
<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<title>Prototype php Computer Assisted Learning/Testing</title>
</head>
<?php
//global $root2;
$true = "true";
$false = "false";
$debug = $false;
function sigFig($value, $digits)
{
if ($value == 0) {
$decimalPlaces = $digits - 1;
} elseif ($value < 0) {
$decimalPlaces = $digits - floor(log10($value * -1)) - 1;
} else {
$decimalPlaces = $digits - floor(log10($value)) - 1;
}
$answer = round($value, $decimalPlaces);
return $answer;
}
function randomFloat($min = 0, $max = 1) {
return $min + mt_rand() / mt_getrandmax() * ($max - $min);
}
$r_no_a = randomFloat(1,2);
$r_no_a = sigFig($r_no_a,3);
$r_no_c = sigFig(randomFloat(1,2),3);
$r_no_b = sigFig(randomFloat(4*$r_no_a*$r_no_c, 4.3*$r_no_a*$r_no_c),3);
$root1 = (-$r_no_b +sqrt( pow($r_no_b,2)-4*$r_no_a*$r_no_c))/(2*$r_no_a);
$root1 = sigFig($root1,3);
$text = "
<h2>A php protypical computer assisted learning/testing module</h2>
<br> For the equaton <br>
<center>
<h2>
$r_no_a x<sup>2</sup> + $r_no_b x + $r_no_c = 0
</h2>
</center>
one root is $root1. What is the second root?";
$root2 = (-$r_no_b - sqrt( pow($r_no_b,2)-4*$r_no_a*$r_no_c))/(2*$r_no_a);
$root2 =sigFig($root2,3);
echo $text;
if ($debug == $true){
echo "<br> debug::: root2 = $root2<br>";
echo sigFig($root1,3);}
?>
<body>
<form action="process.php" method="post">
<fieldset>
<table>
<tr>
<td>First Name: </td>
<td><input type="text" name="fname" value="John"></td>
</tr>
<tr>
<td>Last Name: </td>
<td><input type="text" name="lname" value="Smith"></td>
</tr>
<tr>
<td>e-mail address: </td>
<td><input type="text" name="email address" value="john.smith@university.edu"></td>
</tr>
</table>
</fieldset>
<fieldset>
<input type="hidden" name="root2" value="<?php echo $root2;?>" />
<input type="hidden" name="a" value="<?php echo $r_no_a;?>" />
<input type="hidden" name="b" value="<?php echo $r_no_b;?>" />
<input type="hidden" name="c" value="<?php echo $r_no_c;?>" />
<input type="hidden" name="text" value="
<?php echo $text;?>"/>
<font size="+3">
<select name="firstSign">
<option value="+">+</option>
<option value="-"> -</option>
</select>
<select name="firstDigit">
<option value="1">1</option>
<option value="2"> 2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
.
<select name="secondDigit">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
<select name="thirdDigit">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
x 10
</font>
<sup>
<select name="firstExpSign">
<option value="+">+</option>
<option value="-">-</option>
</select>
<select name="firstExpDigit">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
<select name="secondExpDigit">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
<input type="hidden" name="correctAnswer" value='<?php "$root2";?>' />
<input type="submit" name="submit" value="Submit Your Answer">
</fieldset>
</sup>
</form>
</body>
</html>
process.php
The process module starts here:
<?php
$true = "true";
$false = "false";
$debug = $false;
if (isset($_POST['submit']))
{
echo "<big/><big/>";
echo "Your First Name is: " . $_POST["fname"] . "<br>";
echo "Your Last Name is: " . $_POST["lname"] . "<br>";
/* echo "Your e-mail address is: " . $_POST["email address"] . "<br>";
/* echo "Your State is: " . $_POST["state"] . "<br>";*/
echo "<br>";
$correctAnswer = $_POST["correctAnswer"];
/*var_dump($_POST["correctAnswer"]);*/
$text = $_POST["text"];
/*var_dump($_POST["text"]);*/
$root2 = $_POST["root2"];
/*var_dump($_POST["correctAnswer"]);*/
$firstDigit = $_POST["firstDigit"];
$secondDigit = $_POST["secondDigit"];
$thirdDigit = $_POST["thirdDigit"];
$firstExpSign = $_POST['firstExpSign'];
$firstExpDigit = $_POST['firstExpDigit'];
$secondExpDigit = $_POST['secondExpDigit'];
$power = $firstExpDigit*10+$secondExpDigit;
if ($firstExpSign == "-"){$power=-$power;}
$studentAnswer = $firstDigit+$secondDigit/10+$thirdDigit/100;
if ($firstSign == "-"){-$studentAnswer = -$studentAnswer;}
$studentAnswer = $studentAnswer*pow(10,$power);
echo $text;
echo "<br> Your answer was = ".$studentAnswer;
if($studentAnswer == $root2){
echo "Right! <img src=./icons/check.gif> ";
}else{
echo "<br>
Wrong! <img src=./icons/checkno.gif><br>";}
echo "<h2>Use back arrow to return to question</h2>";
}
?>
The above text can be executed at my physical chemistry site