Avatar billede muddyw. Praktikant
30. september 2004 - 21:54 Der er 61 kommentarer og
2 løsninger

Parse error når jeg forsøger at lave et forum

Jeg er ved at lære  PHP og sidder med et IDG-hæfte og prøver at lave en lille gæstebog...men det virker ikke.
Jeg har oprettet en database og tabeller via PHPMyAdmin, men det virker ikke...jeg får fejlen:

Parse error: parse error, unexpected T_VARIABLE in g:\program files\apache group\apache\htdocs\gaestebog\opdater.php on line 8

Her er filen hvor man kan indtaste beskederne:
<html>
<title>Gæstebog</title>
<body bgcolor="#FFFFFF">

<form name="form1" method="get" action=
"opdater.php">

Læg venligst en besked:
<BR>
Navn:
<input type="text" name="navn">
<BR>
Email:
<input type="text" name="email">
<BR>
<textarea name="besked" rows="8"></textarea>
<input type="submit" name="submit" value="Indsend">

</form>

<HR>

Tak til de personer. som allerede har lagt en besked!

<HR>

<?php

$db = mysql_connect("localhost", "root");

mysql_select_db("gaestebog",$db);

$result=mysql_query("SELECT * FROM indlaeg", $db);

while ($myrow = mysql_fetch_row($result)){

?>

Navn: <? echo $myrow[1] ?>
<BR>
Email: <? echo $myrow[2] ?>
<BR>
Besked: <? echo $myrow[3] ?>
<BR>

<HR>

<?
}
?>


</BODY>
</HTML>

og her er koden til opdateringsfilen som skal hente fra formularen:

<?php

$db=mysql_connect("localhost", "root");

mysql_select_db("gaestebog",$db);

$sql = "INSERT INTO indlaeg (navn, email, besked)
VALUES ("$navn","$email","$besked")";

$results = mysql_query($sql);

