Showing posts with label php. Show all posts
Showing posts with label php. Show all posts

Tuesday, November 29, 2022

Computer AssistedTesting/Learning using php

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