Voisiko joku ystävällinen tarkastaa/kertoa selväkielisesti mikä koodissani on vikana? Ilmoittaa vain ison kasan herjoja enkä osaa selvittää niitä, muutama tunti opiskelua vasta takana :(
Task13.php :
<!DOCTYPE HTML> <html> <head> <title>Week 04 Task 13 </title> <meta name="keywords" content="HTML" /> <meta name="description" content="Introduction to Programming" /> <meta name="revised" content ="PV" /> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> <?php define(CHILD, 7); define(TEENAGER, 15); define(YOUNGADULT, 18); define(ADULT, 55); define(MIDDLEAGED, 65); $age=$_POST['givenAge']; if($age <=0 && age <100) { if($age<CHILD){ $txt = "Lapsi"; }elseif($age<TEENAGER){ $txt = "Teini"; }elseif($age < YOUNGADULT){ $txt = "Nuori"; }elseif($age < ADULT){ $txt = "Aikuinen"; }elseif($age < MIDDLEAGED){ $txt = "Keskiikainen"; }else{ $txt = "Vanhus"; } echo("<fieldset><legend>Age class</legend>"); echo("$age years old person is called as \"$txt\""); echo("</fieldset>"); }else{ echo("<h2>Illegal input values</h2>"); } ?> <form> <script language="JavaScript" type="text/javascript"> document.write (' <input type=button value="Back to Input" onClick="history.go(-1)"> '); </script> </form> <hr /><p><i>Age Class Categories: <br /> - Child < 7 <br /> - Teenager 7 - < 15 <br /> - Young adult = 15 - < 18 <br /> - Adult = 18 - < 55 </i><br /> - Middle-aged = 45 - < 65<br /> - Elderly man = 65 - </p> </body> </html>
ja toinen lomake Input.php
<!DOCTYPE html> <html> <head> <title>Input for age class classification: Task 13</title> <meta name="keywords" content="HTML" /> <meta name="description" content="Introduction to Programming" /> <meta name="revised" content ="PV" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <fieldset><legend>Input your age (0-300)</legend> <form action=" <?php echo('Task13.php' ); ?>" method="post"> Your age: <br /><input type="text" name='givenAge' /><br /> <input type="submit" value="Submit" /> </form> </fieldset> </body> </html>
Ainakin define-riveillä pitäisi olla lainausmerkit määriteltävien nimien ympärillä, if-lauseesta puuttuu $-merkki toisen age-sanan edestä, ja yleensä kannattaisi tarkistaa if-lauseessa isset-rakenteella, että tuo givenAge on ylipäänsä olemassa. Lisäksi paluunappisi toimii ainoastaan JavaScriptilla, kun sen olisi parempi toimia myös ilman JavaScriptia.
Jatkossa olisi järkevää myös kertoa virheilmoitus ja antaa koodista mahdollisuuksien mukaan vain olennaiset osat.
if($age <=0 && age <100) {
Ikä pienempi (tai tasan) kuin 0 ja pienempi kuin 100. Kenties >0 && <100
Mihinkä if:iin tämä else viittaa:?
Lisäksi jos ilmoitus tulee samalle sivulle, ei ensimmäisellä sivulatauksella lomaketta ole lähetetty $_POST[''] on tyhjä.
Voisi siis yhdistää:
if(isset($_POST['givenAge'])) { $ika = $_POST['givenAge']; if($ika>=1 && $ika<100) //tee toiminnot tähän } else { echo("<h2>Illegal input values</h2>"); }
Sen, onko annettu arvo numero voi tarkastaa esim:
if(is_numeric(annettuIkä)==true)
Ok, kiitos paljon :) Nyt alkaa selviytyä. Pahoittelen, etten osannut jäsentää missä virheet esiintyivät.
Suurin virheeni oli että avasin sivuja väärinpäin :D
Antamienne korjausehdotusten jälkeen toimi hienosti, kiitos!
Aihe on jo aika vanha, joten et voi enää vastata siihen.