ugrás a tartalomhoz

PHP:ráuntam a hibaüzenetre!

AZ ismeretlen · 2012. Május. 25. (P), 16.37
Hali!
valamiért ezt a hibaüzenetet kapom vissza:
Parse error: syntax error, unexpected T_VARIABLE in /home/a1275616/public_html/7b/admin/elkuld.php on line 23

send.php egy kicsikét átírtam, hogy ne tudjátok honnan emeltem ki!:
<form id="FormName" action="elkuld.php" method="post"  name="FormName">
<input id="gyerekneve" name="gyerekneve" type="hidden" value="<?php echo $row["gyerekneve"]?>" maxlength="255">
<input id="honap" name="honap" type="hidden" value="<?php echo $row["honap"]?>" maxlength="255">
<input id="biologia" name="biologia" type="hidden" value="<?php echo $row["biologia"]?>" maxlength="255">
<input id="foldrajz" name="foldrajz" type="hidden" value="<?php echo $row["foldrajz"]?>" maxlength="255">
<input id="fizika" name="fizika" type="hidden" value="<?php echo $row["fizika"]?>" maxlength="255">
<input id="kemia" name="kemia" type="hidden" value="<?php echo $row["kemia"]?>" maxlength="255">
<input id="matek" name="matek" type="hidden" value="<?php echo $row["matek"]?>" maxlength="255">
<input id="rajz" name="rajz" type="hidden" value="<?php echo $row["rajz"]?>" maxlength="255">
<input id="angol" name="angol" type="hidden" value="<?php echo $row["angol"]?>" maxlength="255">
<input id="irodalom" name="irodalom" type="hidden" value="<?php echo $row["irodalom"]?>" maxlength="255">
<input id="nyelvtan" name="nyelvtan" type="hidden" value="<?php echo $row["nyelvtan"]?>" maxlength="255">
<input id="testneveles" name="testneveles" type="hidden" value="<?php echo $row["testneveles"]?>" maxlength="255">
<input id="informatika" name="informatika" type="hidden" value="<?php echo $row["informatika"]?>" maxlength="255">
<input id="törtenelem" name="törtenelem" type="hidden" value="<?php echo $row["törtenelem"]?>" maxlength="255">
<input id="eletvitel" name="eletvitel" type="hidden" value="<?php echo $row["eletvitel"]?>" maxlength="255">
<input id="enek" name="enek"type="hidden" value="<?php echo $row["enek"]?>" maxlength="255">
<input id="magatartas" name="magatartas" type="hidden"value="<?php echo $row["magatartas"]?>" maxlength="255">
<input id="szorgalom" name="szorgalom" type="hidden"value="<?php echo $row["szorgalom"]?>" maxlength="255"><br>
címzett:<br><input id="mail" name="mail" type="text" size="25" value="" maxlength="255"><br>
<input type="submit" name="submitButtonName" value="Elküldöm">
</form>
ez az elkuld .php így nézne ki:

<?php
include("../connect.php");
$errors=array();

	if(is_mail($_POST['mail'])==false)
	$errors[]="az e-mail cím nem minősíthető e-mail címnek!<META HTTP-EQUIV=Refresh CONTENT='3; URL='>";


// required!
if(empty($_POST["mail"]))
$errors[]="nem adott meg e-mail címet!<META HTTP-EQUIV=Refresh CONTENT='3; URL='>";
else
$mail = mres($_POST['mail']);

if(count($errors)>0)
echo( "<center>". implode("<br />" , $errors)."</center>");
else
{
$to = $_POST["mail"];
$subject = "Jegyellenőrzés";

$biologia = $_POST["biologia"]
$foldrajz = $_POST["foldrajz"]
$fizika = $_POST["fizika"]
$kemia = $_POST["kemia"]
$matek = $_POST["matek"]
$rajz = $_POST["rajz"]
$angol = $_POST["angol"]
$irodalom = $_POST["irodalom"]
$nyelvtan = $_POST["nyelvtan"]
$testneveles = $_POST["testneveles"]
$informatika = $_POST["informatika"]
$törtenelem = $_POST["törtenelem"]
$eletvitel = $_POST["eletvitel"]
$enek = $_POST["enek"]
$magatartas = $_POST["magatartas"]
$szorgalom = $_POST["szorgalom"]
$gyerekneve = $_POST["gyerekneve"]
$honap = $_POST["honap"]


$message = "
<html>
<head>
<title>Jegyellenőrzés</title>
</head>
<body>
<p>Íme a  .$gyerekneve. nevű tanuló eredményei a  .$honap. ban/ben</p>
<table border='2'>
<tr>
<th>Biológia</th>
<th>Földrajz</th>
<th>Fizika</th>
<th>Kémia</th>
<th>Matek</th>
<th>Rajz</th>
<th>Angol</th>
<th>Irodalom</th>
<th>Nyelvtan</th>
<th>Tesnevelés</th>
<th>Informatika</th>
<th>Történelem</th>
<th>Életvitel</th>
<th>Ének</th>
<th>Magatartás</th>
<th>Szorgalom</th>
</tr>
<tr>
<th> .$biologia. </th>
<th> .$foldrajz. </th>
<th> .$fizika. </th>
<th> .$kemia. </th>
<th> .$matek. </th>
<th> .$rajz. </th>
<th> .$angol. </th>
<th> .$irodalom. </th>
<th> .$nyelvtan. </th>
<th> .$testneveles. </th>
<th> .$informatika. </th>
<th> .$törtenelem. </th>
<th> .$eletvitel. </th>
<th> .$enek. </th>
<th> .$magatartas. </th>
<th> .$szorgalom. </th>


</tr>
</table>




</body>
</html>
";

// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";

// More headers
$headers .= 'From: <admin##kukac##no.net84.net>' . "\r\n";

mail($to,$subject,$message,$headers);


}
?>
Hol lehet benne a gond?
nekem túl nagy ez a kód , hogy mindent átlássak és nem ittam kávét.(ami még jobban legyengít)

Köszönöm szépen az építő jellegű válaszokért....
és am ez egy bemutató féleségre kell (a css már nem másoltam be! SRY)
 
1

A hibaüzenet sokat segít. :)

T.G · 2012. Május. 25. (P), 16.53
Ha odaírják, hogy a 23. sorban van a hiba, akkor adj egy esélyt annak, hogy lehet, hogy az eggyel előtte lévő sor a hibás, és a hiba csak a következőben derül ki...

Hiányzik a ; az utasítás végéről...
5

koszonom!

AZ ismeretlen · 2012. Május. 25. (P), 18.28
köszönöm szépen a segítséget majdnem agyhalált kaptam miután 92jére mentem le a fájlt!

am nekem pont az ilyen ";" a leggyakoribb hibáim!
még a kód végéről azt az else ágat lespóroltam....(aminél azt hittem van a hiba.)!
még egyszer nagyon szépen köszönöm!
(nem értem miért kell odatenni ezt a végére ";".)
(am nem lehetne javasolni a php fejlesztőinek , hogy önjavító legyen?)
6

Vicces

Pepita · 2012. Május. 25. (P), 18.48
(nem értem miért kell odatenni ezt a végére ";".)
Valahonnan a PHP értelmezőnek is tudnia kell, hogy hol van egy programsor vége. Ha csak egy sorvége (\n) karakter zárná a programsorokat, akkor sokan nem örülnénk egy hosszabb, összetettebb utasításnál, mert rengeteget kéne vízszintesen görgetni a szerkesztő ablakát. Szinte minden programnyelvben van valamilyen "sorvége karakter".

(am nem lehetne javasolni a php fejlesztőinek , hogy önjavító legyen?)
Remélem ez csak vicc. Javasold nekik, kíváncsi lennék a válaszukra!
7

ha

AZ ismeretlen · 2012. Május. 25. (P), 19.45
ha lefordítod a teljes szöveget angolra akkor szívesen beégetem magamat a kezdők kedvéért!(nagyobbrészt ők fogják igénybe venni!)
11

Ha-ha

Pepita · 2012. Május. 26. (Szo), 17.57
Ne szabj nekem feltételeket, az ingyenmunkások a másik oldalon laknak...
Talán jobb lenne, ha kezdőkről elsősorban egyes szám első személyben beszélnél. Sok esetben én is ezt teszem.
8

(am nem lehetne javasolni a

tgr · 2012. Május. 25. (P), 23.47
(am nem lehetne javasolni a php fejlesztőinek , hogy önjavító legyen?)

Remélem ez csak vicc. Javasold nekik, kíváncsi lennék a válaszukra!

Dehogy vicc, a PHP-nek legendásan ostoba hibaüzenetei vannak. Egy intelligens értelmező ilyenkor egyrészt jelzi, hogy pontosan hol a hiba (melyik az a token, amivel nem tudott mit kezdeni), másrészt megtippeli, hogy mi a hiba valószínű oka. Pl. a PHP Lint reakciója az elkuld.php fájlra:

        if(emptyempty($_POST["mail"]))  
                                      \_ HERE
==== test-rXExkT:10: ERROR: `if(EXPR)': expected expression of the type boolean, but found a mixed value

        $foldrajz = $_POST["foldrajz"]  
                 \_ HERE
==== test-rXExkT:23: FATAL ERROR: expected `;', found symbol sym_variable
Valahonnan a PHP értelmezőnek is tudnia kell, hogy hol van egy programsor vége. [...] Szinte minden programnyelvben van valamilyen "sorvége karakter".

Modern szkriptnyelvekben jellemzően nincsen. (Viszonylag ritka, hogy két önállóan értelmes utasítás összefűzve is értelmes utasítást alkot, ezért aztán egy okos interpreter fel tudja ismerni, melyik sorvége jelenti az utasítás végét is.) A PHP nem modern, és a szintaxisa nem épp elegáns (eredetileg nem is programnyelvnek indult, hanem sablonnyelvnek). Mondjuk a tanulhatóság szempontjából ez nem rossz dolog, mert egy lefelejtett kötelező pontosvesszőt könnyű megtalálni, abba meg eléggé beleizzadhatsz, mire rájössz, hol a hiba egy ilyen kódban:

(function() {
    // do stuff
})()

(function b() {
    // do some more
})()
(Persze ez azért is van, mert a legtöbb javascript motor hibaüzenetei még a PHP-nél is ostobábbak.)
9

Legendásan? :-)

eddig bírtam szó nélkül · 2012. Május. 26. (Szo), 07.30
Akkor mit szólsz a MySQL hibaüzeneteihez? Én a hajamat tépném, ha lenne mit... :-)
10

Legenda

Pepita · 2012. Május. 26. (Szo), 17.53
A legenda számomra azt jelenti: valaha volt, félig-meddig vagy semennyire sem igaz történet. Ha neked is ezt jelenti - egyetértünk.

Tapasztalatom a PHP-n kívül leginkább Delphi (Object Pascal) van, a hibaüzenetek terén lényegesen jobb a PHP-nél, de különösebb gondom ez utóbbival sincs.

egy okos interpreter fel tudja ismerni, melyik sorvége jelenti az utasítás végét is
Igen, ennyivel is lassul az értelmezés sebessége. Tehát - szerintem - teljesen felesleges. Lehet, hogy csak nekem van "automatice" kezemben a ";", de egy valamirevaló szerkesztőprogi is helyből felhívja rá a figyelmet. Ugyanezen az alapon elvárható lenne, hogy az elgépelt utasításokat is képes legyen "helyesírásilag" kijavítani. Nekem pl. ez sokkal fontosabb lenne, én nagyon hozzá vagyok szokva a kódkiegészítéshez, emiatt ha nekem kell végiggépelnem egy utasítást, könnyen hibázok.
12

Python

janoszen · 2012. Május. 26. (Szo), 17.58
Egyszer ulj le Pythonban kodolni. Ha tuljutsz a kezdeti 15 perces anyazason a szintaxis miatt, megdobbento elmenyben lesz reszed. hihetetlenul gyorsan lehet benne kodot irni es kulturaltan fog kinezni.

Az persze megint mas dolog, hogy a Pythonnak is megvannak a maga facepalm-jai.
13

Megígérem

Pepita · 2012. Május. 26. (Szo), 18.26
Egyszer ki fogom próbálni, de kicsit félek, hogy nem 15 perc a kezdeti... És ez - a te tolladból - kissé "vérnyomásemelősnek" hangzik.
14

Szerintem annyi sincs. Igaz,

eddig bírtam szó nélkül · 2012. Május. 26. (Szo), 20.28
Szerintem annyi sincs. Igaz, nekem nem volt az ujjamban a parancsvégi pontosvessző. (már a pont sem, ami a COBOL-ból megmaradhatott volna :-) )

Párhuzamosan próbáltam rávenni magam a ruby és a python megismerésére. Végül a python mellett döntöttem, mert könnyebb volt hozzá nekem is megfelelő doksit és pl. adatbázis drivereket találni.

Ami inkább elveszi az ember kedvét: kulturált megjelenésű grafikus felületet Qt-vel lehet gyártani, de annak a licencelése nem a legjobb és a doksija is hiányos (volt pár hónapja). A többi grafikus környezettel nem tudtam kibékülni.
Webre jó lenne a django, de olyan következetlenségeket találtam benne, ami nagyon elvette a kedvem. (miután egy itteni ismerős megerősítette, hogy nem én látom rosszul, félre is toltam az egészet)
2

ahogy T.G. is írta

Arnold Layne · 2012. Május. 25. (P), 17.00
Ahogy TG is írta, hiányzik a sorvégi pontosvessző. De nem csak abban a sorban.
Más: Elágazásoknál és ciklusoknál ne spórold el a zárójeleket, mert azzal is bajaid lehetnek. Mégha csak egy soros utasításod is van, akkor is rakd ki a {} jeleket.
3

Akkor kapcsold ki!

Pepita · 2012. Május. 25. (P), 17.31
ini_set ('error_reporting', 0);
:)

(Gy.k.: ne vedd komolyan!)
4

Hibakeresés

Hidvégi Gábor · 2012. Május. 25. (P), 17.44
Ajánlom figyelmedbe az Egyszerű hibakeresés című cikket, ahol megismerkedhetsz az alapjaival, és akkor nem kell ötpercenként új témát indítani, ha megakadtál valahol.