Update met verkeerde haak

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Mark Boom

Mark Boom

17/08/2010 09:06:06
Quote Anchor link
Ik maak de volgende update, maar ik krijg de foutmelding dat er in regel 6 een haak verkeerd staat: syntax error, unexpected '{'

Maar volgens mij staat die haak er wel terecht.

In mijn database heb ik de velden

naamid
optie1
optie2

Wat doe ik fout?

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
<?php
include ("db_connect.inc.php");
 
if (   $_SERVER['REQUEST_METHOD'] == 'POST'
    && isset($_POST['naamid']) && ctype_digit($_POST['naamid'])
    && (
isset($_POST['wel1']) || isset($_POST['wel2']))
 {

 
if (isset($_POST['wel1']) && isset($_POST['wel2']))
{

$naam = mysql_real_escape_string($_POST['naam']);
$adres = mysql_real_escape_string($_POST['adres']);
$naamid = mysql_real_escape_string($_POST['naamid']);
$sql = "UPDATE gegevens SET naam = '$naam', adres='$adres' WHERE id = '$naamid'";
}

 
 
if (!$result = mysql_query($sql))
{

        echo mysql_error().'<br />'.$sql;
}

else
{
}
}

else
{
   echo 'Gegevens zijn niet verwerkt';
}

?>


<form action="" method="post">
<input type="hidden" name="naamid" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_GET["naamid"];?>
">
<input type="text" name="wel1" />

<input type="text" name="wel2" />

<input type="Submit" value="Gegevens bijwerken">
<input type="Button" value="Terug" onclick="javascript:history.go(-1);">
</form>
 
PHP hulp

PHP hulp

28/12/2024 11:33:03
 
Task b

task b

17/08/2010 09:15:51
Quote Anchor link
je hebt hier er 1 teveel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
else
{
}
}

?>
 

17/08/2010 09:19:59
Quote Anchor link
Spring netjes in, gebruik commentaar, haal variabelen buiten quotes, gebruik hier op het forum [code] en [/code] tags, let op met het gebruik van includes, alle geinclude bestanden worden als het waren tot één bestand samengevoegd.
 
Mark Boom

Mark Boom

17/08/2010 10:45:13
Quote Anchor link
Als ik die ene haak weghaal, mis ik een sluitingshaak en krijg ik een foutmelding. Volgens mij hoort hij vlak voor het einde van PHP-sluiting, maar dan krijg ik weer dezelfde foutmelding.

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
<?php
include ("db_connect.inc.php");
 //Ik heb drie velden aangemaakt: naamid, wel1 en wel2
