Nieuwe syntax error bij if/else

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Tom C

Tom C

29/05/2008 23:41:00
Quote Anchor link
Hallo,

Ik heb nu de eerste syntax error verholpen, maar nu heb ik een nieuwe:

Parse error: syntax error, unexpected '}', expecting ',' or ';' in C:\xampp\htdocs\CR\aanmelden.php on line 62

hier het stukje code waar het om gaat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if(empty($voornaam) || empty($achternaam) || empty($adres) || empty($nummer) || empty($postcode) || empty($woonplaats) || empty($telnr))
{

    echo 'U heeft een  benodigd veld niet ingevuld! De velden met een * zijn verplicht!'
}
else
{
    $query = "INSERT INTO aanmeldingen (voornaam, tussenvoegsel, achternaam, adres, nummer, postcode, woonplaats, telnr, mobiel, email)
VALUES ('$voornaam','$tussenvoegsel','$achternaam','$adres','$nummer','$postcode','$woonplaats','$telnr', '$mobiel', '$email')"
;
mysql_query($query) or die (mysql_error());
echo "Je aanmelding is verzonden!";
}

?>


De een-na-laatste regel (alleen de '}' dus) is de regel waarnaar de fout verwijst. Wat moet ik doen?

Bvd,
Tom
 
PHP hulp

PHP hulp

28/11/2024 04:31:58
 
Terence Hersbach

Terence Hersbach

29/05/2008 23:45:00
Quote Anchor link
de regel waar de fout naar verwijst, is meestal niet de fout zelf.

vertaal de fout:

Parse fout: syntax fout, onverwacht }, verwacht is ',' of ';' op regel 62 van dat bestand.

oftewel, je bent ergens een , of een ; vergeten.

tip: kijk regel 4 van bovenstaand stukje
 
Tom C

Tom C

29/05/2008 23:50:00
Quote Anchor link
Hartstikke bedankt!
Echt gewoon een beginnersfout, puur overheen gekeken.

