/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Forum php/mysql
Fra : Bo Rattenbrog


Dato : 14-01-03 15:05

Jeg er ved at strikke et meget simpelt forum sammen via PHP / MySQL.

Jeg ønsker at den besøgende kan se om der er kommet nye indlæg i en gruppe.
Dette har jeg tænkte mig at gøre på følgende måde:

<A HREF="forum.php?forumId=1&updated=XX">Gruppe 1</A>

XX indeholder så datoen for det nyeste indlæg i den aktuelle gruppe.

min tabel er så:
CREATE TABLE forum(
id int(10) DEFAULT '0' NOT NULL auto_increment PRIMARY KEY,
_group int(10) NOT NULL,
mother int(1),
title varchar(255),
content varchar(255)
);

Og det første udtræk, hvor der grupperne vises med antallet af emner og
svar:

SELECT COUNT(answer.id),
groupMain.title AS groupMain
FROM forum groupMain
LEFT JOIN forum answer ON answer._group = groupMain.id
WHERE answer.id != 0
GROUP BY answer._group

Næste udtræk hvor der er valgt en gruppe:
answer.content AS answerContent

FROM forum answer


WHERE answer.motherId = $subjectId

");

men hvordan laver jeg et udtræk der tager det nyeste emne eller svar fra
hver gruppe ?

Og evt. øvrige kommentarer til ovenstående er velkomne.

Bo




 
 
Bo Rattenbrog (14-01-2003)
Kommentar
Fra : Bo Rattenbrog


Dato : 14-01-03 15:06

Ups, forkert gruppe - sorry.



Kim Emax (14-01-2003)
Kommentar
Fra : Kim Emax


Dato : 14-01-03 15:14

"Bo Rattenbrog" wrote

> Ups, forkert gruppe - sorry.

Sidder du og chatter med dig selv Bo? Så er det forkert gruppe

Hvis du har bygget din DB smart op, så har alle ikke-start postings en
reference til en overliggende posting. Derefte vil det være en smal sag at
lave et select: SELECT * FROM postings WHERE reference IS NULL ORDER BY
date;

--
Kim Emax



Bo Rattenbrog (14-01-2003)
Kommentar
Fra : Bo Rattenbrog


Dato : 14-01-03 15:22

"Kim Emax" <news@remove-emax.dk> wrote in message
news:_WUU9.35493$Hl6.4060744@news010.worldonline.dk...
> "Bo Rattenbrog" wrote
>
> > Ups, forkert gruppe - sorry.
>
> Sidder du og chatter med dig selv Bo? Så er det forkert gruppe

jeps - jeg keder mig aldrig

> Hvis du har bygget din DB smart op, så har alle ikke-start postings en
> reference til en overliggende posting. Derefte vil det være en smal sag at
> lave et select: SELECT * FROM postings WHERE reference IS NULL ORDER BY
> date;

Ja, jeg er klar over er det jeg har fundet frem til at ikke det mest fede,
da jeg ikke aner ret meget om hvordan man bør bygge det op, derfor er jeg
blot gået igang, og håber, at jeg via diverse kommentarer på et eller andet
tidspunkt står med noget brugbart.

Hvis jeg anvender den metode du kort beskriver, er det så også muligt at
tælle antallet af emner og svar under hver gruppe ?

Bo



Kim Emax (14-01-2003)
Kommentar
Fra : Kim Emax


Dato : 14-01-03 16:39

"Bo Rattenbrog" wrote

> Hvis jeg anvender den metode du kort beskriver, er det så også muligt at
> tælle antallet af emner og svar under hver gruppe ?

Ja, det vil du...

table:
id - reference - date - subject - body
1 - NULL - 2003-01-01 - test du - dette er en test
2 - 1 - 2003-01-04 - virker - det virker sgu
3 - NULL - 2003-01-05 - ny test - mere test
4 - 3 - 2003-01-05 - hehe - leger lidt---
5 - 2 - 2003-01-06 - tralalal - hej bo

som du kan se, så er der nu to hovedinlæg (SELECT * FROM table WHERE
reference IS NULL)

Så skal du sådan set bare lave en rekursiv funktion, der henter alt, der
refererer til sig selv (SELECT * FROM table WHERE reference = '1'; # for at
hente indlæg postet til 1) I while løkken kalder du så funktionen igen med
reference = '$id'

Var det forståligt?

--
Kim Emax




Bo Rattenbrog (14-01-2003)
Kommentar
Fra : Bo Rattenbrog


Dato : 14-01-03 16:48

> Var det forståligt?

Tjo fandt selv frem til:

CREATE TABLE forum(

id int(10) DEFAULT '0' NOT NULL auto_increment PRIMARY KEY,

mother int(10),

title varchar(255),

content varchar(255)

);

Første select, hvor antallet af emner og svar tælles:

COUNT(subject.id) AS countSubject,
COUNT(answer.id) AS countAnswer,

groupMain.Id AS groupId,
groupMain.title AS groupTitle,
groupMain.content AS groupContent




FROM forum groupMain

LEFT JOIN forum subject ON subject.mother = groupMain.id
LEFT JOIN forum answer ON answer.mother = subject.id

WHERE groupMain.id != 0 AND groupMain.mother = 0

GROUP BY groupMain.id


Hvilket ser ud til at virke, ved næste trin, hvor der er valgt en gruppe,
gør jeg følgende:

SELECT

COUNT(answer.id) AS countAnswer,


subject.Id AS subjectId,

subject.title AS subjectTitle,

subject.content AS subjectContent


FROM forum subject


LEFT JOIN forum answer ON answer.mother = subject.id


WHERE subject.mother = 1

GROUP BY subject.id

Hvilket ser ud til at virker ok. Det sidste trin er enkelt nok - SELECT *
FROM forum WHERE mother = $subjectId

Så mangler jeg at få kikket på den sidste del, der anvendes til at oplyse om
en gruppe er opdateret. Jeg ved ikke om det kan kædes sammen med første
trin, eller jeg skal lave et seperat udtræk.

Bo



ps. det var da egentlig irreterende at du bryder ind i min chat



Kim Emax (15-01-2003)
Kommentar
Fra : Kim Emax


Dato : 15-01-03 12:13

"Bo Rattenbrog" wrote

> Så mangler jeg at få kikket på den sidste del, der anvendes til at oplyse
om
> en gruppe er opdateret. Jeg ved ikke om det kan kædes sammen med første
> trin, eller jeg skal lave et seperat udtræk.

sæt en cookie med højeste id i tråden, hvis højeste id i tråden næste gang
man kommer ind ikke er = det i cookien, såeee...

> ps. det var da egentlig irreterende at du bryder ind i min chat



--
Kim Emax



Søg
Reklame
Statistik
Spørgsmål : 177503
Tips : 31968
Nyheder : 719565
Indlæg : 6408545
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste