14. maj 2006 - 11:44Der 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
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.
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)
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.
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
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?
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
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?
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()
//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)"); } ?>
//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()); } ?>
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.
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)
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?
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
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.