Avatar billede ks-online Nybegynder
27. juni 2005 - 11:55 Der er 19 kommentarer og
1 løsning

Problem med Form til Gæstebog MySQL

Hej Eksperter

Jeg er lidt af en programerings newbie.
Jeg har denne Gæstebog som kun gemmer Dato/Tid i min Database, grundet at mit input i databasen sikker tikke modtager data fra mine form variabler.

gæstebogen består af to .php filer begge starter selfølgelig at åbne forbindelse til databasen hvor den også skriver fint det man udfylder i de to forms kommer bare ikke med. nogen der kan hjælpe ??

/Kim

vis.php
----------------------------------------------------------

if ($action=="submit")
mysql_query("INSERT INTO guests SET message='$message', guest='$guest', date=NOW()");

// Now select all the data, and print it one by one.

$result=mysql_query("SELECT * FROM guests");
while($row=mysql_fetch_array($result))
print $row['guest']." : ".$row['message']." on ".$row['date']."<hr align=left width=100>";
?>
</head>
<body>
<form method="post" action="skriv.php">
Name:<br>
<input type="text" name="guest">
<br>
Message:<br>
<textarea name="message"></textarea>
<br>
<input type="submit" name="action" value="submit">
</form>
</body>
</html>

------------------------------------------------------------

skriv.php
------------------------------------------------------------
<?

mysql_query("INSERT INTO guests SET message='$message', guest='$guest', date=NOW()");

?>
Avatar billede erikjacobsen Ekspert
27. juni 2005 - 12:10 #1
Du skulle prøve
mysql_query("INSERT INTO guests SET message='{$_POST['message']}', guest='{$_POST['guest']}', date=NOW()");
Avatar billede beef12 Nybegynder
10. juli 2005 - 03:08 #2
eller endnu lettere: ændre din form-method om fra post til get
<form method="get" action="skriv.php">

Så skulle det virke med det samme...
Avatar billede beef12 Nybegynder
10. juli 2005 - 03:11 #3
Det var så nærmere et PHP-spørgsmål, hvilket forklarer hvorfor du ikke har fået særlig meget respons på den.

Husk at afslutte dine queries med: or die mysql_error(); Så får sendt output af dine eventuelle mysql-fejl til browseren, hvilket kan være meget praktisk når man skal debugge.
Avatar billede javascript Nybegynder
10. juli 2005 - 03:13 #4
hvorfor ikke bruge:
$datoIdag = date("d-m/Y");
$tidNu = date("H:i:s");

også tilføje "dato" og "kl" i databasen også gøre sådan:

mysql_query("INSERT INTO guest SET message = '$_POST[message]', guest = '$_POST[guest]', dato = '$datoIdag', kl = '$tidNu'");
Avatar billede beef12 Nybegynder
20. juli 2005 - 11:02 #5
løste det dit problem ks-online?
Avatar billede ks-online Nybegynder
21. juli 2005 - 12:50 #6
Hej igen

ja det løste mit problem men jeg har fundet en anden gb jeg hellere vil benytte.

GB´en kan godt læse fra Databasen men jeg har samme problem med jeg ikke for skrevet noget i Databasen.

Kode
..................................................................................
Sign.php
<? include "connect.inc.php"; ?>
<html>
<head>
<title><? echo "$gb_title"; ?></title>
</head>
<body topmargin="2">
<center>
<form action="add.php" method=post>
<table width="400" cellspacing="0" cellpadding="2" border="0" bgcolor="#314263">
<tr><td colspan="2">
<table width="400" cellspacing="0" cellpadding="3" border="0" bgcolor="#f8f8f8">
<tr><td colspan="2" bgcolor="#666699" align="center"><font face="Verdana,Tahoma" size="2" color="#ffffff"><strong><? echo "$gb_title"; ?></strong></td></tr>
<tr><td width="31%"><font face=verdana size=1>Your Name :&nbsp;</font>
      </td>
      <td width="69%"><font face=verdana size=1>
<input type=text name=guest></font>
      </td>
    </tr>
    <tr>
      <td width="31%"><font face=verdana size=1>Email:</font>
      </td>
      <td width="69%"><font face=verdana size=1><input type=text name=email></font>
      </td>
    </tr>
    <tr>
      <td width="31%"><font face=verdana size=1>Website URL:</font>
      </td>
      <td width="69%"><font face=verdana size=1>
<input type=text name=website value="http://"></font>
      </td>    </tr>    <tr>     
<td width="31%"><font face=verdana size=1>Your Mesage :</font>      </td>     
<td width="69%"><font face=verdana size=1>
<textarea cols=30 rows=4 name=message></textarea></font> 
  </td>    </tr>    <tr> 
    <td width="31%">
      </td>      <td width="69%"><input type=submit value="Sign Guestbook"></td>    </tr>  </table>
</td></tr></table>
</form>
</center>
</body>
</html>
.................................................................
Add.php
<?
include "connect.inc.php";
mysql_connect("$mysql_host","$mysql_user","$mysql_pass");
$day=date("YmdHis");

mysql_query("INSERT INTO onlyguests SET day='{$_POST['day']}', ip='{$_POST['REMOTE_ADDR']}', guest='{$_POST['guest']}', email='{$_POST['email']}', website='{$_POST['website']}', message='{$_POST['message']}");


?>

Jeg lover nogle point for den her!!
Avatar billede beef12 Nybegynder
21. juli 2005 - 12:55 #7
Ændre denne linie:
mysql_query("INSERT INTO onlyguests SET day='{$_POST['day']}', ip='{$_POST['REMOTE_ADDR']}', guest='{$_POST['guest']}', email='{$_POST['email']}', website='{$_POST['website']}', message='{$_POST['message']}");

til:
mysql_query("INSERT INTO onlyguests SET day='{$_POST['day']}', ip='{$_POST['REMOTE_ADDR']}', guest='{$_POST['guest']}', email='{$_POST['email']}', website='{$_POST['website']}', message='{$_POST['message']}") or die(mysql_error());

Og vis os hvad fejlmeddelelse du får...
Avatar billede ks-online Nybegynder
21. juli 2005 - 13:06 #8
Så får jeg fejlen:

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 ''Dette er beskeden!' at line 1

(''Dette er beskeden!') er teksten fra message feltet i formen.
Avatar billede beef12 Nybegynder
21. juli 2005 - 13:40 #9
Yesyes... du mangler et pling umiddelbart efter {$_POST['message']}

sådan her skal den se ud:
mysql_query("INSERT INTO onlyguests SET day='{$_POST['day']}', ip='{$_POST['REMOTE_ADDR']}', guest='{$_POST['guest']}', email='{$_POST['email']}', website='{$_POST['website']}', message='{$_POST['message']}'") or die(mysql_error());
Avatar billede ks-online Nybegynder
22. juli 2005 - 08:37 #10
Alletiders nu virker det men så får jeg en ny fejl,

"No Database Selected"
Avatar billede ks-online Nybegynder
22. juli 2005 - 08:41 #11
Den fejl fik jeg laver men jeg har det problem at Datoen ikke bliver indsat?
Avatar billede beef12 Nybegynder
22. juli 2005 - 08:44 #12
Du skal jo lave en forbindelse til din Db. Har du ikke gjort det?
Det var da mærkeligt at du ikke fik den fejl fra starten. Her er et eksempel:

<?
$host="localhost"; // serveren hvor databasen ligger
$user="dinbruger";
$password="ditpassword";
$database = "databasenavn";
mysql_connect($host, $user, $password) or die(mysql_error());
mysql_select_db($database) or die(mysql_error());
?>
Avatar billede beef12 Nybegynder
22. juli 2005 - 08:47 #13
MySql datoer har følgende format: yyyy-mm-dd

Jeg kan se at du har en lavet en forbindelse. Er du sikker på at du ikke bare har skrevet forkert servernavn eller lignende?
Avatar billede ks-online Nybegynder
22. juli 2005 - 08:57 #14
Der bliver fint lagt noget op i databasen,
bare ikke day='{$_POST['day']} hvor day stammer fra $day=date("YmdHis");

outputtet 0000-00-00 00:00:00

Jeg vil også gerne have det sådan at den automatisk finder tilbage til min vis gæstebog side efter den har lagt disse ting op i databasen kan man det?
Avatar billede beef12 Nybegynder
22. juli 2005 - 09:04 #15
Ændre til: $day=date("Y-m-d H:i:s");

Lige efter din Insert sætning skriver du blot:
Header("location:DinGæsteBog.php");
Avatar billede ks-online Nybegynder
22. juli 2005 - 10:14 #16
hmm dato formatet kommer desværre stadig ikke med.

Kan man ikke bare skrive noget i
mysql_query("INSERT INTO onlyguests SET day='{$_POST['day']}' istedet for at sætte variablen day først?
Avatar billede beef12 Nybegynder
22. juli 2005 - 15:52 #17
day eksisterer slet ikke i din form kan jeg se.
prøv det her: mysql_query("INSERT INTO onlyguests SET day='{$day}'
Avatar billede ks-online Nybegynder
23. juli 2005 - 13:30 #18
Beef12 Tak for hjælpen! det hele virker nu. Du har været en stor hjælp. Hermed point!
Avatar billede ks-online Nybegynder
23. juli 2005 - 13:45 #19
sidste spørgsmål hvordan lukker man det her spørgsmål og giver point ?
Avatar billede beef12 Nybegynder
31. juli 2005 - 15:39 #20
Sådan, nu har jeg lagt et svar. Nu har du mulighed for at acceptere svaret og derved lukke spm'et.
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
Computerworld tilbyder specialiserede kurser i database-management

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