if (   $_SERVER['REQUEST_METHOD'] == 'POST'
    && isset($_POST['naamid']) && ctype_digit($_POST['naamid'])
    && (
isset($_POST['wel1']) || isset($_POST['wel2']))
    
//Als ik in wel1 of wel2 iets invoeg, wordt de database geupdatet
//Ik gebruik mysql_real_escape_string om te voorkomen dat er een delete-code in
//het tekstvak getypt kan worden.

     {
     if (isset($_POST['wel1']) && isset($_POST['wel2']))
             {

             $naam = mysql_real_escape_string($_POST['naam']);
             $adres = mysql_real_escape_string($_POST['adres']);
             $naamid = mysql_real_escape_string($_POST['naamid']);
             $sql = "UPDATE gegevens SET naam = '$naam', adres='$adres' WHERE id  = '$naamid'";
             }

 
 //Als de database niet geraadpleegd kan worden, krijg ik een foutmelding.
             if (!$result = mysql_query($sql))
             {

             echo mysql_error().'<br />'.$sql;
             }


//Als er geen foutmelding is, komen de gegevens op het scherm
else
{
}


//Als de gegevens niet gevonden kunnen worden, krijg ik de volgende foutmelding
else
{
   echo 'Gegevens zijn niet verwerkt';
}

 
?>

 //Hier begint html; het naamide hoort er wel bij, maar komt niet op het scherm
<form action="" method="post">
    <input type="hidden" name="naamid" value="<?php echo $_GET["naamid"];?>">
    
//De tekst die getypt wordt, komt in deze vakken wel1 en wel2
<input type="text" name="wel1" />
 

    <input type="text" name="wel2" />
 //Er komt een knop op het scherm, waarmee ik de gegevens kan bijwerken.
    <input type="Submit" value="Gegevens bijwerken">
    <input type="Button" value="Terug" onclick="javascript:history.go(-1);">
</form>
 
 

17/08/2010 10:48:30
Quote Anchor link
Tel de aantal regels van die include.
Tel dat op bij zes.
Dan weet je waar ongeveer de fout zit.
 
- SanThe -

- SanThe -

17/08/2010 11:04:55
Quote Anchor link
Je hebt nu twee keer een 'else' achter elkaar. Dat kan niet. Op regel 30 moet een } staan.
 
Hipska BE

Hipska BE

17/08/2010 11:33:43
Quote Anchor link
en bij je eerste if mis je een ) dat is altijd waar ik op let als hij zegt een unexpexted { want dat impliceert namelijk dat hij nog niet een { verwacht en wel iets anders. Een ) dus.
 
Mark Boom

Mark Boom

17/08/2010 11:35:59
Quote Anchor link
Mijn include telt 13 regels.
Er is een foutmelding op regel op regel 11 (syntax haakje).
Als ik in NetBeans op regel 24 kijk, kom ik uit op de haak sluiten achter

echo mysql_error().'<br />'.$sql;

Maar NetBeans zelf geeft een rood golfje onder het tweede haakje sluiten vlak boven de laatste else.
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
<?php
include ("db_connect.inc.php");
 //Ik heb drie velden aangemaakt: naamid, wel1 en wel2
if (   $_SERVER['REQUEST_METHOD'] == 'POST'
    && isset($_POST['naamid']) && ctype_digit($_POST['naamid'])
    && (
isset($_POST['wel1']) || isset($_POST['wel2'])))
    
//Als ik in wel1 of wel2 iets invoeg, wordt de database geupdatet
//Ik gebruik mysql_real_escape_string om te voorkomen dat er een delete-code in
//het tekstvak getypt kan worden.

{
     if (isset($_POST['wel1']) && isset($_POST['wel2']))
             {

             $naam = mysql_real_escape_string($_POST['naam']);
             $adres = mysql_real_escape_string($_POST['adres']);
             $naamid = mysql_real_escape_string($_POST['naamid']);
             $sql = "UPDATE gegevens SET naam = '$naam', adres='$adres' WHERE id  = '$naamid'";
}

 
 //Als de database niet geraadpleegd kan worden, krijg ik een foutmelding.
             if (!$result = mysql_query($sql))
{

             echo mysql_error().'<br />'.$sql;
}


//Als er geen foutmelding is, komen de gegevens op het scherm



//Als de gegevens niet gevonden kunnen worden, krijg ik de volgende foutmelding

else
{
}

   echo 'Gegevens zijn niet verwerkt';


?>

 //Hier begint html; het naamide hoort er wel bij, maar komt niet op het scherm
<form action="" method="post">
    <input type="hidden" name="naamid" value="<?php echo $_GET["naamid"];?>">
    
//De tekst die getypt wordt, komt in deze vakken wel1 en wel2
<input type="text" name="wel1" />
 

    <input type="text" name="wel2" />
 //Er komt een knop op het scherm, waarmee ik de gegevens kan bijwerken.
    <input type="Submit" value="Gegevens bijwerken">
    <input type="Button" value="Terug" onclick="javascript:history.go(-1);">
</form>
Gewijzigd op 17/08/2010 14:41:09 door Mark Boom
 
Hipska BE

Hipska BE

17/08/2010 13:52:03
Quote Anchor link
Na regel 28 zouden er doordat er een { staat nog 2 } moeten volgen en ik zie er maar 1 dus daar zit je fout!

In je script moeten altijd evenveel ( als ) staan (idem voor { } en [ ] )
 
Mark Boom

Mark Boom

17/08/2010 14:36:05
Quote Anchor link
Ik heb er een haak bij gezet, maar de foutmelding bleef.
Daarom heb ik de eerste else weggehaald, want die had volgens mij toch geen functie.
Daarna heb ik er door de foutmelding Netbeans nog een derde haak achter regel 6 gezet.

Maar nu krijg ik een foutmelding in de laatste </form>. Volgens mij zit hier echt geen fout. Wat doe ik verkeerd?

P.S.: ik heb in mijn vorige schrijfblok de oude code vervangen door de nieuwe.
 
Hipska BE

Hipska BE

17/08/2010 14:44:49
Quote Anchor link
Ik zou eerst eens een beetje meer met de basis beginnen, een korter script ofzo. Want door lukraak linkse of rechtse haakjes toe te voegen op goed geluk, daar leer je het ook niet mee en bewijst dat je eigenlijk geen flauw idee hebt waar je mee bezig bent.

Probeer eerst een formulier te tonen en na invulling te controlleren of de velden juist ingevuld zijn. Dat DB gedeelte kun je eerst even achterwege laten.
 
Obelix Idefix

Obelix Idefix

17/08/2010 14:45:59
Quote Anchor link
Karl Karl zei het al: Spring netjes in
hipska-be zei het al: In je script moeten altijd evenveel ( als ) staan (idem voor { } en [ ] )

Laat Netbeans even los en gebruik bovenstaande twee tips.
 
Crude Oil

Crude Oil

17/08/2010 14:50:11
Quote Anchor link
Ik heb even getallen neergezet bij elk haakje, op de plaats waar haakje 1 zich opent staat een 1 en waar die zich afsluit ook, snappie?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if ( 1   $_SERVER['REQUEST_METHOD'] == 'POST'
    && isset( 2 $_POST['naamid'] )2 && ctype_digit( 3 $_POST['naamid']) 3
    && (4 isset( 5 $_POST['wel1'])5  /* HIER WORDT 4 NIET AFGESLOTEN! */ || isset( 6 $_POST['wel2']) 6 )1


Dus er moet nog een haakje bij lijkt mij
Gewijzigd op 17/08/2010 15:21:08 door Crude Oil
 
Mark Boom

Mark Boom

17/08/2010 16:59:44
Quote Anchor link
Ik laat Netbeans los, en tel de haken en accolades aandachtig. Olie, je hebt gelijk. Ik sluit 4 nu op de goede manier af. Verder kan ik de dubbele else weer terugzetten, want de haken kloppen nu allemaal. Daar kan het probleem niet meer zitten.

Ik spring netjes in, en het bestand komt nu zonder fouten op het scherm.

Ik zet er een foutmelder op.

Ik krijg de volgende fouten:
Undefined index: naam
Undefined index: adres

Unknown column 'id' in 'where clause'
UPDATE gegevens SET naam = '', adres='' WHERE id = ''

Het probleem moet dus in de volgende code zitten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$naam = mysql_real_escape_string($_POST['naam']);
             $adres = mysql_real_escape_string($_POST['adres']);
             $naamid = mysql_real_escape_string($_POST['naamid']);
             $sql = "UPDATE gegevens SET naam = '$naam', adres='$adres' WHERE naamid  = '$naamid'";


Als ik in mijn database de twee velden wel1 en wel2 heb, noem ik deze nu $naam en $adres, zodat ik daarna een update kan maken in naam en adres. Moet ik soms naam en adres bovenaan de code (nog een keer) declareren?

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
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
?>


<?php
include ("db_connect.inc.php");
 //Ik heb drie velden aangemaakt: naamid, wel1 en wel2
if (   $_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_POST['naamid'])
&&
ctype_digit($_POST['naamid'])
&& (
isset($_POST['wel1'])) || isset($_POST['wel2']))
    
//Als ik in wel1 of wel2 iets invoeg, wordt de database geupdatet
//Ik gebruik mysql_real_escape_string om te voorkomen dat er een delete-code in
//het tekstvak getypt kan worden.


{
     if (isset($_POST['wel1']) && isset($_POST['wel2']))
    {

             $naam = mysql_real_escape_string($_POST['naam']);
             $adres = mysql_real_escape_string($_POST['adres']);
             $naamid = mysql_real_escape_string($_POST['naamid']);
             $sql = "UPDATE gegevens SET naam = '$naam', adres='$adres' WHERE naamid  = '$naamid'";
    }

 
 //Als de database niet geraadpleegd kan worden, krijg ik een foutmelding.
          if (!$result = mysql_query($sql))
{

        echo mysql_error().'<br />'.$sql;
}


else
{
}


}

else

{
   echo 'Gegevens zijn niet verwerkt';
}

?>


 
<form action="" method="post">
    <input type="hidden" name="naamid" value="<?php echo $_GET["naamid"];?>">
    

<input type="text" name="wel1" />
 

    <input type="text" name="wel2" />
 
    <input type="Submit" value="Gegevens bijwerken">
    <input type="Button" value="Terug" onclick="javascript:history.go(-1);">
</form>
 
Hipska BE

Hipska BE

17/08/2010 17:27:06
Quote Anchor link
Undefined index: naam
Undefined index: adres

Je controleert dan ook niet of die bestaan. Doe aan formafhandeling (formulier controle)
 
Mark Boom

Mark Boom

17/08/2010 18:15:56
Quote Anchor link
Na het bekijken van verschillende tutorials kom ik op het volgende. Zit ik zo in de goede richting?

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
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<?php
$select
= "
    SELECT
        wel1
        , wel2
    
    FROM
       gegevens"
;

$result = mysql_query($select);


while($rows = mysql_fetch_assoc($result)) {    
echo '<br><input type="hidden" name="naamid[]" value="'.$rows['naamid'].'">';
echo '<input type="text" name="wel1[]" value="'.$rows['wel1'].'" size="25"> ';
echo '<input type="text" name="wel2[]" value="'.$rows['wel2'].'" size="25"> ';

}
?>

<hr>
<input type="Submit" value="Gegevens bijwerken">
</form>


Ik krijg nu de foutmelding: syntax error, unexpected T_STRING
Gewijzigd op 17/08/2010 19:11:47 door Mark Boom
 
SilverWolf NL

SilverWolf NL

17/08/2010 18:22:33
Quote Anchor link
Kijk eens naar de kleurtjes...
 
Mark Boom

Mark Boom

17/08/2010 19:06:29
Quote Anchor link
De rode kleur van de SELECT loopt door.

Ik denk dat ik de afsluitende aanhalingstekens sluiten vergeten ben.

Ik ga het uitproberen.

Ik krijg drie dezelfde foutmeldingen: Undefined index: naamid in regel 63.

De gegevens uit de database verschijnen op het scherm! Hoera!

Maar ik kan ze niet updaten. Als ik op de knop 'gegevens bijwerken' klik, krijg ik er de volgende foutmeldingen bij.

Undefined index: naam in regel 21
Undefined index: adres in regel 22

mysql_real_escape_string() expects parameter 1 to be string, array given in regel 23

Ik roep dus een waarde uit een aray aan die niet gedeclareerd is

Ik vraag me af hoe ik het dan wel moet doen. Moet dat zo? Waar zet ik dat?


echo $array['naam'];
echo $array['adres'];
echo $_GET['naam'];
echo $_GET['adres'];

Maar dat lukt niet, op welke plaats ik het ook zet.

Hetzelfde heb ik gedaan met
$naamid = array();
$naam= array();
$adres = array();

Maar ook dat lukt niet.
Ik vermoed nu dat mijn id niet goed gedeclareerd is. Dat ik in plaats an naamid ergens allen id moet typen, maar ook dat lukt niet.
Klopt dat? Of sla ik nu een verkeerde weg in.

Ik heb flink gegoogeld op mysql_real_escape_string, maar ik kan deze foutaanduiding niet vinden. kan iemand me met deze foutmelding helpen?
Gewijzigd op 18/08/2010 13:32:48 door Mark Boom
 
Hipska BE

Hipska BE

18/08/2010 15:07:05
Quote Anchor link
Hipska BE op 17/08/2010 17:27:06:
Undefined index: naam
Undefined index: adres

Je controleert dan ook niet of die bestaan. Doe aan formafhandeling (formulier controle)


Geldt nog steeds hoor!
 
Mark Boom

Mark Boom

18/08/2010 15:16:14
Quote Anchor link
Oke, ik heb de form afhandeling op internet gevonden op http://www.semeleer.nl/tutorials/tut_formgetpost.php.

Nu is de form action aanzienlijk korter geworden. Bovendien heb ik de namen van de velden nu ook in de php-code aangepast.

Maar het programma updatet niet.

Ik krijg de foutmelding: Undefined index: naamid in

Op een of ander manier weet ik nog steeds niet wat deze foutmelding inhoudt. Ook niet na het lezen van de tutorial.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
?>


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
<?php
include ("db_connect.inc.php");
 //Ik heb drie velden aangemaakt: naamid, wel1 en wel2
if (   $_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_POST['naamid'])
&&
ctype_digit($_POST['naamid'])
&& (
isset($_POST['wel1'])) || isset($_POST['wel2']))
    
//Als ik in wel1 of wel2 iets invoeg, wordt de database geupdatet
//Ik gebruik mysql_real_escape_string om te voorkomen dat er een delete-code in
//het tekstvak getypt kan worden.


{

     if (isset($_POST['wel1']) && isset($_POST['wel2']))
    {

             $wel1 = mysql_real_escape_string($_POST['wel1']);
             $wel2 = mysql_real_escape_string($_POST['wel2']);
             $naamid = mysql_real_escape_string($_POST['naamid']);
             $sql = "UPDATE gegevens SET wel1 = '$wel1', wel2='$wel2' WHERE naamid  = '$naamid'";
    }

 
 //Als de database niet geraadpleegd kan worden, krijg ik een foutmelding.
          if (!$result = mysql_query($sql))
{

        echo mysql_error().'<br />'.$sql;
}


else
{
}


}

else

{
   echo 'gegevens zijn niet verwerkt';
}

?>


<form action="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $_SERVER['PHP_SELF']; ?>
" method="post" enctype="multipart/form-data">
Naam : <input type="text" name="wel1" value="" size="50""><br>
Adres : <input type="text" name="wel2" value="" size="50""><br>
<input type="submit" name="submit" value="verstuur" />
</form>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Gewijzigd op 18/08/2010 17:40:18 door Mark Boom
 
Hipska BE

Hipska BE

23/08/2010 13:49:41
Quote Anchor link
Zoals de error zelf al aangeeft: $_POST['naamid'] bestaat niet. Logisch ook want ik zie niets in je <form> met als name "naamid", dus zal die ook niet meegestuurd worden.
 

Pagina: 1 2 3 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.