Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Ongelma koodin kanssa

Sivun loppuun

Dasi [29.01.2005 15:48:38]

#

Eli olen kehitellyt erittäin yksinkertaisen laskutoimituksen tekevän skriptin, en vain ymmärrä miksei se toimi, tulee parse erroria. Idean varmasti jokainen ymmärtää. Kertokaapa mikää menee pieleen. Pahoittelen että ei ole sisennyksineen, onneksi ei ole pitkä luettava. Skripti:

***index.html

<html>
<head>
<body>
<form action="lasku.php" method="get">
<b>Hinta:</b> <br> <input type="text" name="hinta" <br>
</body>
</head>
</html>

***lasku.php

<?php

$hinta = $_GET['hinta']
$lasku = ((($hinta+5€+10€)*1.03)*1.22)-($hinta*0.22);
if($lasku){
	header ("Location: vastaus.php");
	}else{
	header ("Location: virhe.php");
?>

***vastaus.php

<?php
echo "Lopullinen hinta on . $lasku ."

?>


***virhe.php

<?php
echo "Virhe!"

?>

Antti Laaksonen [29.01.2005 15:51:48]

#

Muutamien rivien lopusta puuttuu puolipiste. Lisäksi PHP ei ymmärrä rahayksiköiden päälle, eli et voi käyttää niitä laskutoimituksissa. Luvut pitää ilmoittaa sellaisinaan. Tietenkin voit lopuksi muodostaa sopivanlaisen merkkijonon: "$lasku €".

Dasi [30.01.2005 12:16:27]

#

Laitoin puuttuvat puolipisteet paikoilleen ja otin €:t pois. Tulee silti virheilmoitus: Parse error: parse error, unexpected $ in /lasku.php on line 19. Voisiko virhe ilmoituksesta päätellä mitään?

fooff [30.01.2005 12:22:34]

#

}- merkki taitanee puuttua

Antti Laaksonen [30.01.2005 12:28:04]

#

Virheilmoituksen mukaan koodissa on väärässä paikassa $-merkki. Mutta outo juttu on se, että virhe on muka rivillä 19, vaikka todellisuudessa rivejä on vain 9. Onko lasku.php:ssä vielä jotain muuta, jota ei ole näkyvissä aloitusviestissäsi? Yksi virhe tosiaan on viimeisen }-merkin puuttuminen.

ajv [30.01.2005 12:38:24]

#

[pilkunnysväys]
php:ssä viimeistä riviä ei tarvitse lopettaa puolipisteeseen. Näin ollen jos on yksirivinen ( <?php echo "Hello world" ?> ) koodi, sitä ei tarvitse päättää puolipisteeseen.
Tosin hyvä käytäntö on lopettaa aina puolipisteeseen.
[/pilkunnysväys]

Dasi [30.01.2005 12:43:22]

#

Joo, kun laitoin tuon puuttuvan } niin menee sivulle vastaus.php. Vielä jää vastauksesta puuttumaan itse vastaus, eli vastaus.php sivulla lukee; Lopullinen hinta on . .

Pitäisikö vastaus.php:n löytää automaattisesti lasku.php:ssa määritelty $lasku? Vai onko vastaus.php:ssa jokin piste virhe?

Antti Laaksonen [30.01.2005 12:49:05]

#

Mitä jos et ohjaisikaan käyttäjää minnekään vaan tulostaisit nuo tekstit saman tien if-rakenteessa? Tosiaan $lasku ei välity automaattisesti seuraavalle sivulle.

Dasi [30.01.2005 13:21:03]

#

Tulostin nyt samantien vastauksen ja toimi hienosti!
Kiitos paljon!

dooDle [30.01.2005 16:14:46]

#

Tossa on vielä tämmönen:

echo "Lopullinen hinta on . $lasku ."

Siinä ei tarvitse noita pisteitä '$lasku':n molemmin puolin. Eli

echo "Lopullinen hinta on $lasku"

tai

echo "Lopullinen hinta on " . $lasku

Juice [30.01.2005 18:20:44]

#

Ei näin:

echo "Lopullinen hinta on $lasku"

vaan näin:

echo "Lopullinen hinta on {$lasku}"

Antti Laaksonen [30.01.2005 19:46:44]

#

Molemmat muodot ovat oikein. Yllättävän usein selviää ilman aaltosulkujakin.


Sivun alkuun

Vastaus

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

Tietoa sivustosta