mail("per@mail.dk", "Nyt inlæg i gæstebogen
fra ".$navn,$besked,"From: ".$email);

?>

<html>
<title>Opdater</title>
<body bgcolor="FFFFFF">

Tak for det. <a href="laes.php">Klik for at vende tilbage til gæstebogen.</a>

</body>
</html>

HJÆLP...hvad er der galt her???
Avatar billede bromer Nybegynder
30. september 2004 - 22:00 #1
$sql = "INSERT INTO indlaeg (navn, email, besked)
VALUES ($navn,$email,$besked)";
Avatar billede mcgoat Nybegynder
30. september 2004 - 22:07 #2
Jeg ville nok lave det sådan her:
Se om der virker:


<html>
<title>Gæstebog</title>
<body bgcolor="#FFFFFF">

<form name="form1" method="POST" action="opdater.php">

Læg venligst en besked:
<BR>
Navn:
<input type="text" name="navn">
<BR>
Email:
<input type="text" name="email">
<BR>
<textarea name="besked" rows="8"></textarea>
<input type="submit" name="submit" value="Indsend">

</form>

<HR>

Tak til de personer. som allerede har lagt en besked!

<HR>

<?php

$conn = mysql_pconnect('localhost','root','')
    or die("Can't Connect To Server: ".mysql_error());

$db = mysql_select_db('gaestebog')
    or die("Can't Connect To Database: ".mysql_error());

$result=mysql_query("SELECT * FROM indlaeg");

while ($myrow = mysql_fetch_array($result)){

?>

Navn: <? echo $myrow[1] ?>
<BR>
Email: <? echo $myrow[2] ?>
<BR>
Besked: <? echo $myrow[3] ?>
<BR>

<HR>

<?
}
?>


</BODY>
</HTML>

og her er koden til opdateringsfilen som skal hente fra formularen:

<?php

$navn = $_POST['navn'];
$email = $_POST['email'];
$besked = $_POST['besked'];

$conn = mysql_pconnect('localhost','root','')
    or die("Can't Connect To Server: ".mysql_error());

$db = mysql_select_db('gaestebog')
    or die("Can't Connect To Database: ".mysql_error());

$sql = "INSERT INTO indlaeg VALUES ('".$navn."',"'".$email."','".$besked"'";

$results = mysql_query($sql);

mail("per@mail.dk", "Nyt inlæg i gæstebogen
fra ".$navn,$besked,"From: ".$email);

?>

<html>
<title>Opdater</title>
<body bgcolor="FFFFFF">

Tak for det. <a href="laes.php">Klik for at vende tilbage til gæstebogen.</a>

</body>
</html>
Avatar billede muddyw. Praktikant
30. september 2004 - 22:09 #3
fjernede "" men nu får jeg denne fejl:
Notice: Undefined variable: navn in g:\program files\apache group\apache\htdocs\gaestebog\opdater.php on line 8

Notice: Undefined variable: email in g:\program files\apache group\apache\htdocs\gaestebog\opdater.php on line 8

Notice: Undefined variable: besked in g:\program files\apache group\apache\htdocs\gaestebog\opdater.php on line 8

Notice: Undefined variable: navn in g:\program files\apache group\apache\htdocs\gaestebog\opdater.php on line 13

Notice: Undefined variable: besked in g:\program files\apache group\apache\htdocs\gaestebog\opdater.php on line 13

Notice: Undefined variable: email in g:\program files\apache group\apache\htdocs\gaestebog\opdater.php on line 13
Tak for det. Klik for at vende tilbage til gæstebogen.
Avatar billede mcgoat Nybegynder
30. september 2004 - 22:10 #4
Hvis du vil så skriv det lige... men så kan jeg nok godt lave et lille eksempel det sikkert er bedre en IDG's, og også med kommentarer.. hvis du vil have det?
Avatar billede mcgoat Nybegynder
30. september 2004 - 22:11 #5
$sql = "INSERT INTO indlaeg VALUES ('".$navn."',"'".$email."','".$besked"')";

der manglede lige en ) ... men underligt at den ikke lige kan finde ud af de variabler
Avatar billede mcgoat Nybegynder
30. september 2004 - 22:12 #6
fjernede "" hvor?
Avatar billede bromer Nybegynder
30. september 2004 - 22:12 #7
$sql = "INSERT INTO indlaeg (navn, email, besked)
VALUES ($_GET['navn'],$_GET['email'],$_GET['besked'])";
Avatar billede mcgoat Nybegynder
30. september 2004 - 22:13 #8
Ahh, til hans indlæg? ikke mit... hehe... prøv at se om mit virker.. det som IDG har lavet ser ud til at være noget underligt noget... Man bruges f.eks ikke method="get" når man har en form.. Der bruger man method="POST"
Avatar billede bromer Nybegynder
30. september 2004 - 22:13 #9
mcqoat: Nej det er ikke.. de er jo sendt over en form.
Avatar billede muddyw. Praktikant
30. september 2004 - 22:13 #10
jamen det må du da meget gerne, men jeg vil jo gerne lære noget og det irriterer mig at jeg ikke ved hvad der er galt...eftersom jeg har fulgt eksemplet straight....
Avatar billede bromer Nybegynder
30. september 2004 - 22:14 #11
mcqoat: Man kan da godt bruge GET i en FORM, de har jo forskellige fordele. Men her vil jeg give dig ret i at man burde bruge POST.
Avatar billede bromer Nybegynder
30. september 2004 - 22:15 #12
muddyw: se hvad jeg skrev anden gang. Det burde virke!
Avatar billede muddyw. Praktikant
30. september 2004 - 22:15 #13
bromer >> du skrev: $sql = "INSERT INTO indlaeg (navn, email, besked)
VALUES ($navn,$email,$besked)";
altså uden ""    og så var det jeg fik en anden fejl :)
Avatar billede bromer Nybegynder
30. september 2004 - 22:16 #14
Yep.. og så postede jeg 22:12:45

$sql = "INSERT INTO indlaeg (navn, email, besked)
VALUES ($_GET['navn'],$_GET['email'],$_GET['besked'])";
Avatar billede muddyw. Praktikant
30. september 2004 - 22:16 #15
ok, prøver lige
Avatar billede muddyw. Praktikant
30. september 2004 - 22:19 #16
bromer >> giver denne fejl:
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in g:\program files\apache group\apache\htdocs\gaestebog\opdater.php on line 8
Avatar billede bromer Nybegynder
30. september 2004 - 22:20 #17
hvilken PHP version har du?
Avatar billede eagleeye Praktikant
30. september 2004 - 22:24 #18
Hvis du deler det over flere linjer skal der . i starten af den næste linje

$sql = "INSERT INTO indlaeg (navn, email, besked) "
."VALUES ($_GET['navn'],$_GET['email'],$_GET['besked'])";


men der skal vist også ping omkring i SQL sætningens value del:

$sql = "INSERT INTO indlaeg (navn, email, besked) "
."VALUES ('".$_GET['navn']."','".$_GET['email']."','".$_GET['besked']."')";
Avatar billede mcgoat Nybegynder
30. september 2004 - 22:25 #19
Er i gang med at lave en bedre til dig som du nok forstår mere af
Avatar billede muddyw. Praktikant
30. september 2004 - 22:26 #20
mcgoat >> dit script giver denne fejl:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in g:\program files\apache group\apache\htdocs\gaestebog\opdater.php on line 13

