[PHP/SQL] Forumindex query

Pagina: 1
Acties:
  • 167 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik ben bezig met het coden van een forum. Ik heb hiervoor de volgende tabellen voor de categoriën + subforums:

#
# Tabel structuur voor tabel `forum_categorien`
#

CREATE TABLE forum_categorien (
categorie_id int(5) NOT NULL auto_increment,
categorie_naam varchar(50) NOT NULL default '',
categorie_moderator int(5) NOT NULL default '0',
categorie_volgorde int(5) NOT NULL default '0',
PRIMARY KEY (categorie_id),
KEY categorie_volgorde (categorie_volgorde)
) TYPE=MyISAM COMMENT='Forum categorien tabel';
# --------------------------------------------------------

#
# Tabel structuur voor tabel `forum_subforums`
#

CREATE TABLE forum_subforums (
subforum_id int(5) NOT NULL auto_increment,
subforum_naam varchar(50) NOT NULL default '',
subforum_categorieid int(5) NOT NULL default '0',
subforum_volgorde int(5) NOT NULL default '0',
subforum_moderator int(5) NOT NULL default '0',
PRIMARY KEY (subforum_id),
KEY subforum_categorieid (subforum_categorieid,subforum_volgorde)
) TYPE=MyISAM COMMENT='Forum subforum tabel';

Ik heb de volgende query gebruikt om de forums uit te lezen:

SELECT C.categorie_id, C.categorie_naam, S.subforum_id, S.subforum_naam
FROM forum_categorien AS C,forum_subforums AS S
WHERE C.categorie_id = S.subforum_id
ORDER BY C.categorie_id

Dit werkt op zich prima maar zodra er in een categorie meer dan 1 forum zit dan krijg ik problemen. Dus stel ik heb een categorie `blaat` en daarin zitten de forums bla en bloe. Dan laat hij dus alleen bla zien ipv bloe.

Wat ik graag wil is:

hoofdgroep
-Subforum
-Subforum
-Subforum

hoofgroep
-Subforum
-Subforum

etc.

Weet iemand hoe ik mijn query dan moet modificeren om dat te laten werken? Alvast bedankt. :)

Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

SELECT C.categorie_id, C.categorie_naam, S.subforum_id, S.subforum_naam
FROM forum_categorien AS C,forum_subforums AS S
WHERE C.categorie_id = S.subforum_categorieid
ORDER BY C.categorie_id

Who is John Galt?


Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Zoiets?
SQL:
1
2
3
4
SELECT C.categorie_id,C.categorie_naam,S.subforum_id,S.subforum_naam
FROM forum_subforums S
RIGHT JOIN forum_categorien C ON C.categorie_id=S.subforum_categorieid
ORDER BY C.categorie_id


Diclaimer: niet getest ;)

/edit
damn, net te laat :)
Maar het zijn iig 2 verschillende oplossingen...

[ Voor 16% gewijzigd door _Thanatos_ op 30-04-2003 15:30 ]

日本!🎌


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
justmental schreef op 30 april 2003 @ 15:29:
SELECT C.categorie_id, C.categorie_naam, S.subforum_id, S.subforum_naam
FROM forum_categorien AS C,forum_subforums AS S
WHERE C.categorie_id = S.subforum_categorieid
ORDER BY C.categorie_id
_Thanatos_ schreef op 30 april 2003 @ 15:29:
Zoiets?
SQL:
1
2
3
4
SELECT C.categorie_id,C.categorie_naam,S.subforum_id,S.subforum_naam
FROM forum_subforums S
RIGHT JOIN forum_categorien C ON C.categorie_id=S.subforum_categorieid
ORDER BY C.categorie_id


Diclaimer: niet getest ;)

/edit
damn, net te laat :)
Maar het zijn iig 2 verschillende oplossingen...
Die doen het idd beide. Maar ik zit nu dan met het volgende probleem:

Stel ik heb een hoofdgroep test. En daarin zitten de forums test1, test2, en test3. Echter krijg ik dan als output:

Cat: test
subforum: test1

Cat: test
subforum: test2

