i have easy programming exercise , i'm trying in php: determine if student pass or not course. student pass course if average of 3 grades greater or equal 15. show message if student passes or not , validate 3 grades before calculate average. show error message if grade if wrong.
i have in both pseudo-code , pseint, easy validate because use do-while loop , everytime asks me typing number , wrong, validates grades:
algorithm exercise14 define grade1, grade2, grade3, prom real; repeat print "type first grade: "; read grade1; if (grade1<0 | grade1>20) print "error! invalid grade, type valid grade."; endif until (grade1>=0 & grade2<=20); repeat print "type second grade: "; read grade2; if (grade2<0 | grade2>20) print "error! invalid grade, type valid grade."; endif until (grade2>=0 & grade2<=20); repeat print "type third grade: "; read grade3; if (grade3<0 | grade3>20) print "error! invalid grade, type valid grade."; endif until (grade3>=0 & grade3<=20); prom = (grade1+grade2+grade3)/3; if (prom>=15) print "the student passed course!"; print "the average is: " prom; else print "the student did not pass course."; print "the average is: " prom; endif endalgorithm
now, want in php. problem cannot validate in way because if it, browser takes lot of time react , nothing, have looked on internet , need function validate i'm not sure. i'm learning php so, excuse me if repeated question or easy want know because i'm learning.
the final question is, how can validate fields if php , obviously, html5?
php code:
<!doctype html> <html lang="en"> <head> <title>exercise 14</title> <meta charset="utf-8"> </head> <body> <h2>php exercises</h2> <h3>exercise 14</h3> <form action="#" method="post" id="constant" name="constant"> <div> <label for="text">grade 1: </label> <input type="text" name="grade1" placeholder="type grade1"> </div> <div> <label for="text">grade 2: </label> <input type="text" name="grade2" placeholder="type grade 2"> </div> <div> <label for="text">grade 3: </label> <input type="text" name="grade3" placeholder="type grade 3"> </div> <div> <input type="submit" name="button" id="sending" value="send"> </div> </form> <?php if(isset($_post['button'])){ $grade1 = $_post['grade1']; $grade2 = $_post['grade2']; $grade3 = $_post['grade3']; while($grade1<0){ echo "error!"; } do{ if ($grade2<0 | $grade2>20) { echo "error!"; } }while($grade2>=0 && $grade2<=20); do{ if ($grade3<0 | $grade3>20) { echo "error!"; } }while($grade3>=0 && $grade3<=20); $prom = ($grade1+$grade2+$grade3/3); if ($prom>=15) { echo "the averages is: " . $prom; echo "the student passed course!"; }else{ echo "the averages is: " . $prom; echo "the student did not pass course."; } } ?> </body> </html>
php cannot interactively read command prompt or other refreshing input. model of writing server-side code web clients web client (browser, html) sends 1 http request containing data, server evaluates data, sends response. data not going refresh until http request made. such makes no sense loop on $_post
value until correct value; value won't change during course of 1 execution of code. logic must be:
- evaluate each input once.
- if 1 input invalid, reject entire request.
- only if inputs valid, whatever want do.
- return html response saying what's wrong or has succeeded.
exempli gratia:
<?php $errors = []; if ($_server['request_method'] == 'post') { if ($_post['grade1'] < 0) { $errors['grade1'] = 'too low'; } ... if (!$errors) { // validation successful, } } ?> <form method="post"> <input name="grade1" value="<?= htmlspecialchars($_post['grade1'] ?? null); ?>"> <?php if (isset($errors['grade1'])) : ?> <span class="error"><?= $errors['grade1']; ?></span> <?php endif; ?> ... </form>
Comments
Post a Comment