Avatar billede Slettet bruger
29. juli 2006 - 23:04 Der er 26 kommentarer og
3 løsninger

Kode et Forum

Hej.
Jeg vil prøve at lave et forum, men er der ikke lige en der kan fortælle hvordan det skal bygges op?.. med database og såen?
Avatar billede bufferzone Praktikant
29. juli 2006 - 23:15 #1
Jegvil anbefale at du starter med at tage udgangspunkt i et færdigt og ser hvordan det er bygget op. du kan herefter modificerer dette til ukendelighed så det bliver dit helt eget.

Kim f.eks. på http://www.phpbb.com der er et meget brugt php forum
Avatar billede old-faithful Praktikant
29. juli 2006 - 23:16 #2
Det er måske lettere at bruge et færdiglavet, som http://www.phpbb.com/... så slipper man for arbejdet. Men hvis du selv vil lave det, hjælper det selvfølgelig ikke.
Avatar billede old-faithful Praktikant
29. juli 2006 - 23:17 #3
Hov... bufferzone er vist lidt hurtigere end mig :-D
Avatar billede ahv Nybegynder
29. juli 2006 - 23:18 #4
Hvis du selv ønsker at lave et forum, men ikke har forstand på det, vil jeg mene at phpbb er lige en mundfuld for stor at begynde på. Jeg vil anbefale du kigger nærmere på koden til schaefners lille og enkle forum.

http://www.solutions2all.dk/source_show.asp?id=361
Avatar billede Slettet bruger
29. juli 2006 - 23:23 #5
Det jeg ønskede var selv at kode et, da jeg helst vil bruge mit eget, men er stadig ny til php/mysql, så vis nogen lige kan fortælle mig hvordan databasen skal bygges op?
Avatar billede ahv Nybegynder
29. juli 2006 - 23:31 #6
Som sagt prøv en gang at se på schaefners forum, der skulle være alt den nødvensige info.
Avatar billede Slettet bruger
29. juli 2006 - 23:49 #7
Hvorfor skriver den "Out of range value adjusted for column 'id' at row 1" når jeg prøver at oprette en tråd´?
Avatar billede pidgeot Nybegynder
30. juli 2006 - 00:06 #8
Fordi det forum er lavet så det angiver '' som værdi for det felt der er auto-nummerering på. Det er ret beset forkert at gøre (id behøver slet ikke at blive taget med, og der kunne under alle omstændigheder ikke stå den værdi), og det har da også genereret en warning i de fleste MySQL-versioner.

MySQL 5 har dog ændret lidt så den opførsel som standard giver en fejl. For at løse det skal du enten omskrive det hele så INSERT-sætninger ikke tager den værdi med (eller bruger NULL i stedet for ''), eller ændre SQL-serverens opsætning.

Se http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html for hvordan - så vidt jeg husker skal du slå den der hedder STRICT_TRANS_TABLES fra.

*smutter igen*
Avatar billede bentblod Nybegynder
30. juli 2006 - 13:03 #9
Hej skibber.
Det du først skal tænke over er hvordan databasen skal opbygges. Først skal du have en tabel til alle emnerne i forumet. Lad os f.eks. kalde den forum_oversigt. Inde i hvert emne skal du så gøre brug af en anden tabel, som vi f.eks. kan kalde forum_emne.

I forum_oversigt ville jeg så have følgende attributter:

id, int(11), autogen, primær nøgle
emne_navn, varchar(250)

Hver gang der bliver oprettet et emne vil det blive smidt ind i denne tabel. Inde i selve:
forum_emne:

id, int(11), autogen, primær nøgle
emne_id, int(11)
bruger, varchar(250)
email, varchar(250)
tekst, text

Når der så bliver skrevet i en af de emner, vil det blive sat ind her. Dvs. emne_id er  det id du får fra forum_oversigt. Så når du trykker på et emne i oversigten vil den selecte på emne_id. På denne måde kan du have alle de emner inde i den tabel. Bruger email og tekst siger vel sig selv.

