Avatar billede nik-nak Nybegynder
26. september 2005 - 13:15 Der er 15 kommentarer og
1 løsning

gæstebog kode/MySQL driller!

Hej Eksperter!
jeg er begyndt på PHP og i et IDG hæfte fra Libris er jeg nu nået til at lave min egen gæste bog, endelig blev det interessant, her er min gæstebogs kode:
<html>
<head><title></title>
</head>
<body>
<?
$db = mysql_connect("localhost","root","****");
mysql_select_db("gbog",$db);

if ($_POST["skriv"]){

    $navn=$_POST["navn"];
    $email=$_POST["email"];
    $besked=$_POST["besked"];
    if(!get_magic_quotes_gpc()){
          $navn=addslashes($navn);
          $email=addslashes($email);
          $besked=addslashes($besked);
    }
    $dato_array=getdate();
    $dato=$dato_array["mday"]. "/" . $dato_array["mon"]."-". $dato_array["year"];
    mysql_query("INSERT INTO bog (navn,e-mail,dato,besked) VALUES ('$navn','$e-mail','$dato','$besked')");
}
?>
<center>
<form method="post" action="<? echo $PHP_SELF; ?>">
<input type="hidden" name="skriv" value="1">
navn:<input type="text" name="navn"><br>
email:<input type="text" name="email"><br>
<textarea name="besked" cols="30" rows="5"></textarea><br>
<INPUT TYPE=submit VALUE="send">
</form>
<br>
<br>
<table>
<?
$foresp= mysql_query("SELECT navn,email,dato,besked FROM bog ORDER BY nr DESC");
while($data= mysql_fetch_array($foresp)){
  echo "<tr><td valign=\"top\">";
  echo "fra:<ahref=\"mailto:";
  echo $data["email"];
  echo "\">";
  echo $data["navn"];
  echo "</a>";
  echo "<br>";
  echo $data["dato"];
  echo "</td><td valign=\"top\">";
  echo nl2br($data ["besked"]);
  echo "</td> </tr>";

}
?>
</table>
</center>
</body>
</html>

hvad er der i vejen med den? jeg får kun den form op som jeg har lavet i HTML og den skriver ikke det indlæg jeg har lavet. jeg har på fornemmelsen af den er gal på MySQL serveren, har ikke kunne udføre noget database aktivitet, men kan ikke finde en evt. fejl.. min PHP opsætning er et samlet bundle som hedder WAMP 5, den indeholder PHP,Apache og MySQL.
Avatar billede erikjacobsen Ekspert
26. september 2005 - 13:22 #1
Brug altid en

  mysql_query("INSERT INTO bog (navn,e-mail,dato,besked) VALUES ('$navn','$e-mail','$dato','$besked')") or die(mysql_error());

og du vil se at den ikke kan lide dit feltnavn: e-mail

Du kan dog

  mysql_query("INSERT INTO bog (navn,`e-mail`,dato,besked) VALUES ('$navn','$e-mail','$dato','$besked')") or die(mysql_error());
Avatar billede nik-nak Nybegynder
26. september 2005 - 13:37 #2
hvorfor kan den ikke lide email?
Avatar billede jaw Nybegynder
26. september 2005 - 13:42 #3
Fordi bl.a. e-mail og city er beskyttede ord i Mysql. Hvis du vil, kan du på www.mysql.com finde en liste med de ord der er beskyttede, og hvis man vil bruge de ord som feltnavn skal de omsluttes af `.
Avatar billede erikjacobsen Ekspert
26. september 2005 - 13:45 #4
e-mail er nu ikke reserveret (beskyttet), men indeholder en bindestreg.

Man kan gøre sig den vane altid at sætte `...` omkring navne - så er man fri for det bøvl.
Avatar billede jaw Nybegynder
26. september 2005 - 13:47 #5
Nå ok, denne gang tjekkede jeg ikke listen, men city er da i hvert fald beskyttet :)
Avatar billede nik-nak Nybegynder
26. september 2005 - 13:50 #6
hvis jeg laver det om til et andet ord vil det stadig funkere som e-mail? fx. hvis jeg skifter e-mail ud med OWL?
Avatar billede erikjacobsen Ekspert
26. september 2005 - 13:52 #7
city har nu heller aldrig været reserveret: http://dev.mysql.com/doc/mysql/en/reserved-words.html

Du skal da ikke skifte navnet ud, nik-nak. Bare smæk en `...` på og kør videre.
Avatar billede jaw Nybegynder
26. september 2005 - 13:57 #8
Nå, så er min hjerne nok bare brændt sammen...
Avatar billede nik-nak Nybegynder
26. september 2005 - 14:07 #9
jeg får denne her fejl:
Parse error: syntax error, unexpected '=' in c:\wamp\www\PHP\gb.php on line 13
Avatar billede erikjacobsen Ekspert
26. september 2005 - 14:12 #10
Og hvad står der på linie 13?
Avatar billede erikjacobsen Ekspert
26. september 2005 - 14:13 #11
Og jeg kan se at du skal ændre den linie jeg skrev foroven til

  mysql_query("INSERT INTO bog (navn,`e-mail`,dato,besked) VALUES ('$navn','$email','$dato','$besked')") or die(mysql_error());
Avatar billede nik-nak Nybegynder
26. september 2005 - 14:15 #12
så vidt jeg kan se er det: $email=$_POST["email"];
Avatar billede nik-nak Nybegynder
26. september 2005 - 14:17 #13
nu er det self blevet til: $e-mail=$_POST["`e-mail`"]
Avatar billede erikjacobsen Ekspert
26. september 2005 - 14:21 #14
Jeg har kun bedt dig rette i een linie. Se: 26/09-2005 14:13:43 og 26/09-2005 13:22:50. Det er den nyeste der er korrekt. Hvis du kun retter i den linie i forhold til dit oprindelige script, så skulle det virke. Laver du andre (og unødvendige) rettelser, må du hellere vise det hele.
Avatar billede nik-nak Nybegynder
11. oktober 2005 - 07:53 #15
resultatløs, lukker spøgsmål
Avatar billede jaw Nybegynder
11. oktober 2005 - 13:46 #16
Og jeg kom i tanke om senere, at det var "by" jeg tænkte på og selvf. ikke "city".
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