Cat: test
subforum: test3

Ik zou graag dit willen hebben:

Cat: test
Subforum: test1
Subforum: test2
Subforum: test3

Weet iemand hoe ik dit voor elkaar kan krijgen. :)

Acties:
  • 0 Henk 'm!

Verwijderd

while (get from database)
{

if( $cat != row[cat]) echo cat;

echo subforum

}

dus als de cat veranders echo je de hoofdgroep anders echo je de subforums tot de hoofdgroep verandert....

Ik weet niet of dit soort dingen wel correct zijn in de ogen van programmeurs ? ik gebruik dit soort technieken vaker om minder query's te gebruiken...

[ Voor 29% gewijzigd door Verwijderd op 30-04-2003 17:23 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 30 april 2003 @ 17:22:
while (get from database)
{

if( $cat != row[cat]) echo cat;

echo subforum

}

dus als de cat veranders echo je de hoofdgroep anders echo je de subforums tot de hoofdgroep verandert....

Ik weet niet of dit soort dingen wel correct zijn in de ogen van programmeurs ? ik gebruik dit soort technieken vaker om minder query's te gebruiken...
Dat heb ik dus nu ingevoerd maar hij echo'd nog gewoon vrolijk 3x dezelfde categorie. :?

Acties:
  • 0 Henk 'm!

  • MikeN
  • Registratie: April 2001
  • Laatst online: 11-09 19:11
Verwijderd schreef op 30 April 2003 @ 22:08:
[...]
Dat heb ik dus nu ingevoerd maar hij echo'd nog gewoon vrolijk 3x dezelfde categorie. :?
Het is een beetje halve pseudo code denk ik :)

Iets als:
PHP:
1
2
3
4
5
6
7
8
$lastcat = "";
while($row = mysql_fetch_array($results)){
    if($lastcat != $row['cat']){
        echo $row['cat'];
        $lastcat = $row['cat'];
    }
    echo $row['forum'];
}

zou moeten werken.

[ Voor 11% gewijzigd door MikeN op 30-04-2003 22:30 ]


Acties:
  • 0 Henk 'm!

Verwijderd

LOL jah sry, ik dacht je zou het wel begrijpen :P

mijn fout, volgende keer geef ik het uitgewerkt.

Acties:
  • 0 Henk 'm!

  • cybermans
  • Registratie: Maart 2001
  • Laatst online: 08-09 09:33
m,ijn idee
PHP:
1
2
3
4
5
6
7
$sqlcats="SELECT * FROM cats ORDER BY catid";
$querycats=mysql_query($sqlcats) or die bla bla;
while (result=mysql_fetch_assoc($querycats))
{
    $sql="SELECT * FROM subfora WHERE cat=".$result[catid];
    enz;
}

heb dit ff snel gedaan ivm trein halen

[ Voor 12% gewijzigd door cybermans op 01-05-2003 07:59 ]

Strava | Runkeeper | Endomondo (mijn leikr uploads)


Acties:
  • 0 Henk 'm!

Verwijderd

cybermans schreef op 01 May 2003 @ 07:59:
m,ijn idee
PHP:
1
2
3
4
5
6
7
$sqlcats="SELECT * FROM cats ORDER BY catid";
$querycats=mysql_query($sqlcats) or die bla bla;
while (result=mysql_fetch_assoc($querycats))
{
    $sql="SELECT * FROM subfora WHERE cat=".$result[catid];
    enz;
}

heb dit ff snel gedaan ivm trein halen
dat zijn meer querys.. dat wil hij waarschijnlijk niet..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
MikeN schreef op 30 april 2003 @ 22:29:
[...]

Het is een beetje halve pseudo code denk ik :)

Iets als:
PHP:
1
2
3
4
5
6
7
8
$lastcat = "";
while($row = mysql_fetch_array($results)){
    if($lastcat != $row['cat']){
        echo $row['cat'];
        $lastcat = $row['cat'];
    }
    echo $row['forum'];
}

zou moeten werken.
Yup :*

Bedankt MPP. En de anderen voor de voorgestelde suggesties :)
Pagina: 1