Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Unexpected $end?

Sivun loppuun

henkilo [06.05.2009 19:58:43]

#

Parse error: syntax error, unexpected $end on line 31
Mitä tuo tarkoittaa virheilmoituksessa?
Tarkoituksenani oli luoda lomake, jossa on nimi- ja määrä-alkiot sekä tulosta-nappi. Sen piti tulostaa
määrän osoittama määrä nimeä, kun painetaan tulosta-nappia. Ei toimi. Missähän on vika? Olen vasta alottelija koodaajana, joten ihan perusjutut saattavat olla päin p:tä.

Koodini on seuraavanlainen:

<?php
 </html>
  <head>
<title>Nimi useasti</title>
 </head>

<body>


<?php
if (isset($_GET["tulosta"])) {
tulosta_nimi();
}

function tulosta_nimi() {
while($_GET['nimi']<$_GET['maara']){
    echo $_GET['nimi'];
    $_GET['nimi']++;
}
?>

<form action="<?php echo $_SERVER['PHP_SELF']?>"> method="GET">
      <p>
	Nimi: <input type="text" name="nimi"><br>
	Määrä: <input type="text" name="maara"><br>
	<input type="submit" value="tulosta">
      </p>
    </form>
    </body>
</html>
?>

Mod. edit. Keskustelu siirretty oikealle alueelle ja kooditagit lisätty!

Grez [06.05.2009 20:02:04]

#

Jos laittaa kooditagit, niin näkee helpommin..

No joo, ei näköjään ihan pelkällä värityksellä selvinnyt, mutta echo $_SERVER['PHP_SELF'] lopusta puuttuu ;

Teuro [06.05.2009 20:10:37]

#

Grez kirjoitti:

Jos laittaa kooditagit, niin näkee helpommin..

<?php
if (isset($_GET["tulosta"])) {
tulosta_nimi();
}

function tulosta_nimi() {
  while($_GET['nimi']<$_GET['maara']){
    echo $_GET['nimi'];
    $_GET['nimi']++;
/* tästä puuttuu jotakin? */
}
?>

No joo, ei näköjään ihan pelkällä värityksellä selvinnyt, mutta echo $_SERVER['PHP_SELF'] lopusta puuttuu ;

Ei vaikuta tuossa tapauksessa mitään, koska viimeistä riviä ei tarvitse päättää php:ä, mutta katsopa kaarisulkujen avaus- ja lopetusmäärät. Etenkin tulosta_nimi() funktiossa. Sisentäminen olisi ratkaissut ongelman tyylikkäästi.

EDIT: Lisäksi tuo form tagi on suljettu liian aikaisin, joten tulostukseen tulee mukaan method="GET">

Metabolix [06.05.2009 20:20:04]

#

Virheilmoitus tarkoittaa, että koodi loppui odottamattomasti kesken. Yleensä puuttuu jokin sulkeva asia kuten tekstin lopettava ", koodilohkon lopettava }, muu sulkeva sulku eli ) tai ] tms.

Grez [06.05.2009 20:21:26]

#

Joo, tosiaan vika on siitä että yksi lopettava } puuttuu.

Ajattelin itsekin ensin, että varmaan lainausmerkki tai kaarisulje puuttuu ja meinasin kommentoida tuosta, että jos käyttäisi jotain säällistä PHP-editoria, niin nuo puuttuvat kaarisulkeet huomaa helposti, mutta kun en huomannutkaan sitä niin jätin kommentoimatta. Kommentoin vaan tuosta kooditagista, jolla näkisi suoraan esim. puuttuvan " tai '. Olisi pitänyt varmaan copy&pastettaa sinne editoriin niin olisi huomannut tuon kaarisulkeen.

Mitä tästä opin: pitäisi noudattaa itse niitä neuvojaan mitä meinaa muille jakaa :D

janijohannes [06.05.2009 20:25:50]

#

Itseasiassa vika on viimeisellä rivillä. siinä lukee "?>" mutta missään ei aloiteta sitä komennolla "<?php".

EDIT: Lisäksi ekalla rivillä on "<?php" joka aiheuttaa kaatumisen kun aikaisempi virhe on poistettu.

Teuro [06.05.2009 20:27:53]

#

Ja vielä hiukan avautumista tuosta koodista. En halua lannistaa, mutta

<input type="submit" value="tulosta">

ei tee sitä odotat sen tekevän. Et siis koskaan saa tuohon

	if (isset($_GET["tulosta"])){

kohtaan true arvoa, koska sinulla ei ole lähdössä tuon nimistä kenttää GET taulukossa. (onko oikea termi?).

Toisekseen

$_GET['nimi']++;

on varmaankin ajatuskatko. Olet ehkä tarkoittanut:

$_GET['maara']--;

Oikeammin jotenkin näin

<?php
if (isset($_GET['nimi'])) {
	tulosta_nimi();
}
function tulosta_nimi() {
	while($_GET['maara']){
		echo $_GET['nimi'];
		$_GET['maara']--;
	}
}
?>

Grez [06.05.2009 20:39:17]

#

janijohannes kirjoitti:

Itseasiassa vika on viimeisellä rivillä. siinä lukee "?>" mutta missään ei aloiteta sitä komennolla "<?php".

Ei siitä kyllä mitään virheilmoitusta tule, se vaan näkyy sivun lopussa ylimääräisenä ?>:nä. Sehän on sinänsä PHP-tulkin kannalta HTML:ää, eikä PHP:tä. PHP-tulkkia taas ei kiinnosta onko ulosmenevä html validia vai ei.

Teuro [06.05.2009 20:50:19]

#

Grez kirjoitti:

Ei siitä kyllä mitään virheilmoitusta tule, se vaan näkyy sivun lopussa ylimääräisenä ?>:nä. Sehän on sinänsä PHP-tulkin kannalta HTML:ää, eikä PHP:tä. PHP-tulkkia taas ei kiinnosta onko ulosmenevä html validia vai ei.

Tuo on aivan totta, mutta janijohannes saattoi vahingossa tulkita tulkin virheilmoituksen

tulkin herja kirjoitti:

Parse error: syntax error, unexpected $end in H:\Program Files\Apache Software Foundation\Apache2.2\htdocs\treeni\phpbb.php on line 27

sillä tavalla, että herja tarkoittaa nimenomaan tuota ?> merkkiä. Virhehän korjaantuu lisäämällä tuon päättävän kaarisulun oikeaan paikkaan. Tämä on helppo tarkistaa poistamalla tuon ?> merkin ja kokeilemalla. Virheen pitäisi olla rivinumeroa lukuunottamatta identtinen.

henkilo [06.05.2009 22:06:24]

#

Kiitos kaikille vastauksista! Teuron vinkit toimivat, jes!


Sivun alkuun

Vastaus

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

Tietoa sivustosta