[PHP] error bij parsen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi

Ik ben al een tijdje bezig met PHP maar ik heb nu een fout en daar kom ik echt niet uit.

Ik heb een tabel LINKS met de volgende velden:
id (int11)
Naamsite (varchar100)
Link (varchar100)
Soort (varchar20)
Datum (varchar16)

Wat ik wil is een pagina waar links op toevoegd kunnen worden. De gegevens naamsite, link en soort moeten ingevuld worden.

Dit is de code:

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
<? 
$mysql_user = "****"
$mysql_pass = "****"
$mysql_host = "localhost"; 
$mysql_dbn = "****"; 

if (!@mysql_select_db($mysql_dbn, @mysql_connect($mysql_host, $mysql_user, $mysql_pass)))  
{  
     echo "database connectie mislukt!";  
     exit();  
}  

if ($_POST["submit"] && $_POST["naamsite"] && $_POST["link"] && $_POST["soort"])  
{  
     $datum = date("d.m.Y H:i");  

     $sql = "INSERT INTO links SET id = '', naamsite = '$_POST[naamsite]', link = '$_POST[link]', soort = '$_POST[soort]', 

datum = '$datum'";  
     $res = mysql_query($sql);  

     if ($res)  
     {  
        echo "Bericht toegevoegd.<p>";  
        echo "Ga naar de <a href=\"links.php\">links</a>.";  
      }  
      else  
      {  
         echo "Bericht NIET toegevoegd. Er is iets misgegaan met het invoeren in de database.";  
      }  
}  
else  
{  
     if ($_POST["submit"])  
         echo "Enkele velden vergeten!";  
       
     echo "<form method=\"POST\" action=\"$PHP_SELF\">";  
     echo "Naam:<br>";  
     echo "<input type=\"text\" name=\"naamsite\" value=\"$_POST["naamsite"]\"><br>";  
     echo "Link:<br>";  
     echo "<input type=\"text\" name=\"link\" value=\"$_POST["link"]\"><br>";  
     echo "Soort:<br>";  
     echo "<input type=\"text\" name=\"soort\" value=\"$_POST["soort"]\"><br>";   
     echo "<input type=\"submit\" name=\"submit\" value=\"Bericht plaatsen!\">";  
     echo "</form>";  
}  
?>


Nu krijg ik echter de volgende melding bij het openen van het php bestand:

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /mnt/extra/users/s122793/www/addlink.php on line 38

Ik ben al een tijdje aan het zoeken maar ik kan de fout niet vinden... Iemand?

[ Voor 18% gewijzigd door Verwijderd op 04-02-2004 16:09 ]


Acties:
  • 0 Henk 'm!

  • MissingDog
  • Registratie: Augustus 2002
  • Niet online
regels 2, 3 en 17 missen een ';' aan 't einde...probeer eens :)

Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
Even goede quotes gebruiken :) Parse error is een syntax fout, meestal een vergeten komma of iets in die trant :)

Bijvoorbeeld zo:
PHP:
1
     print '<form method="POST" action="'. $PHP_SELF .'">';

[ Voor 39% gewijzigd door supakeen op 04-02-2004 16:09 ]


Acties:
  • 0 Henk 'm!

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

drm

f0pc0dert

Kijk eens naar http://www.php.net/printf en http://www.php.net/sprintf voor minder foutgevoelige code.

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


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
mmm dit is het tot nu toe:

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
<? 
$mysql_user = "*****"; 
$mysql_pass = "*****"; 
$mysql_host = "*****"; 
$mysql_dbn = "s122793"; 

if (!@mysql_select_db($mysql_dbn, @mysql_connect($mysql_host, $mysql_user, $mysql_pass)))  
{  
     echo "database connectie mislukt!";  
     exit();  
}  

if ($_POST["submit"] && $_POST["naamsite"] && $_POST["link"] && $_POST["soort"])  
{  
     $datum = date("d.m.Y H:i");  

     $sql = "INSERT INTO links SET id = '', naamsite = '$_POST[naamsite]', link = '$_POST[link]', soort = '$_POST[soort]',; 

datum = '$datum'";  
     $res = mysql_query($sql);  

     if ($res)  
     {  
        echo "Bericht toegevoegd.<p>";  
        echo "Ga naar de <a href=\"links.php\">links</a>.";  
      }  
      else  
      {  
         echo "Bericht NIET toegevoegd. Er is iets misgegaan met het invoeren in de database.";  
      }  
}  
else  
{  
     if ($_POST["submit"])  
         echo "Enkele velden vergeten!";  
       
     print '<form method="POST" action="'.$PHP_SELF .'">';  
     print 'Naam:',"
     print '<input type="text" name="naamsite" value="$_POST["naamsite"]'"><br>';  
     print 'Link:',"
     print '<input type="text" name="link" value="$_POST["link"]'"><br>';  
     print 'Soort:',"
     print '<input type="text" name="soort" value="$_POST["soort"]'"><br>';   
     print '<input type="submit" name="submit" value="Bericht plaatsen!'">';  
     print '</form>"; 
}  
?>


Ik heb gekeken naar de info over de print function, maar ik ben er dus nog niet helemaal uit :S

[ Voor 199% gewijzigd door Verwijderd op 04-02-2004 16:37 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Een paar kleine dingetjes.
PHP:
1
$sql = "INSERT INTO links SET id = '', naamsite = '$_POST[naamsite]',....

naar
PHP:
1
$sql = "INSERT INTO links SET id = '', naamsite = '".$_POST["naamsite"]."',....

En kijk verder onderaan eens naar al je "print" 's
value="$_POST["naamsite"]'"
value="$_POST["link"]'"
etc...missen allemaal een '

[ Voor 27% gewijzigd door Verwijderd op 04-02-2004 16:48 . Reden: [php] ipv [code] ]


Acties:
  • 0 Henk 'm!

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 21:35

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

drm had het over printf, ! print :)

Als ik mijn c-lessen nog goed beheers, meen ik dat printf zo werkte:
code:
1
printf("string %c melp %d woei %c", $_POST['naamsite'], $eengetal, $nogstring


%c is voor een char/string, $d voor een double etc.

http://nl.php.net/printf voor meer info :)

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


Acties:
  • 0 Henk 'm!

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

drm

f0pc0dert

Prammenhanger:
%c is voor een char/string, $d voor een double etc.

http://nl.php.net/printf voor meer info :)
Het is een klein beetje anders, maar dat is het wel ongeveer, ja. %s is voor string, %d voor decimaal (meestal gewoon integers), %f voor floats en dan kun je ook nog eens formatting toevoegen (minimale/maximale breedte, aantal decimalen, etc).

Wellicht is het ook te overwegen error_reporting even op E_ALL te zetten.

Verder worden variabelen binnen enkel gequote strings niet geparsed.

Tot slot kun je binnen dubbel gequote strings een aparte syntax gebruiken voor 'complexere' variabelen:
PHP:
1
2
3
4
5
$array = array ( 'Some var', 'Some other var', 'Some more' );

printf ( '$array[ 0 ] = %s<br />', $array[ 0 ] );
print ( "\$array[ 1 ] = {$array[ 1 ]}<br />" );
echo '$array[ 2 ]  = ', $array[ 2 ], '<br />' );
Mijn voorkeur gaat bijna altijd uit naar printf. Het is prima leesbaar en je maakt veel minder snel fouten. En als je fouten maakt is het vaak veel sneller duidelijker wat je precies fout doet.

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

Pagina: 1