Du er meget velkommen til at skrive hvis du har yderligere spørgsmål :)
Avatar billede Slettet bruger
30. juli 2006 - 16:01 #10
Hva så vis jeg har lavet et spørgsmål og du så svare, hvor skal det så
hen?
Avatar billede Slettet bruger
30. juli 2006 - 16:18 #11
Når, tror lige det er gået op for mig, vis du kommenter mit spørgsmål bliver det skrivet i emne_id?
Avatar billede Slettet bruger
30. juli 2006 - 16:47 #12
Nu har jeg laveten oversigt, men emne_navn skal jo vises som et link ikk?
Avatar billede bentblod Nybegynder
30. juli 2006 - 17:49 #13
Hver gang der er en der svare på et emne, vil det blive sat ind i forum_emne tabellen, med samme emne_id som selve emnet, og på denne måde kan du have flere beskeder indenfor hvert emne. Men ja fra oversigten over emner, skal være links som f.eks. forum?emne_id=32 hvor den så henter id 32 ud fra tabellen og viser samtlige posts der.
Avatar billede Slettet bruger
30. juli 2006 - 17:54 #14
Nu er jeg forviret:P
Avatar billede Slettet bruger
30. juli 2006 - 17:56 #15
så vis jeg går ind i et emne med id = 32 og kommentere der så vil det blive gemt i forum_emne og emne_id vil automatisk blive sat til 32?
Avatar billede Slettet bruger
30. juli 2006 - 17:57 #16
og emne_navn er selve spørgsmålet ikk?
Avatar billede Slettet bruger
30. juli 2006 - 18:24 #17
Det driller mig nu...
Min oversigt ser såen her ud:
<?php
include('connect.php');
$hent= mysql_query("SELECT * FROM forum_oversigt WHERE id");
echo"<table border='0' width='37%' id='table1' align='center'>";
    echo"<tr>";
        echo"<td align='center'>Overskrift</a></td>";
    echo"<td align='center'>Bruger</td>";
    echo"</tr>";
while($oversigt = mysql_fetch_assoc($hent)) {

    echo"<tr>";
        echo"<td align='center'><a href='emne.php?id=$oversigt[id]'>$oversigt[emne_overskrift]</a></td>";
        echo"<td align='center'>$oversigt[emne_navn]</td>";
    echo"</tr>";
echo"</table>";
}
?>

og min emne.php (har kun lige lavet så den viser spørgsmålet der, og tror det er den der er noget galt med);
<?php
include('connect.php');
$hent = mysql_query("SELECT * FROM forum_oversigt WHERE id");
while($vis = mysql_fetch_assoc($hent)) {
echo"<h2> $vis[emne_overskrift]</h2>";
echo"<h3> $vis[emne_navn]</h3>";
echo"<p> $vis[emne_tekst]</p>";
}
?>
Den ud skriver bare hele tabellen?
Avatar billede bentblod Nybegynder
30. juli 2006 - 18:40 #18
ja præcist :) men automatisk sker nok ikke ^^ du skal selv lige hente det 32 ud og indsætte i forum_emne
Avatar billede bentblod Nybegynder
30. juli 2006 - 18:52 #19
Altså SQL ville nok være sådan ca sådan her
Oversigten for at få dem alle frem:
SELECT id,emne_navn FROM forum_oversigt order by id

når et emne så bliver oprettet:
insert into forum_oversigt (emne_navn) values($emnenavn)
så henter du det id ud som den fik og derefter:
insert into forum_emne (emne_id,bruger,email,tekst) values($emne_id, $bruger, $email, $tekst)

Når der så bliver skrevet i dette emne:
Dog inden man inserter her skal vi have emne_id'et ud med f.eks. $_GET['emne_id] så du indsætter det samme.
insert into forum_emne (emne_id,bruger,email,tekst)values($emne_id,$bruger,$email,$tekst)

Når du så henter alt info ud fra et emne:
Her hiver du også id'et ud via $_GET['emne_id']
SELECT bruger,email,tekst FROM forum_emne WHERE emne_id=$emne_id ORDER by id

Håber det hjælper lidt :)
Avatar billede Slettet bruger
30. juli 2006 - 23:54 #20
Så selve spørgsmålet skal gemmes i emne_navn?
Avatar billede Slettet bruger
31. juli 2006 - 00:04 #21
Nårh.. læste vist ikk' mellem linjerne nu..:P
Avatar billede bentblod Nybegynder
31. juli 2006 - 11:53 #22
:) fået styr på det nu?
Avatar billede Slettet bruger
31. juli 2006 - 13:34 #23
Tror jeg........ er lige igang med at lave en side til at oprette sg på..
Avatar billede Slettet bruger
31. juli 2006 - 19:37 #24
Hvorfor virker denne kode ikk?:
<?php
include('connect.php');
if($_POST['submit']){
  $emnenavn = $_POST['emne_navn'];
  $bruger = $_POST['bruger'];
  $email = $_POST['email'];
  $tekst = $_POST['tekst'];

mysql_query("insert into forum_oversigt (id, emne_navn) values('', '$emnenavn')") or die(mysql_error());
$hent_id = mysql_query("select id from forum_oversigt WHERE emne_navn = '$emnenavn'") or die(mysql_error());
$id=mysql_fetch_array($hent_id);
if($hent_id) { echo $id; } else { die(); }
echo "id: " . $id;

mysql_query("INSERT INTO forum_emne (emne_id, bruger,  tekst, email) VALUES ('$id', '$bruger', '$tekst', '$email')") or die(mysql_error());

exit();
}
?>
<html>
<head>
</head>
<body> 

<form action="<?=$php_self;?>" method="post">
Navn: <input type="text" name="bruger"><br>
Emne: <input type="text" name="emne_navn"><br>
Email: <input type="text" name="email"><br>
Spørgsmål: <textarea name="tekst"></textarea> <br>
<input type="submit" name="submit" value="Opret Spørgsmål">
</form>
</body>
</html>

Jeg får denne fejl:
Out of range value adjusted for column 'id' at row 1
Avatar billede bentblod Nybegynder
01. august 2006 - 00:51 #25
pga denne linie:
mysql_query("insert into forum_oversigt (id, emne_navn) values('', '$emnenavn')") or die(mysql_error());

der skal du ikke smide noget id med så prøv med

mysql_query("insert into forum_oversigt (emne_navn) values('$emnenavn')") or die(mysql_error());
Avatar billede Slettet bruger
01. august 2006 - 13:31 #26
Det var ikk der for.. har lavet det om og lavet databasen på en anden måde.... ..
men hvorfor virker denne kode ikke?
<?php
include('connect.php');
if($_POST['submit']){
$emnenavn = $_POST['emne_navn'];
$bruger = $_POST['bruger'];
$email = $_POST['email'];
$tekst = $_POST['tekst'];
mysql_query("INSERT INTO forum_emne SET (emne_navn, bruger, email, tekst) VALUES ('$emnenavn', '$bruger', '$email', '$tekst')") or die (mysql_error());
exit();
}
?>
<html>
<head>
</head>
<body>

<form action="<?=$php_self;?>" method="post">
Navn: <input type="text" name="bruger"><br>
Emne: <input type="text" name="emne_navn"><br>
Email: <input type="text" name="email"><br>
Spørgsmål: <textarea name="tekst"></textarea> <br>
<input type="submit" name="submit" value="Opret Spørgsmål">
</form>
</body>
</html>


Får denne fejl:


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 '(emne_navn, bruger, email, tekst) VALUES ('sdfsdfs', 'adfsdf', 'dfsdfs', 'dfsdfs' at line 1
Avatar billede Slettet bruger
02. august 2006 - 13:46 #27
Jeg har fået lavet forumet nu, og har givet jer point.. i får alle sammen lidt...
Men da det var bentblod der fik mig hjulpet "længst på vej" for han størstedelen!.
Avatar billede Slettet bruger
02. august 2006 - 13:48 #28
bare læg et svar alle sammen,har fundet ud af hva jeg skal gører.
Avatar billede bentblod Nybegynder
02. august 2006 - 17:16 #29
Det var da så lidt ^^
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