Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Pika-apua php-aloittelijalle

polar21 [04.02.2014 19:28:26]

#

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  &lt; 7 <br />
	 - Teenager 7 - &lt; 15 <br />
	 - Young adult = 15 - &lt; 18 <br />
	 - Adult = 18 - &lt; 55 </i><br />
	 - Middle-aged = 45 - &lt; 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>

Metabolix [04.02.2014 19:33:08]

#

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.

p99o [04.02.2014 19:40:34]

#

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:?

} else {
    echo("<h2>Illegal input values</h2>");
}

Lisäksi jos ilmoitus tulee samalle sivulle, ei ensimmäisellä sivulatauksella lomaketta ole lähetetty $_POST[''] on tyhjä.

if(isset($_POST[''])) {
    //tee toiminnot
}

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)

polar21 [04.02.2014 19:40:43]

#

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!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta