[PHP] Vervelende parse error

Pagina: 1
Acties:
  • 282 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Onderstaand stukje code drijft mij compleet tot waanzin !!! Ik krijg constant de fout PHP Parse error: syntax error, unexpected $end in <bestandsnaam> regel <laatste regel van het script>.

Echt, ik weet niet meer wat er fout is, hopelijk kunnen jullie mij helpen. Ik hoop het echt van ik ben compleet van de kaart !!!

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
if ($_POST['submit'] == 'Submit') {
    if (!$_POST['refnummer'] || $_POST['refnummer'] == "") {
        $message = '<P>Eigen referentienummer is niet ingevuld</P>';
    } else {

        $refnummer = $_POST['refnummer'];
        
        mysql_connect("localhost","gebruikersnaam","wachtwoord") or die ("NOK to the database");
        mysql_select_db("test");
    
        $query = "INSERT INTO fiets (nummer) VALUES ('$refnummer')";
        $result = mysql_query($query);
        if (mysql_affected_rows() == 1) {
            $message = 'OK';
            
            $noform_var = 1;

        } else {
            error_log(mysql_error());
            $message = 'NOK';
        }

    }

    if (!$noform_var) {

        $thisfile = $_SERVER['PHP_SELF'];
        $message .= <<< EOMSG
            <form action="$thisfile" method="post">
            <table width="50%" border="0" cellspacing="2" callpadding="2">
            <tr>
                <td>Eigen referentienummer:</td>
                <td><input type = "text" name="refnummer" value=""></td>
            </tr>
            </table>
            </form>
            EOMSG;
    }
}
?>

<html>
<head></head>
<body>
<?php echo $message; ?>
</body>
</html>

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op vrijdag 25 maart 2005 @ 00:36:
Onderstaand stukje code drijft mij compleet tot waanzin !!! Ik krijg constant de fout PHP Parse error: syntax error, unexpected $end in <bestandsnaam> regel <laatste regel van het script>.

Echt, ik weet niet meer wat er fout is, hopelijk kunnen jullie mij helpen. Ik hoop het echt van ik ben compleet van de kaart !!!
$end betekend dat er onverwachts een eind gekomen is aan je script, komt vaak doordat er een haakje niet goed staat of een string niet wordt afgesloten.
Makkelijk op te lossen door syntax highlighting te gebruiken.

jouw fout zit in die HEREDOC string:
Heredoc

Another way to delimit strings is by using heredoc syntax ("<<<"). One should provide an identifier after <<<, then the string, and then the same identifier to close the quotation.

The closing identifier must begin in the first column of the line. Also, the identifier used must follow the same naming rules as any other label in PHP: it must contain only alphanumeric characters and underscores, and must start with a non-digit character or underscore.

[ Voor 30% gewijzigd door Erkens op 25-03-2005 00:41 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt ! Die vervelende $end is er nu uit, moet je ook maar net weten dat bij een heredoc syntax alles op de eerste colomn moet staan. Nu heb ik echter een volgend probleem. Ik heb m'n script ietwat aangepast ivm register_globals zaken, maar ik krijg nu constant de foutmelding:

[client 127.0.0.1] PHP Notice: Undefined variable: message in <file> on line 61

en op lijn 61 staat in m'n editor <?php echo $message; ?>

Hoop dat jullie mij nog een keertje willen helpen want ik ben redelijk nieuw met PHP. Alvast bedankt !

Hieronder de source

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
if (isset($_POST['submit']) && $_POST['submit'] == 'Submit') {
    if (!$_POST['refnummer'] || $_POST['refnummer'] == "") {
        $message = '<P>Eigen referentienummer is niet ingevuld</P>';
    } else {

        $refnummer = $_POST['refnummer'];
        
        mysql_connect("localhost","user","wachtwoord") or die ("NOK to the database");
        mysql_select_db("test");
    
        $query = "INSERT INTO fiets (nummer) VALUES ('$refnummer')";
        $result = mysql_query($query);
        if (mysql_affected_rows() == 1) {
            $message = 'OK';
            
            $noform_var = 1;

        } else {
            error_log(mysql_error());
            $message = 'NOK';
        }

    }

    if (!$noform_var) {

        $thisfile = $_SERVER['PHP_SELF'];
        $message .= <<< EOMSG
<form action="$thisfile" method="post">
<table width=50% border=0 cellspacing=2 callpadding=2>
<tr>
<td>Eigen referentienummer:</td>
<td><input type = "text" name="refnummer" value=""></td>
</tr>
<tr>
<td>Merk:</td>
<td><input type = "text" name="merk" value=""></td>
</tr>
<tr>
<td>Type:</td>
<td><input type = "text" name="type" value=""></td>
</tr>
<tr>
<td>Categorie:</td>
<td><select name="categorieid"></select>
</td>
</tr>
<tr>
<td>Kleur:</td>
<td><input type = "text" name="kleur" value=""></td>
</tr>
<tr>
<td>Framehoogte:</td>
<td><input type = "text" name="framehoogte" value=""></td>
</tr>
<tr>
<td>Prijs:</td>
<td><input type = "text" name="prijs" value=""></td>
</tr>
<tr>
<td>Foto:</td>
<td></td>
</tr>
<tr>    
<td><input type="Submit" name="submit" value="Voeg toe"></td>
</tr>
<table>
</form>
EOMSG;
    }
}

?>

<html>
<head></head>
<body>
<?php echo $message; ?>
</body>
</html>

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op vrijdag 25 maart 2005 @ 10:07:
Bedankt ! Die vervelende $end is er nu uit, moet je ook maar net weten dat bij een heredoc syntax alles op de eerste colomn moet staan. Nu heb ik echter een volgend probleem. Ik heb m'n script ietwat aangepast ivm register_globals zaken, maar ik krijg nu constant de foutmelding:

[client 127.0.0.1] PHP Notice: Undefined variable: message in <file> on line 61

en op lijn 61 staat in m'n editor <?php echo $message; ?>

Hoop dat jullie mij nog een keertje willen helpen want ik ben redelijk nieuw met PHP. Alvast bedankt !
wat staat er nu in de foutmelding?
hij kan de variable "message" niet vinden, wat dus betekend dat je hier een variabele gebruikt die nog nergens gezet is maar je wel de inhoud ervan wilt hebben.
controleer dus heel goed wat je waar zet, als je een variabele zet in een if statement wat niet altijd uitgevoerd wordt (kenmerk van een if statement ;) ) dan moet je wel zorgen dat je die variabele later niet gebruikt omdat je niet zeker weet dat hij bestaat.

Verder is dit gewoon heel basic debuggen, hier moet je toch echt zelf wel uitkomen zonder hier lappen met code te dumpen en van ons te verwachten dat wij jouw code "bug vrij" maken. Zo werkt het niet namelijk.

Acties:
  • 0 Henk 'm!

  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 19:01

Reinier

\o/

Verwijderd schreef op vrijdag 25 maart 2005 @ 10:07:
[client 127.0.0.1] PHP Notice: Undefined variable: message in <file> on line 61

en op lijn 61 staat in m'n editor <?php echo $message; ?>
Voert hij de code erboven wel uit? Dus alles wat hieraan voldoet:
PHP:
1
if (isset($_POST['submit']) && $_POST['submit'] == 'Submit') {


Overigens kan je ook [ code=php] gebruiken in je bericht zodat je syntax highlighting hebt.

Acties:
  • 0 Henk 'm!

Verwijderd

Moet je geen ( en ) gebruiken om die $_POST['submit'] == 'Submit' in de het IF statement...

Ik heb namelijk ooit eens problemen gehad met dat er een verschil is tussen && en AND....
Since && and || evaluate before the assignment operator (=) while AND and OR evaluate after it, you can get COMPLETELY different results if you don't fully parenthesise.

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Een vervelende parse error; da's wel een beetje een pleonasme :P
Guusvullings:
Moet je geen ( en ) gebruiken om die $_POST['submit'] == 'Submit' in de het IF statement...

Ik heb namelijk ooit eens problemen gehad met dat er een verschil is tussen && en AND....
Dat heeft met precedence te maken, en kan bij twee atomaire expressies dus nooit problemen opleveren. a || b is het zelfde als a or b, maar a or b && c is iets anders dan a || b and c.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

en daarom zou ik juist zeggen dat die haakjes eromheen moeten, want je wilt dat eerst $_POST['submit'] == 'Submit' wordt ge-evalueerd, en dat dan pas bekeken wordt of de && operatie true is...

Volgens mij kom je namelijk ook in de if lus als $_POST['submit'] iets anders is dan 'submit' (behalve als ie natuurlijk niet geset is) en met haakjes kun je dit dus voorkomen...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Since && and || evaluate before the assignment operator (=) while AND and OR evaluate after it, you can get COMPLETELY different results if you don't fully parenthesise.
= is wat anders dan ==, voor zover ik weet ook in dit geval. Al ben ik het zeker met je eens dat je beter teveel haakjes kan hebben, dan te weinig (al kun je ook daarin overdrijven). :P

[ Voor 5% gewijzigd door NMe op 25-03-2005 15:44 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1