Мое решение может быть не самым лучшим кодом, так как в нем не хватает многих вещей, таких как проверка полей и т. Д., Но для чисто образовательных целей это довольно легко понять.
В исходном коде было несколько проблем: форматирование, дополнительные скобки, именование переменных, несколько странная организация if else statements
, знак терял свое значение
Именование переменных в целом должно быть лучше и уникальнее, поскольку это облегчает отслеживание их в коде, но опять же для образовательных целей я не сделал слишком уникальным.
Форматирование в целом может быть другим, но опять же, в целом, сохранение коротких строк кода является хорошей практикой.
Дополнительные скобки на самом деле происходят от небольшого форматирования и от приоритета оператора PHP. руководство по приоритету оператора PHP можно найти Здесь . Использование этого руководства позволит вам несколько избавиться от лишних браслетов.
Я немного усовершенствовал организацию операторов if, чтобы сделать логику более понятной. Я не видел необходимости в двух отдельных операторах if
и сделал вместо него одно if
, else if
, else
, которое реализует ту же логику, что и исходные.
Чтобы решить проблему потери значения метки, я добавил скрытое поле ДОПОЛНИТЕЛЬНО , чтобы сохранить текущее значение метки. Я также должен был добавить дополнительные $_POST
по той же причине. Это краткосрочное решение sutibale для образовательных целей, но оно должно работать
Я также добавил несколько базовых параметров проверки. isset($_POST['op1'])
проверяет, было ли заполнено поле ответа op1
. is_numeric($_POST['op1'])
проверяет, что значение, указанное в op1
, действительно является числом.
Я исправил основные проблемы, описанные выше, и создал работоспособный пример решения.
Тем не менее, решение оставляет некоторые важные вещи, которые новичку может быть трудно найти.
Код для моего решения:
<?php
if(isset($_POST['start']))
{
$mark=0;
$_POST['add']="+";
$_POST['sub']="-";
$_POST['mul']="x";
$_POST['div']="/";
$num1=rand(0,100);
$num2=rand(0,100);
$num3=rand(0,100);
$num4=rand(0,100);
$num5=rand(0,10);
$num6=rand(0,10);
$num7=rand(1,100);
$num8=rand(1,100);
while($num1%10+$num2%10>=10)
{
$num1=rand(0,100);
$num2=rand(0,100);
}
while($num4%10>$num3%10 || $num4>$num3)
{
$num3=rand(0,100);
$num4=rand(0,100);
}
while($num8>$num7 || ($num7%$num8!=0))
{
$num7=rand(1,100);
$num8=rand(1,100);
}
$_POST['op1']=$num1;
$_POST['op2']=$num2;
$_POST['op3']=$num3;
$_POST['op4']=$num4;
$_POST['op5']=$num5;
$_POST['op6']=$num6;
$_POST['op7']=$num7;
$_POST['op8']=$num8;
$_POST['mark']=0;
}
else if(isset($_POST['Mark']))
{
$mark=(float)$_POST['mark'];
if(
(isset($_POST['op1']) && is_numeric($_POST['op1']))
&& (isset($_POST['op2']) && is_numeric($_POST['op2']))
&& (isset($_POST['op3']) && is_numeric($_POST['op3']))
&& (isset($_POST['op4']) && is_numeric($_POST['op4']))
&& (isset($_POST['op5']) && is_numeric($_POST['op5']))
&& (isset($_POST['op6']) && is_numeric($_POST['op6']))
&& (isset($_POST['op7']) && is_numeric($_POST['op7']))
&& (isset($_POST['op8']) && is_numeric($_POST['op8']))
&& (isset($_POST['ans1']) && is_numeric($_POST['ans1']))
&& (isset($_POST['ans2']) && is_numeric($_POST['ans2']))
&& (isset($_POST['ans3']) && is_numeric($_POST['ans3']))
&& (isset($_POST['ans4']) && is_numeric($_POST['ans4'])))
{
if(($_POST['op1']+$_POST['op2'])==$_POST['ans1'])
$mark=$mark+2.5;
else
$mark=0;
if(($_POST['op3']-$_POST['op4'])==$_POST['ans2'])
$mark=$mark+2.5;
else
$mark=0;
if(($_POST['op3']*$_POST['op4'])==$_POST['ans3'])
$mark=$mark+2.5;
else
$mark=0;
if(($_POST['op5']/$_POST['op6'])==$_POST['ans4'])
$mark=$mark+2.5;
else
$mark=0;
}
$_POST['mark']=$mark;
}
else
{
$_POST['op1']="";
$_POST['op2']="";
$_POST['op3']="";
$_POST['op4']="";
$_POST['op5']="";
$_POST['op6']="";
$_POST['op7']="";
$_POST['op8']="";
$_POST['add']="";
$_POST['sub']="";
$_POST['mul']="";
$_POST['div']="";
$_POST['mark']=0;
}
?>
<html>
<head>
<title>Simple Math Quiz</title>
<head>
<body>
<h3>Your mark is <?php echo $_POST['mark'];?></h3>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<legend><strong><h1 'text-align:center '>Welcome To the math Quiz</h1> </strong></legend>
</br>
<label><strong>First Question :</strong></label>
</br>
<input type="text" name="op1" value="<?php echo $_POST['op1']; ?>"/>
<input type="text" name="add" width="10" value="<?php echo $_POST['add']; ?>"/>
<input type="text" name="op2" value="<?php echo $_POST['op2']; ?>"/>
</br>
<p>Answer :</p>
<input type="text" name="ans1" />
</br>
</br>
<label><strong>Second Question :</strong></label></br>
<input type="text" name="op3" value="<?php echo $_POST['op3']; ?>"/>
<input type="text" name="sub" value="<?php echo $_POST['sub']; ?>"/>
<input type="text" name="op4" value="<?php echo $_POST['op4']; ?>"/>
</br>
<p>Answer :</p>
<input type="text" name="ans2" />
</br>
</br>
<label><strong>Third Question :</strong></label></br>
<input type="text" name="op5" value="<?php echo $_POST['op5']; ?>"/>
<input type="text" name="mul" value="<?php echo $_POST['mul']; ?>"/>
<input type="text" name="op6" value="<?php echo $_POST['op6']; ?>"/>
</br>
<p>Answer :</p>
<input type="text" name="ans3" />
</br>
</br>
<label><strong>Fourth Question :</strong></label></br>
<input type="text" name="op7" value="<?php echo $_POST['op7']; ?>"/>
<input type="text" name="div" value="<?php echo$_POST['div']; ?>"/>
<input type="text" name="op8" value="<?php echo $_POST['op8']; ?>"/>
</br>
<p>Answer :</p>
<input type="text" name="ans4" />
</br>
</br>
<input type="hidden" name="mark" value="<?php echo $_POST['mark']; ?>" />
<button type="submit" id="Mark" name="Mark">Mark</button>
<button type="submit" name="start">Start</button>
</form>
</body>
</html>