jeg kører PHP4
Avatar billede mcgoat Nybegynder
30. september 2004 - 22:34 #21
Her er 3 filer:
connect.php, index.php og opdater.php:

Prøv at lave dem (copy paste) og kør din index.php.

connect.php:
<?
// Denne fil bliver brugt til at forbinde til database serveren samt vælge databasen som skal bruges


// Her forbindes til localhost (din maskine) med "root" som brugernavn og "" (ingenting) som password
$conn = mysql_pconnect('localhost','root','')
    or die("Can't Connect To Server: ".mysql_error()); // Hvis der kommer fejl så bliver det skrevet

// Her vælges den database som skal bruges
$db = mysql_select_db('gaestebog')
    or die("Can't Connect To Database: ".mysql_error());  // Hvis der kommer fejl så bliver det skrevet
?>


index.php:
<html>
<head>
<title>Min Gæstebog</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form name="form1" action="opdater.php" method="post">
Navn: <input type="text" name="navn"><br><br>
email: <input type="text" name="email"><br><br>
Tekst: <textarea name="besked"></textarea><br><br>
<input type="submit" name="subm" value="Post Indlæg">
</form>
<br><br><br><hr><br>
Gamle Indlæg:
<br><br>

<?
require "connect.php"; // Her bliver filen connect.php inkluderet så der skabes forbindelse til databasen

$query = "SELECT * FROM indlaeg"; // Her vælges ALLE (*) indlæg i gæstebogen (Dette er en streng med en forespørgsel)

$result = mysql_query($query); // Send ovenstående forespørgsel til databasen

while($row = mysql_fetch_array($result)) // Hent de indlæg der nu skulle være
{
    echo "<br>";
    echo "Navn: ". $row['navn'];
    echo "<br>";
    echo "Email: ". $row['email'];
    echo "<br>";
    echo "Besked: ". row['besked'];
    echo "<br><hr>";
}
?>
</body>
</html>

og opdater.php:
<?php
require "connect.php"; // Her bliver filen connect.php inkluderet så der skabes forbindelse til databasen


// Da der bliver bruge method = "Post" så er disse variabler af typen POST og bruges på denne måde $_POST['navn']
// Der er 3 inputs på siden: name="navn", name="email" og name="besked"..
$navn = $_POST['navn'];
$email = $_POST['email'];
$besked = $_POST['besked'];

$sql = "INSERT INTO indlaeg VALUES ('".$navn."','".$email."','".$besked"')"; // Streng med forespørgsel

$results = mysql_query($sql); // Her bliver de variabler smidt ind i din database

mail("per@mail.dk", "Nyt inlæg i gæstebogen fra ".$navn,$besked,"From: ".$email); // Her får du sendt en mail(måske)
?>

<html>
<title>Opdater</title>
<body bgcolor="FFFFFF">

Tak for det. <a href="index.php">Klik for at vende tilbage til gæstebogen.</a>

</body>
</html>
Avatar billede muddyw. Praktikant
30. september 2004 - 22:40 #22
eagleeye >> det hjalp med ping omkring i SQL sætningens value del:

$sql = "INSERT INTO indlaeg (navn, email, besked) "
."VALUES ('".$_GET['navn']."','".$_GET['email']."','".$_GET['besked']."')";

nu opdateres gæstebogen, men jeg får denne besked:

Notice: Undefined variable: navn in g:\program files\apache group\apache\htdocs\gaestebog\opdater.php on line 13

Notice: Undefined variable: besked in g:\program files\apache group\apache\htdocs\gaestebog\opdater.php on line 13

Notice: Undefined variable: email in g:\program files\apache group\apache\htdocs\gaestebog\opdater.php on line 13
Tak for det. Klik for at vende tilbage til gæstebogen.
Avatar billede muddyw. Praktikant
30. september 2004 - 22:40 #23
mcgoat >> prøver lige din ting der :)
Avatar billede mcgoat Nybegynder
30. september 2004 - 22:41 #24
mail("per@mail.dk", "Nyt inlæg i gæstebogen fra ".$_GET['navn'],$_GET['besked'],"From: ".$_GET['email']);
Avatar billede mcgoat Nybegynder
30. september 2004 - 22:42 #25
<< var hvis du ville rette den fejl... men prøv mit eksempel og se om det virker.. har ikke testet det.. har bare skrevet det... hehe
Avatar billede muddyw. Praktikant
30. september 2004 - 22:49 #26
jeg skal først oprette dem i phphmyadmin, ik...før det virker?
Avatar billede mcgoat Nybegynder
30. september 2004 - 23:07 #27
Nej, du har vel din database der ikke? den der hedder gaestebog?