Nu werkt de pagina wel, alleen is er weer een probleem.
De volgende echo wordt al weergegeven vóórdat er ook maar iets is ingevuld in het formulier, laat staan verzonden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if(empty($voornaam) || empty($achternaam) || empty($adres) || empty($nummer) || empty($postcode) || empty($woonplaats) || empty($telnr))
{

    echo 'U heeft een  benodigd veld niet ingevuld! De velden met een * zijn verplicht!'
}
else
{....
?>

Hoe kan dit?
Gewijzigd op 01/01/1970 01:00:00 door Tom C
 
Terence Hersbach

Terence Hersbach

29/05/2008 23:53:00
Quote Anchor link
eerst de vraag.. waar komt $voornaam vandaan?

edit: daarmee bedoel ik, doe je nog iets met '$voornaam = ' voor de if-constructie? Zo ja, laat dit dan eens zien..
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
 
Tom C

Tom C

29/05/2008 23:57:00
Quote Anchor link
Ik zal even de volledige PHP code posten, zie hier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
$sServer
= 'localhost';
$sUser = 'Tom';
$sPass = '******';
$database = 'carolus';
$rConnectie = mysql_connect( $sServer, $sUser, $sPass ); // r van resource
$rConnectie = mysql_select_db( $database );
if( $rConnectie )
{

    // Verder gaan met de code
}
else
{
    echo 'An error has occurred: ' . mysql_error();
}

?>


<?php
$voornaam
= $_POST['voornaam'];
$tussenvoegsel = $_POST['tussenvoegsel'];
$achternaam = $_POST['achternaam'];
$adres = $_POST['adres'];
$nummer = $_POST['nummer'];
$postcode = $_POST['postcode'];
$woonplaats = $_POST['woonplaats'];
$telnr = $_POST['telnr'];
$mobiel = $_POST['mobiel'];
$email = $_POST['email'];
?>



<?php
if(empty($voornaam) || empty($achternaam) || empty($adres) || empty($nummer) || empty($postcode) || empty($woonplaats) || empty($telnr))
{

    echo 'U heeft een  benodigd veld niet ingevuld! De velden met een * zijn verplicht!';
}

else
{
    $query = "INSERT INTO carolus (voornaam, tussenvoegsel, achternaam, adres, nummer, postcode, woonplaats, telnr, mobiel, email)
VALUES ('$voornaam','$tussenvoegsel','$achternaam','$adres','$nummer','$postcode','$woonplaats','$telnr', '$mobiel', '$email')"
;
mysql_query($query) or die (mysql_error());
echo "Je aanmelding is verzonden!";
}

?>


Heb je hier iets aan?
 
Tom C

Tom C

30/05/2008 00:06:00
Quote Anchor link
Het is dus de bedoeling dat mensen een formulier invullen, met sommige verplichte velden. Als die velden niet ingevuld worden en hij/zij klikt op verzenden, dan pas moet die echo komen.

Iemand gaf me deze code (in ruime zin) en zei dat het zo moest..
 
Terence Hersbach

Terence Hersbach

30/05/2008 00:07:00
Quote Anchor link
jazeker, voor een ander puntje wat ik je zo vertel

zodra jij nog niet het formulier gepost hebt, zal $_POST['voornaam'] leeg zijn. (logisch, je hebt nog niets ingevuld op dat moment)

in je if doe je:

als $voornaam leeg is, ga dan door

daarom zal die echo altijd komen.

je zou het eigenlijk alleen moeten controleren als er dus op de knop gedrukt is om het formulier te posten. Hoe je kan controleren of er iets gepost is, kijk je wat $_SERVER['REQUEST_METHOD'] oplevert. In geval van een post, zal deze POST teruggeven.

wat je dus dan moet doen is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    if($_SERVER['REQUEST_METHOD'] == 'POST' && (empty($voornaam) || empty($achternaam) || empty($adres) || empty($nummer) || empty($postcode) || empty($woonplaats) || empty($telnr))) {
    //je melding
?>


nu staat er in woorden vertaald:

als er gepost is en voornaam is leeg, of als er gepost is en adres is leeg, of als er gepost is en nummer is leeg enz. enz.

in dat geval moet je dus alle velden invullen.

Om nog even terug te komen op het begin.

Zodra jij nu een ' invult, zal dat een foutmelding op gaan leveren omdat je query dan mislukt. Waarom zal ik je besparen (tenzij je er naar vraagt).
Maar inhoudelijk komt het erop neer dat er een beveilingslek in je sql zit.

Deze kan je oplossen dmv:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$voornaam
= mysql_real_escape_string($_POST['voornaam']);
$tussenvoegsel = mysql_real_escape_string($_POST['tussenvoegsel']);
$achternaam = mysql_real_escape_string($_POST['achternaam']);
$adres = mysql_real_escape_string($_POST['adres']);
$nummer = mysql_real_escape_string($_POST['nummer']);
$postcode = mysql_real_escape_string($_POST['postcode']);
$woonplaats = mysql_real_escape_string($_POST['woonplaats']);
$telnr = mysql_real_escape_string($_POST['telnr']);
$mobiel = mysql_real_escape_string($_POST['mobiel']);
$email = mysql_real_escape_string($_POST['email']);
?>

wat mysql_real_escape_string doet, is een \ voor de ' zetten.

Bij het uitlezen zie je deze ook, die kan je verwijdren door stripslashes() over je output te halen.

verder is het ook handig om te controleren of een telnr ook wel echt een telnr is. Dat kan je doen dmv regexen, maar dat laat ik aan google over om je daar meer info over te geven.
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
 
Tom C

Tom C

30/05/2008 00:10:00
Quote Anchor link
Bedankt!

Ik ga het morgen even allemaal regelen, want nu ga ik slapen en bovendien is m'n servertje uitgevallen xD..

Nogmaals bedankt!

Gr. Tom
 
Tom C

Tom C

30/05/2008 12:26:00
Quote Anchor link
Okee..

Ik heb nu even je code neergezet. Als ik nu mijn website open vanaf m'n hardeschijf, dan wordt de pagina normaal weergegeven zonder echo. Dat is dus goed.

Echter,
Als ik hem upload, en ik bekijk hem op internet, krijg ik weer een error

hier mijn code nogmaals (die ik nu met jouw hulp heb aangepast):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
$voornaam
= mysql_real_escape_string($_POST['voornaam']);
$tussenvoegsel = mysql_real_escape_string($_POST['tussenvoegsel']);
$achternaam = mysql_real_escape_string($_POST['achternaam']);
$adres = mysql_real_escape_string($_POST['adres']);
$nummer = mysql_real_escape_string($_POST['nummer']);
$postcode = mysql_real_escape_string($_POST['postcode']);
$woonplaats = mysql_real_escape_string($_POST['woonplaats']);
$telnr = mysql_real_escape_string($_POST['telnr']);
$mobiel = mysql_real_escape_string($_POST['mobiel']);
$email = mysql_real_escape_string($_POST['email']);
?>



<?php
    if($sServer['REQUEST_METHOD'] == 'POST' && (empty($voornaam) || empty($achternaam) || empty($adres) || empty($nummer) || empty($postcode) || empty($woonplaats) || empty($telnr))) {
    U heeft een benodigd veld niet ingevuld! De velden met een * zijn verplicht.

else
{
    $query = "INSERT INTO aanmeldingen (voornaam, tussenvoegsel, achternaam, adres, nummer, postcode, woonplaats, telnr, mobiel, email)
VALUES ('$voornaam','$tussenvoegsel','$achternaam','$adres','$nummer','$postcode','$woonplaats','$telnr', '$mobiel', '$email')"
;
mysql_query($query) or die (mysql_error());
echo "Je aanmelding is verzonden!";
}

?>
 
Terence Hersbach

Terence Hersbach

30/05/2008 12:48:00
Quote Anchor link
$sServer moet $_SERVER zijn..
verder moet je nog wel een echo gebruiken als je een tekst wilt weergeven, je kan niet de tekst netzoals html neerzetten. dus
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo 'U heeft een benodigd veld niet ingevuld! De velden met een * zijn verplicht.';
?>
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
 
Tom C

Tom C

30/05/2008 12:56:00
Quote Anchor link
Is het zo goed? (ik heb nu niet de mogelijkheid om het te testen, zit op school)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
    if($_SERVER['REQUEST_METHOD'] == 'POST' && (empty($voornaam) || empty($achternaam) || empty($adres) || empty($nummer) || empty($postcode) || empty($woonplaats) || empty($telnr))) {
    echo 'U heeft een benodigd veld niet ingevuld! De velden met een * zijn verplicht.';

else
{
    $query = "INSERT INTO aanmeldingen (voornaam, tussenvoegsel, achternaam, adres, nummer, postcode, woonplaats, telnr, mobiel, email)
VALUES ('$voornaam','$tussenvoegsel','$achternaam','$adres','$nummer','$postcode','$woonplaats','$telnr', '$mobiel', '$email')"
;
mysql_query($query) or die (mysql_error());
echo "Je aanmelding is verzonden!";
}

?>
 
- SanThe -

- SanThe -

30/05/2008 13:05:00
Quote Anchor link
Er mist een } ter afsluiting van je if() en vóór de else.
Verder is het verstandig om $vars buiten de quotes te houden.
...... VALUES ('" . $voornaam . "', '" . $tussenvoegsel . "', .........
 
Tom C

Tom C

30/05/2008 13:23:00
Quote Anchor link
Is het dan zo goed?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    if    {
    (
$_SERVER['REQUEST_METHOD'] == 'POST' && (empty($voornaam) || empty($achternaam) || empty($adres) || empty($nummer) || empty($postcode) || empty($woonplaats) || empty($telnr)))
        echo 'U heeft een benodigd veld niet ingevuld! De velden met een * zijn verplicht.';
    }


else
{
    $query = "INSERT INTO aanmeldingen (voornaam, tussenvoegsel, achternaam, adres, nummer, postcode, woonplaats, telnr, mobiel, email)
VALUES ($voornaam, $tussenvoegsel, $achternaam, $adres, $nummer, $postcode, $woonplaats, $telnr, $mobiel, $email)"
;
mysql_query($query) or die (mysql_error());
echo "Je aanmelding is verzonden!";
}

?>


Als het nu weer niet goed is, dan sorry, maar plaatst dan aub even de volledige code, dan ben ik jullie niet zo lang tot last.
 
Tom C

Tom C

30/05/2008 13:45:00
Quote Anchor link
Ik heb m nu via online FTP geüpload. Nu werkt de pagina wel, maar krijg ik onderaan de volgende error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , , , , , , , , )' at line 2

Wat is dit?
 
Jacco Engel

Jacco Engel

30/05/2008 13:49:00
Quote Anchor link
$voornaam, $tussenvoegsel, $achternaam, $adres, $nummer, $postcode, $woonplaats, $telnr, $mobiel, $email

Die zijn allemaal leeg, je check klopt geen ruk van
 
- SanThe -

- SanThe -

30/05/2008 14:00:00
Quote Anchor link
@Tom: Niet Bumpen.
Bumpen::
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de Afbeelding knop om je tekst aan te passen.

SanThe.
 
Tom C

Tom C

30/05/2008 14:50:00
Quote Anchor link
Sorry voor het bumpen..

Verder:
Kan iemand mij dan alstublieft vertellen wáárom dit niet werkt? Ik stel hier allemaal vragen, ik zeg ook nog dat die velden verplichtingen moeten zijn, dan krijg ik vervolgens uitleg, voer ik dat in, en dan krijg ik vervolgens te horen dat er geen 'ruk' van klopt..

Vertel dan even hoe het wél moet, zo'n check of een verplicht is ingevuld..

Bvd,
Tom
 
- SanThe -

- SanThe -

30/05/2008 14:59:00
Quote Anchor link
Hoe groot is je script nu? Als het geen honderden regels zijn kun je misschien posten.
 
Tom C

Tom C

30/05/2008 15:08:00
Quote Anchor link
lijkt me logisch, sorry!

Hier is de volledige PHP code nu (ik heb nog een veld toegevoegd aan het formulier)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
$sServer
= 'localhost';
$sUser = 'Tom';
$sPass = '*******';
$database = 'carolus';
$rConnectie = mysql_connect( $sServer, $sUser, $sPass ); // r van resource
$rConnectie = mysql_select_db( $database );
if( $rConnectie )
{

    // Verder gaan met de code
}
else
{
    echo 'An error has occurred: ' . mysql_error();
}

?>


<?php
$voornaam
= mysql_real_escape_string($_POST['voornaam']);
$tussenvoegsel = mysql_real_escape_string($_POST['tussenvoegsel']);
$achternaam = mysql_real_escape_string($_POST['achternaam']);
$adres = mysql_real_escape_string($_POST['adres']);
$nummer = mysql_real_escape_string($_POST['nummer']);
$postcode = mysql_real_escape_string($_POST['postcode']);
$woonplaats = mysql_real_escape_string($_POST['woonplaats']);
$telnr = mysql_real_escape_string($_POST['telnr']);
$mobiel = mysql_real_escape_string($_POST['mobiel']);
$email = mysql_real_escape_string($_POST['email']);
$jaarafstu = mysql_real_escape_string($_POST['jaarafstu']);
?>



<?php
    if    ($_SERVER['REQUEST_METHOD'] == 'POST' && (empty($voornaam) || empty($achternaam) || empty($adres) || empty($nummer) || empty($postcode) || empty($woonplaats) || empty($telnr) || empty($jaarafstu))){
        echo 'U heeft een benodigd veld niet ingevuld! De velden met een * zijn verplicht.';
    }

else
{
    $query = "INSERT INTO aanmeldingen (voornaam, tussenvoegsel, achternaam, adres, nummer, postcode, woonplaats, telnr, mobiel, email, jaarafstu)
VALUES ($voornaam, $tussenvoegsel, $achternaam, $adres, $nummer, $postcode, $woonplaats, $telnr, $mobiel, $email, $jaarafstu)"
;
mysql_query($query) or die (mysql_error());
echo "Je aanmelding is verzonden!";
}

?>


Dit is dus de volledige PHP-code. Ik zou echt heel blij zijn als iemand dit in z'n geheel recht kan zetten. Want er worden steeds hints gegeven, maar zelfs die verknal ik. Dus plz..

Bvd,
Tom
 
- SanThe -

- SanThe -

30/05/2008 15:23:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

$sServer = 'localhost';
$sUser = 'Tom';
$sPass = '*******';
$database = 'carolus';
$rConnectie = mysql_connect( $sServer, $sUser, $sPass ); // r van resource
$rConnectie = mysql_select_db( $database );
if(!$rConnectie)
{

    echo 'An error has occurred: ' . mysql_error();
}

if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    $voornaam = mysql_real_escape_string($_POST['voornaam']);
    $tussenvoegsel = mysql_real_escape_string($_POST['tussenvoegsel']);
    $achternaam = mysql_real_escape_string($_POST['achternaam']);
    $adres = mysql_real_escape_string($_POST['adres']);
    $nummer = mysql_real_escape_string($_POST['nummer']);
    $postcode = mysql_real_escape_string($_POST['postcode']);
    $woonplaats = mysql_real_escape_string($_POST['woonplaats']);
    $telnr = mysql_real_escape_string($_POST['telnr']);
    $mobiel = mysql_real_escape_string($_POST['mobiel']);
    $email = mysql_real_escape_string($_POST['email']);
    $jaarafstu = mysql_real_escape_string($_POST['jaarafstu']);
    if(empty($voornaam) || empty($achternaam) || empty($adres) || empty($nummer) || empty($postcode) || empty($woonplaats) || empty($telnr) || empty($jaarafstu))
    {

        echo 'U heeft een benodigd veld niet ingevuld! De velden met een * zijn verplicht.';
    }

    else
    {
        $query = "INSERT INTO aanmeldingen
        (
        voornaam,
        tussenvoegsel,
        achternaam,
        adres,
        nummer,
        postcode,
        woonplaats,
        telnr,
        mobiel,
        email,
        jaarafstu
        ) VALUES (
        '"
. $voornaam . "',
        '"
. $tussenvoegsel . "',
        '"
. $achternaam . "',
        '"
. $adres . "',
        '"
. $nummer . "',
        '"
. $postcode . "',
        '"
. $woonplaats . "',
        '"
. $telnr . "',
        '"
. $mobiel . "',
        '"
. $email . "',
        '"
. $jaarafstu . "'
        )"
;
        mysql_query($query) or die (mysql_error());
        if(mysql_affected_rows() == 1)
        {

            echo "Je aanmelding is verzonden!";
        }
    }
}

?>
 
Tom C

Tom C

30/05/2008 15:29:00
Quote Anchor link
Heel erg bedankt!
Het werkt fantastisch!
Precies wat ik nodig had.

Nogmaals bedankt ;-)

Mvg,
Tom
Gewijzigd op 01/01/1970 01:00:00 door Tom C
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.