Lav en gæstebog

Tags:    php
Skrevet af Bruger #320 @ 23.10.2001
Gæstebog i PHP - MySQL

I denne artikel vil jeg forklare hvordan du laver din egen simple gæstebog. Det er vigtigt at du har lidt kendskab til MySQL før du går igang.
Vi skal starte med at lave nogle filer. Vi skal have tabel-strukturen til MySQL databasen, en side hvor vi viser indlæg og en side hvor vi skriver indlæg. Altså ialt 3 filer. Og hold så godt fast. Nu skal vi lave filerne.

Vi starter med at lave sql-filen. Den skal se således ud:

CREATE TABLE gbog(
id int(4) primary key not null auto_increment,
navn varchar(50),
emne varchar(50),
mail varhcar(50),
post text,
dato date
);
skriv.php er en ganske almindelig fil med en formular, hvor man skriver indlægget. Det skal se således ud:
<form action="gem.php" method="post"><br>
<input type="text" name="navn" value="navn"><br>
<input type="text" name="emne" value="emne"><br>
<input type="text" name="mail" value="mail"><br>
<input type="text" name="post" value="post"><br>
<input type="submit" value="Post indlæg">
<input type="reset" value="Slet felter">
</form>

<?

mysql_connect ("HOST","USER","PASSWORD");
mysql_select_db ("DIN DATABASE");

mysql_query ("INSERT INTO gbog (id,navn,emne,mail,post) 
 VALUES ('','$navn','$emne','$mail','$post');

?>
Ja, Det første med formularen er jo let nok. Nu kommer vi til det svære, nemlig MySQL-kommandoerne. Vi starter vores php. Derefter connect'er vi til databasen med mysql_connect. Derefter vælger vi vores database med kommandoen mysql_select db
Så bruger vi endnu en query for at få vores data smidt i tabellen. Vi starter med INSERT INTO gbog som indsætter data i tabellen gbog, vi oprettede tidligere. Så angiver vi hvilke kolonner der skal smides ind. Der er id, navn, emne, mail, post som står mellem de to paranteser. Så skal vi lige skrive hvilket data der skal smides i tabellen. Der gør vi ved at angive nogle variabler. Det er $navn, $emne $mail og $post som man skrev dem i formularen. Id indsætter MySQL selv. Og så slutter vi lige php. Let ik???

Nu skal vi have oprettet en side hvor indlæggene kan læses. Den kalder vi for vis.php. Den skal se således ud:

<?

mysql_connect ("HOST","USER","PASSWORD");
mysql_select_db ("DIN DATABASE");

$foresp = mysql_query("SELECT * FROM gbog");

while($row = mysql_fetch_array($foresp)) {
echo $row[navn];
echo "<br>";
echo $row[mail];
echo "<br>";
echo $row[emne];
echo "<br>";
echo $row[post];

}

?>
Ja. Vi starter med at connect'e og vælge database som vi gjorde i skriv.php. Når vi skriver $foresp = mysql_query("SELECT * FROM gbog"); angiver vi hvad der sker når man kører variablen $foresp. Og der sker det at den vælger alle data fra tabellen gbog. Men det er ikke nok at vælge data'ene. Vi skal også have skrevet dem ud. Det gør vi med while($row = mysql_fetch_array($foresp)) {
echo $row[data]; }
Data skal erstattes med den kolonne man vil have printet ud. F.eks. Navn. Hvis man vil have flere data ud kører man bare echo $row[data]; igen, og erstatter data med den næste kolonne. Sværere er det ikke.

Hvis du har spørgsmål, så stil dem i forummet...




Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (22)

User
Bruger #2495 @ 12.02.03 21:08
Weeeeeeeeeeeeeeeeeeeee :D
er mysql n00b og lærte noget her :)
User
Bruger #1733 @ 12.02.03 23:02
Der mangler en smule for at man kan få den til at virke. Der bliver henvist til gem.php i artiklen og der er ikke nævnt nogen steder hvad man skal putte i den.
User
Bruger #3750 @ 18.04.03 11:03
I filen skriv.php putter du den indtastede data ind i databasen, skulle den del ikke have været seperat og hedde gem.php
User
Bruger #3530 @ 10.05.03 17:31
Okay artikel men lidt farligt at du ikke har sat eks. stripslashes() ind får hvis man er PHP/MySQL n00b og kaster sig sorgsløst ud på nettet med den der og der så kommer en gammel skrunken ond hacker kan han jo nemt pille lidt ved det hele ikke :) ? Ellers flot men lidt kedelig
User
Bruger #4086 @ 28.07.03 01:38
Bygger artiklen ikke på rimelig basale ting indenfor php og mysql? Du kunne i det mindste have brugt lidt mere tid på sikkerhed og andre features.
User
Bruger #1742 @ 02.08.03 18:11
hmmm. burde <form action="gem.php" method="post"> den ikke referer til sigselv
User
Bruger #4935 @ 21.12.03 15:20
Hej,

fin artikel men
mail varhcar(50), << char skal der stå :), bare en lille tastefejl men nok til at komme med en fejl....

ellers ret godt...
User
Bruger #4954 @ 02.01.04 12:45
Hvor skal sql-filen skrives henne??? Er lidt bare noob!! Men plz hjælp....! Og de andre skrives bare editoren, right?????
User
Bruger #3275 @ 24.01.04 11:00
I skriv.php mangler der et " efter '$post'
User
Bruger #6057 @ 30.06.04 23:28
jeres mysql virker ikke :( ellers tror jeg den er god
User
Bruger #2108 @ 13.02.05 14:51
Er der nogle som kan hjælpe mig? - jeg får denne fejl:

Parse error: parse error, unexpected $ in /hotel/justkidding/WWW/PHP/guest/gem.php on line 9
User
Bruger #6336 @ 10.05.05 09:06
nice
User
Bruger #7782 @ 02.07.05 23:33
hallo hva sker der den der sql fil virker jo ik man!!! og det gør skriv heller ik !!
User
Bruger #8410 @ 17.11.05 20:12
det er fordi han har lavet en stavefejl i linje 5
User
Bruger #8692 @ 02.01.06 19:31
Det er en MEGET simpel gæstebog, og er egentlig mest bare copy paste. Jeg synes godt der kunne have været en smugle omkring, hvordan man kunne have været gået ind at designe gæstebogen. Og så er der jo lige den lille fejl med gem.php.

Men den er god til nybegyndere, lige til at gå til, copy / paste, men ikke noget man lære det store af. (Ihvertfald ikke mig :o))
User
Bruger #7534 @ 19.07.06 11:58
får den her besked når jeg trykker post indlæg: Parse error: syntax error, unexpected $end in /web/www/frac/users/cssprays/gem.php on line 9

Jeg har gjort følgende: fulgt artiklen, taget phpkoden fra skriv.php og lavet en ny, som hedder gem.php og sat det derind i. Så har jeg udfyldt det hele og uploadet det hvad går der galt?
User
Bruger #10243 @ 24.07.06 20:51
Fejl på siden.

Koden lyder sådan her:

CREATE TABLE gbog(
id int(4) primary key not null auto_increment,
navn varchar(50),
emne varchar(50),
mail varhcar(50),
post text,
dato date
);

den skal hedde dette:

CREATE TABLE gbog(
id int(4) primary key not null auto_increment,
navn varchar(50),
emne varchar(50),
mail varchar(50),
post text,
dato date
);



Fejlen:
forfatteren fik skrevet "varhcar" og ikke "varchar" på "mail varchar"

Mvh. Andi.
User
Bruger #10243 @ 10.08.06 16:36
hmm, hvor bliver gem.php egentligt af? =/

N00b til php
User
Bruger #8862 @ 24.11.06 13:05
Ja.. Hvor er gem.php?

Du bruger slet ikke date til noget?
User
Bruger #10834 @ 25.02.08 16:38
Skriv.php

<form action="gem.php" method="post"><br>
<input type="text" name="navn" value="navn"><br>
<input type="text" name="emne" value="emne"><br>
<input type="text" name="mail" value="mail"><br>
<input type="text" name="post" value="post"><br>
<input type="submit" value="Post indlæg">
<input type="reset" value="Slet felter">
</form>


Gem.php
<?

mysql_connect ("HOST","USER","PASSWORD");
mysql_select_db ("DIN DATABASE");

mysql_query ("INSERT INTO gbog (id,navn,emne,mail,post)
VALUES ('','$navn','$emne','$mail','$post');

?>


Ved dog ikke om det virker tog det bare lige hurtigt ;)
User
Bruger #15664 @ 02.02.10 23:01
Ved godt det er ved at være en gammel artikel, men da den dukkede op på google, så synes jeg alligevel lige jeg vil komme med en kommentar. Jeg skal ikke spille smart fordi jeg selv er en noob på området, men skal der ikke oprettes nogen variabler som skal indeholde Http variablerne?

Gem.php
<?

mysql_connect ("HOST","USER","PASSWORD");
mysql_select_db ("DIN DATABASE");


$navn = $_POST["navn"];
$emne = $_POST["emne"];
$mail = $_POST["mail"];
$post = $_POST["post"];


mysql_query ("INSERT INTO gbog (id,navn,emne,mail,post)
VALUES ('','$navn','$emne','$mail','$post');

?>
User
Bruger #13112 @ 16.02.10 15:20
Jeg for bare en blank side når jeg trykker post indlæg :s
Du skal være logget ind for at skrive en kommentar.
t