Avatar billede michaeltryl Seniormester
14. maj 2006 - 11:44 Der er 31 kommentarer og
1 løsning

forum hvordan gør man

er der nogen som kan give mig lidt teori i hvordan man laver et simpelt forum med
1. hoved overskrifter
2. herunder skal være muligt at lave spørgsmål som man derefter kan besvare.
det skal være med mysql

altså ikke noget med bruger oprettelse eller andet sjovt
Avatar billede bufferzone Praktikant
14. maj 2006 - 13:41 #1
Man downloader et færdigt f.eks. fra.

http://forum.snitz.com der er et fuldt funktionelt ASP baseret forum
http://www.phpbb.com der er et ditto php baseret forum
http://www.fullxml.com der er en ASP baseret portal med bl.a. forum
Avatar billede michaeltryl Seniormester
14. maj 2006 - 14:21 #2
nej det er ikke det jeg ønsker.
jeg har prøvet dem, men de har allesammen bruger oprettlese
Avatar billede jakobdo Ekspert
15. maj 2006 - 18:20 #3
Start med at lav en form, som poster til en database.
Lav så en side som kan liste hver hovedtråd.
Hovedtråd = (parent = 0)
Altså alle som har en parent = 0, er en hovedtråd!
parent = 1, vil sige det er et svar til hovedtråd med id = 1 osv...
Start med det.
Avatar billede michaeltryl Seniormester
15. maj 2006 - 19:07 #4
hvad mener du med parent=0? hvordan gør man lige det
Avatar billede jakobdo Ekspert
15. maj 2006 - 21:55 #5
Du starter f.eks. med at lave en tabel og kalder den:
forum
Den tabel indeholder felterne:
id - int - auto_increment (unikt ID på hver tråd/indlæg/svar)
overskrift - varchar - 255 - NULL (overskrift på hovedtråd)
tekst - text (selve indholdet i tråden, svaret)
forfatter - varchar - 50 (hvem har skrevet indlægget)
email - varchar - 255 (email på forfatteren)
datotid - datotime (hvornår er indlægget/svaret lavet)
parent - int (0 = hovedtråd, parent = 1 som nævnt tidligere)
Avatar billede michaeltryl Seniormester
15. maj 2006 - 23:46 #6
okay et felt som hedder
parent
og 0 og 1 tallene skal de stå i standardværdi når jeg opretter tabellen
Avatar billede jakobdo Ekspert
16. maj 2006 - 07:45 #7
0 kan du evt godt tage som standard ja.
Avatar billede michaeltryl Seniormester
16. maj 2006 - 11:22 #8
yes okay så laver jeg en formular og et php script som hiver data ud af tabellen og indsætter dem i databasen.

men visnings siden er jeg ikke helt med på.
Avatar billede jakobdo Ekspert
16. maj 2006 - 13:30 #9
Der laver du så et udtræk med: SELECT * FROM forum WHERE parent = 0
Så printer du alle hovedtråde ud, og kan lave at svar/indlæg ligger under, altså indrykket, eller at man klikker på hovedtråden, og hopper til ny side, og der vises hovedtråden så med alle svar/indlæg under eller over, samt mulighed for at lægge et svar under.
Avatar billede michaeltryl Seniormester
17. maj 2006 - 17:31 #10
okay jeg prøver lige at lege lidt med det kan du forklare hvordan man laver hovedtrådn til et link sådan at man har alle hovedtråde listet op på en når man så klikker på den kommer man til siden med svar på den tråd
Avatar billede michaeltryl Seniormester
17. maj 2006 - 17:51 #11
jeg har også problem med tiden, når jeg kigger i databsen står der kun
0000-00-00 00:00:00
Avatar billede jakobdo Ekspert
18. maj 2006 - 07:56 #12
Når du har oprettet et indlæg eller?

Hvis du allerede har en SQL som indsætter, så brug denne kode:

INSERT INTO tabel(id,datotid.....) VALUES('',NOW())

NOW() sætter tiden lige nu, sjovt nok! :o)
Avatar billede michaeltryl Seniormester
18. maj 2006 - 09:27 #13
okay det vil jeg prøve.
men hvad så med det der svar til hoved tråden.
lige nu kan man ikke svare på dem skal jeg der lave en ny formular hvor parent bliver sat til 1. eller hvordan gør jeg lige.
for hvis parent er =1 ved alle svar kan man jo ikke finde ud af hvad der er svar til hvilke hovedtråde?
Avatar billede showsource Seniormester
18. maj 2006 - 09:56 #14
parent skal være det id som selve hovedtråden har

Oprettet tråd:
id = (autoincrement) f.eks. 4
overskrift = blablabla
tekst = noget tekst
forfatter = jakobdo
email = emailadresse
datotid = 18/05-2006 09:27:00
parent = 0

Indllæg i tråd:
id = (autoincrement) f.eks. 5
overskrift = ""
tekst = noget mere tekst
forfatter = michaeltryl
email = emailadresseigen
datotid = 18/05-2006 09:30:00
parent = 4

parent fortæller så at det er til den tråd hvor id = 4 at indlægget hører under
Avatar billede showsource Seniormester
18. maj 2006 - 09:57 #15
Og hov, NOW() laver jo IKKE tiden med / :O)
Men som
2006-05-18 09:27:00
Avatar billede michaeltryl Seniormester
18. maj 2006 - 10:59 #16
jeg har nu prøvet med

mysql_query("INSERT INTO forum (forumID, overskrift, tekst, forfatter, email, datotid, parent)
values(0, '$overskrift', '$tekst', '$forfatter', '$email', ',NOW()', 0)");

og

mysql_query("INSERT INTO forum (forumID, overskrift, tekst, forfatter, email, datotid, parent)
values(0, '$overskrift', '$tekst', '$forfatter', '$email', 'NOW()', 0)");

og

mysql_query("INSERT INTO forum (forumID, overskrift, tekst, forfatter, email, datotid, parent)
values(0, '$overskrift', '$tekst', '$forfatter', '$email', NOW(), 0)");

men uanset hvad bliver der ikke indsat noget i databasen

med hensyn til parent har jeg standard værdi til at være 0
hvordan laver jeg den om når der er nogen som skal svare på en hovedtråd.
jeg mangler også at finde ud af hordan man laver sådan at man kan klikke på en hovedtråd og derefter kommer til en side som viser alle svarene til den?
Avatar billede jakobdo Ekspert
18. maj 2006 - 11:20 #17
Prøv at start med at smid: or die(mysql_error()); efter mysql_query(....)

Og ret 'NOW()' til: NOW()
Avatar billede michaeltryl Seniormester
18. maj 2006 - 18:18 #18
det virker ikke endnu. hele min kode ser nu sådan ud alle koder og brugernavne er skjult med ****, og de er skrevet rigtigt. det virkede indtil jeg indsatte NOW()

<?
//hent indholdet fra formularen
$overskrift = $_REQUEST["overskrift"];
$tekst = $_REQUEST["tekst"];
$forfatter = $_REQUEST["forfatter"];
$email = $_REQUEST["email"];

//skab forbindelse til databasen
mysql_connect("****", "****", "****") or die(mysql_error());
mysql_select_db("****") or die(mysql_error());

//tjek om der er postet
if (!empty($_POST['navn']) && !empty($_POST['email']))
{
//indsæt data i databasen
mysql_query("INSERT INTO forum (forumID, overskrift, tekst, forfatter, email, datotid, parent) or die(mysql_error()); efter mysql_query(....)
values(0, '$overskrift', '$tekst', '$forfatter', '$email', NOW(), 0)");
}
?>
Avatar billede michaeltryl Seniormester
18. maj 2006 - 18:21 #19
ups opdagede lige (....) efter linien som indsætter, det er slettet, men det hjalp ikke noget
Avatar billede jakobdo Ekspert
19. maj 2006 - 17:52 #20
Test denne:

<?

//skab forbindelse til databasen
mysql_connect("****", "****", "****") or die(mysql_error());
mysql_select_db("****") or die(mysql_error());

//hent indholdet fra formularen
$overskrift = mysql_real_escape_string($_POST['overskrift']);
$tekst             = mysql_real_escape_string($_POST['tekst']);
$forfatter     = mysql_real_escape_string($_POST['forfatter']);
$email             = mysql_real_escape_string($_POST['email']);

//tjekker om der er noget i forfatter og email
if(!empty($forfatter) && !empty($email))
{
    //indsæt data i databasen
    mysql_query("INSERT INTO forum (forumID, overskrift, tekst, forfatter, email, datotid, parent)values(0, '$overskrift', '$tekst', '$forfatter', '$email', NOW(), 0)") or die(mysql_error());
}
?>
Avatar billede michaeltryl Seniormester
19. maj 2006 - 23:47 #21
så langt så godt.
nu virker det og man kan lave et spørgsmål i forummet, samt tiden skrives ind.

så mangler jeg bare resten så som
1. hvordan gør man hoved spørgsmålet klikbart sådan man kan svare på det
2. hvordan skal formularen/koden til svar siden se ud (formularen vil jeg tro kan genbruges, ret mig hvis jeg tager fejl.)

jeg må siger jeg er meget glad for jeres hjælp og håber i vil hjælpe mig færdig da jeg føler jeg lære noget ved dette og er også villig til at give flere point, da i allerede har hjulpet meget.
Avatar billede jakobdo Ekspert
20. maj 2006 - 00:03 #22
Det gør du f.eks. ved:
$query = mysql_query("SELECT id, overskrift FROM forum ORDER BY datotid");
while($row = mysql_fetch_assoc($query))
{
echo '<a href="forumView.php?id='.$row['id'].'">' . $row['overskrift'] . '</a><br />';
}

Og så skal du jo så lave en kode som f.eks. hedder forumView.php som kan vise tråden og samtidig lægge svar ind under hovedtråden... :o)
Avatar billede michaeltryl Seniormester
20. maj 2006 - 10:22 #23
jeps det vil sige at i forumview.php skal koden hente alle forumtråde hvor parent=$forumID
samt formularen skal skrive parent=$forumID

men hvordan?

Jeg har set det der $row nogle gange og er i tvivl om hvad det betyder
betyder $row['overskrift'] simpelthen at den henter alt i rækken overskrift fra databasen?
Avatar billede michaeltryl Seniormester
20. maj 2006 - 10:38 #24
den kom med en fejl når jeg prøvede:

$query = mysql_query("SELECT id, overskrift FROM forum ORDER BY datotid");
while($row = mysql_fetch_assoc($query))
{
echo '<a href="forumView.php?id='.$row['id'].'">' . $row['overskrift'] . '</a><br />';
}

men så rettede jeg id til forumID som er navnet på id feltet i min database
nu kommer der ingen fejl, men den udskriver heller ikke nogen liste.

sådan ser det ud nu:

$query = mysql_query("SELECT forumID, overskrift FROM forum ORDER BY datotid");
while($row = mysql_fetch_assoc($query));
{
echo '<a href="vis_forum.php?forumID='.$row['forumID'].'">' . $row['overskrift'] . '</a><br />';
}
?>
Avatar billede jakobdo Ekspert
20. maj 2006 - 10:50 #25
Kontakt mig lige på msn: jakobdo (indsæt @ her) hotmail (indsæt . her) com
Avatar billede michaeltryl Seniormester
20. maj 2006 - 14:00 #26
jeg har tilføjet dig nu og jeg er på om ca. 2 timer og frem til i aften så må vi se om vi ses der.
Avatar billede michaeltryl Seniormester
22. maj 2006 - 09:43 #27
Hej jakobdo
jeg har nu fået noget layout op at køre, så når du engang har tid til at hjælpe med resten kan du bare kontakte mig.
jeg har opdaget en lille fejl på forsiden (forum.php) den viser også alle underindlæg
den skal kun vise de indlæg hvor parent=0
vi snakkes
Avatar billede jakobdo Ekspert
22. maj 2006 - 11:08 #28
Ret sql: SELECT forumID, overskrift FROM forum ORDER BY datotid
til:
SELECT forumID, overskrift FROM forum WHERE parent = 0 ORDER BY datotid
Avatar billede michaeltryl Seniormester
22. maj 2006 - 11:17 #29
tak det virkede vi snakkes ved om ikke senere i dag så lige pludselig.
jeg er hjemme og på fra omkring kl. 17:45 og frem
Avatar billede jakobdo Ekspert
23. maj 2006 - 20:22 #30
Du får et svar...
(der var meget som skulle rettes!) :o)
Avatar billede michaeltryl Seniormester
23. maj 2006 - 20:23 #31
igen tak for hjælpen
Avatar billede jakobdo Ekspert
23. maj 2006 - 20:24 #32
Takker for point.
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