Filerne skal bare ligge i den mappe hvor du havde de andre liggende og så køre index.php i din internet explorer...
Avatar billede mcgoat Nybegynder
30. september 2004 - 23:08 #28
f.eks: http://localhost/index.php

Vil gaette på at du bruger apache? og dine filer før lå i en mappe der hed htdocs?
Avatar billede muddyw. Praktikant
30. september 2004 - 23:19 #29
giver denne fejl:
Parse error: parse error, unexpected '[', expecting ',' or ';' in g:\program files\apache group\apache\htdocs\gaestebog\index.php on line 30
Avatar billede muddyw. Praktikant
30. september 2004 - 23:20 #30
ok er rettet :)    prøver igen
Avatar billede muddyw. Praktikant
30. september 2004 - 23:29 #31
jeg får denne fejl:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in g:\program files\apache group\apache\htdocs\gaestebog\opdater.php on line 11
Avatar billede muddyw. Praktikant
30. september 2004 - 23:31 #32
der bliver altså ved med at være problemer med linie 11:
$sql = "INSERT INTO indlaeg VALUES ('".$navn."','".$email."','".$besked"')";
Avatar billede mcgoat Nybegynder
30. september 2004 - 23:34 #33
hmmm... prøv med dette i din opdater.php:

<?php
require "connect.php"; // Her bliver filen connect.php inkluderet så der skabes forbindelse til databasen


// Da der bliver bruge method = "Post" så er disse variabler af typen POST og bruges på denne måde $_POST['navn']
// Der er 3 inputs på siden: name="navn", name="email" og name="besked"..
$navn = $_POST['navn'];
$email = $_POST['email'];
$besked = $_POST['besked'];

$sql = "INSERT INTO indlaeg VALUES ('$navn','$email','$besked')"; // Streng med forespørgsel

$results = mysql_query($sql); // Her bliver de variabler smidt ind i din database

mail("per@mail.dk", "Nyt inlæg i gæstebogen fra ".$navn,$besked,"From: ".$email); // Her får du sendt en mail(måske)
?>

<html>
<title>Opdater</title>
<body bgcolor="FFFFFF">

Tak for det. <a href="index.php">Klik for at vende tilbage til gæstebogen.</a>

</body>
</html>
Avatar billede eagleeye Praktikant
30. september 2004 - 23:34 #34
der mangler et . i linje 11:

$sql = "INSERT INTO indlaeg VALUES ('".$navn."','".$email."','".$besked."')";
Avatar billede mcgoat Nybegynder
30. september 2004 - 23:35 #35
Du har en tabel i databasen "gaestebog" som hedder "indlaeg" ikke? som så indeholder "navn", "email", og "besked" ? og nok også et "id"?
Avatar billede mcgoat Nybegynder
30. september 2004 - 23:36 #36
Ahhh ja... godt set eagleeye :) ... prøv med det istedet for
Avatar billede mcgoat Nybegynder
30. september 2004 - 23:37 #37
der manglede bare et . bagefter $besked

hehe
Avatar billede muddyw. Praktikant
30. september 2004 - 23:37 #38
ja jeg har :)
Avatar billede eagleeye Praktikant
30. september 2004 - 23:37 #39
mcgoat det du har vist 30/09-2004 23:34:15 bør også virke.
Avatar billede muddyw. Praktikant
30. september 2004 - 23:43 #40
punktummet er rettet, og jeg får ingen fejlmeldinger, men indlægget bliver ikke opdateret...dvs. man kan ikke se det i gæstebogen :(
Avatar billede muddyw. Praktikant
30. september 2004 - 23:43 #41
vi er næsten ved at være der :) tror jeg
Avatar billede muddyw. Praktikant
30. september 2004 - 23:44 #42
der bliver også sendt en mail videre om indlægget, men bogen bliver ikke opdateret!
Avatar billede eagleeye Praktikant
30. september 2004 - 23:45 #43
Hvis du har mistanke om der sker en fejl kan du prøve at rette:

$results = mysql_query($sql); // Her bliver de variabler smidt ind i din database

Til dette:

$results = mysql_query($sql) or die(mysql_error()); // Her bliver de variabler smidt ind i din database
Avatar billede mcgoat Nybegynder
30. september 2004 - 23:47 #44
god ide.. for at se om der kommer en fejl der...
Avatar billede muddyw. Praktikant
30. september 2004 - 23:47 #45
giver denne fejl: Column count doesn't match value count at row 1
Avatar billede mcgoat Nybegynder
30. september 2004 - 23:48 #46
Kan du se om det er fordi at de ikke bliver gemt i DB, eller fordi den ikke kan vise de indlæg som ligger i DB?
Avatar billede eagleeye Praktikant
30. september 2004 - 23:49 #47
PRøv at tilføje dine kolonnenavne som du har haft, eks:

$sql = "INSERT INTO indlaeg (navn, email, besked) VALUES ('".$navn."','".$email."','".$besked"')";
Avatar billede mcgoat Nybegynder
30. september 2004 - 23:49 #48
$sql = "INSERT INTO indlaeg (navn, email, besked) VALUES ('$navn','$email','$besked')"; // Streng med forespørgsel

hvad hvis du prøver med det?
Avatar billede muddyw. Praktikant
30. september 2004 - 23:49 #49
de bliver ikke gemt i DB, det gjorde de før
Avatar billede mcgoat Nybegynder
30. september 2004 - 23:50 #50
Er nok fordi der er et felt der f.eks hedder ID som jeg ikke har taget højde for da jeg altid gør alting manuelt og besværligt ved selv at indsaette et nyt id... hehe
Avatar billede mcgoat Nybegynder
30. september 2004 - 23:51 #51
Prøv en af disse:
$sql = "INSERT INTO indlaeg (navn, email, besked) VALUES ('".$navn."','".$email."','".$besked."')";

eller

$sql = "INSERT INTO indlaeg (navn, email, besked) VALUES ('$navn','$email','$besked')"; // Streng med forespørgsel
Avatar billede eagleeye Praktikant
30. september 2004 - 23:51 #52
Ja man kan vist skrive '' :

$sql = "INSERT INTO indlaeg VALUES ('','$navn','$email','$besked')"; // Streng med forespørgsel
Avatar billede muddyw. Praktikant
30. september 2004 - 23:53 #53
giverdenne fejl: Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in g:\program files\apache group\apache\htdocs\gaestebog\opdater.php on line 11 

:(
Avatar billede eagleeye Praktikant
30. september 2004 - 23:53 #54
Brug det som mcgoat har vist :)  der var lidt copy/paste fejl i min den første.
Avatar billede mcgoat Nybegynder
30. september 2004 - 23:54 #55
har du prøvet begge disse?

$sql = "INSERT INTO indlaeg (navn, email, besked) VALUES ('".$navn."','".$email."','".$besked."')";

eller

$sql = "INSERT INTO indlaeg (navn, email, besked) VALUES ('$navn','$email','$besked')"; // Streng med forespørgsel
Avatar billede muddyw. Praktikant
30. september 2004 - 23:57 #56
$sql = "INSERT INTO indlaeg (navn, email, besked) VALUES ('$navn','$email','$besked')"; // Streng med forespørgsel
virkede!!!!!
JAAAA, hold kæft drenge, hvor er i fede...nu skal jeg bare bruge noget tid på at nærlæse koden for at se hvad der egentlig sker i PHP :)

I skal have nogle point...smid et svar :)
Avatar billede muddyw. Praktikant
30. september 2004 - 23:58 #57
og tak for jeres hjælp!!
Avatar billede eagleeye Praktikant
01. oktober 2004 - 00:01 #58
Jamen ok, her et mit svar så ;)
Avatar billede mcgoat Nybegynder
01. oktober 2004 - 00:01 #59
Det var skam så lidt.. du kan få min msn hvis der er noget: McGoatXIV@hotmail.com
Avatar billede mcgoat Nybegynder
01. oktober 2004 - 00:02 #60
Brugte du min kode?? hehe... bare nysgerrig? er lidt lettere.. især fordi man ikke hele tiden skal forbinde til databasen, men at det ligger i en seperat fil
Avatar billede mcgoat Nybegynder
01. oktober 2004 - 00:05 #61
og er også en fordel at bruge pconnect istedet for connect da man ikke behøver at skulle lukke forbindelsen i hver fil
Avatar billede muddyw. Praktikant
01. oktober 2004 - 00:09 #62
ja jeg brugte den kode med de 3 scripts....jeg er som sagt ny i PHP og skal først til at se hvordan det hele hænger sammen :)
Go' nat...
Avatar billede mcgoat Nybegynder
01. oktober 2004 - 00:10 #63
nat nat
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester