[PHP] Forum frontpage in 1 query? kan dat?

Pagina: 1
Acties:

  • RRX
  • Registratie: Mei 2000
  • Laatst online: 25-08 23:43

RRX

@life-

Topicstarter
als de frontpage van je forum er zo uitziet:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
active forum topics posts last post moderator                
__categorie_____________________________________
--FORUM----------------------------------------
--FORUM----------------------------------------
--FORUM----------------------------------------
__categorie_____________________________________
--FORUM----------------------------------------
--FORUM----------------------------------------
--FORUM----------------------------------------
__categorie_____________________________________
--FORUM----------------------------------------
--FORUM----------------------------------------
--FORUM----------------------------------------

dan kan dat nooit in 1 Query toch? of heb ik dat mis?

ik heb nu een while loopje
in het kort:
PHP:
1
2
3
4
5
6
7
<?
$get_cats = mysql_query(SELECT * FROM cat);
while($cat = mysql_fetch_object($get_cat)){
$get_forums = mysql_query(SELECT * FROM forums,cat WHERE cat_id = forum_cat_ID AND forum_cat_id = $cat->cat_id);
}
//ik haal natuurlijk nog meer informatie op
?>

Waar het mij om gaat is, nu krijg ik er met elk nieuw forum een onderwerp bij :( en dat wil ik niet :)

is dit mogelijk in 1 query, of niet???

mijn T.net systeemspecspagina


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

ja dit is mogelijk met 1 query, maar wordt wel (redelijk) lastig :)

Je laat ze sorteren op catNaam, en je houdt bij bij welke naam je zit, Als je een andere naam tegen komt zit je in een andere category en dan print je die..

  • RRX
  • Registratie: Mei 2000
  • Laatst online: 25-08 23:43

RRX

@life-

Topicstarter
Op vrijdag 11 januari 2002 00:25 schreef wasigh het volgende:
ja dit is mogelijk met 1 query, maar wordt wel (redelijk) lastig :)

Je laat ze sorteren op catNaam, en je houdt bij bij welke naam je zit, Als je een andere naam tegen komt zit je in een andere category en dan print je die..
good idea (edit: damn, hoe schreef je idee ook alweer in het engels |:() :)

mijn T.net systeemspecspagina


  • RRX
  • Registratie: Mei 2000
  • Laatst online: 25-08 23:43

RRX

@life-

Topicstarter
dan loop ik toch tegen een probleem aan, ik kan dus niet:
code:
1
count(`topic_ID`) AS `aantal_topics`,count(`reactie_ID`) AS `aantal_reacties`

als ik alleen count(`topic_ID`) AS `aantal_topics`, doe dan kan het wel, maar als ik count(`reactie_ID`) AS `aantal_reacties` erbij doe, geeft ie bij aantal_topics oók het aantal reacties :?

mijn T.net systeemspecspagina


  • AK47
  • Registratie: Juli 2001
  • Laatst online: 04-05-2024
Als alles in een table staat zou het wel mogelijk zijn bijvoorbeeld via:
PHP:
1
2
3
4
5
6
<?
while (list ($bla, $bla2) = mysql_fetch_row(mysql_db_query("dbNaam", "SELECT * FROM blaat"))) {
     echo $bla;
     echo $bla2;
}
?>

Zoiets staat ook in de php manual, onder list...

  • RRX
  • Registratie: Mei 2000
  • Laatst online: 25-08 23:43

RRX

@life-

Topicstarter
Op vrijdag 11 januari 2002 10:07 schreef AK47 het volgende:
Als alles in een table staat zou het wel mogelijk zijn bijvoorbeeld via:
PHP:
1
2
3
4
5
6
<?
while (list ($bla, $bla2) = mysql_fetch_row(mysql_db_query("dbNaam", "SELECT * FROM blaat"))) {
     echo $bla;
     echo $bla2;
}
?>

Zoiets staat ook in de php manual, onder list...
ten eerste het is een relationele database, dus alles in 1 table :?

ten 2e, op wie antwoord je eigenlijk :?, ik had namelijk een probleem met
code:
1
count(`topic_ID`)

en als het wel een antwoord op mijn vraag was :+, kun je het dan nog ff wat duidelijker uitleggen ;)

mijn T.net systeemspecspagina


  • RRX
  • Registratie: Mei 2000
  • Laatst online: 25-08 23:43

RRX

@life-

Topicstarter
Op vrijdag 11 januari 2002 00:47 schreef RRX het volgende:
dan loop ik toch tegen een probleem aan, ik kan dus niet:
code:
1
count(`topic_ID`) AS `aantal_topics`,count(`reactie_ID`) AS `aantal_reacties`

als ik alleen count(`topic_ID`) AS `aantal_topics`, doe dan kan het wel, maar als ik count(`reactie_ID`) AS `aantal_reacties` erbij doe, geeft ie bij aantal_topics oók het aantal reacties :?
nobody ?

mijn T.net systeemspecspagina


  • Apache
  • Registratie: Juli 2000
  • Laatst online: 14-09 22:46

Apache

amateur software devver

code van m'n toekomstig forum (ja ik weet dat er html instaat, maar hierdoor is het wel vrij snel :))

word toch opensource dus m'n code is niet geheim :)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?
$forumindex = B_query("
SELECT b_forums.forumID,
       b_forums.catID,
       b_forums.forumName,
       b_forums.forumDescription,
       b_forums.forumThreads,
       b_forums.forumPosts,
       b_categories.catID,
       b_categories.catName,
       b_users.username AS forumMod
FROM b_forums
LEFT JOIN b_categories ON b_forums.catID = b_categories.catID
LEFT JOIN b_users ON b_forums.forumMod = b_users.userID
$qrycatID
ORDER BY b_forums.catID, b_forums.forumID");


for ($i=0;$i<count($forumindex);$i++){

  $lastcat = $forumindex[$i]["catID"];

    if ($lastcat != $currentcat){

      echo "<tr>
              <td colspan='6' bgcolor='$layout[lay_tablebgcolor2]'><a href='index.php?CatID=".$forumindex[$i][catID]."' class='header'>".$forumindex[$i][catName]."</a></td>
            </tr>";

      $currentcat = $forumindex[$i]["catID"];

    }

  echo  "<tr>
          <td width='16' bgcolor='$layout[lay_tablebgcolor1]'>[img]'images/redfolder.gif'[/img]</td>
          <td bgcolor='$layout[lay_tablebgcolor2]' class='text'><a href='showthreads.php?forum=".$forumindex[$i][forumID]."'>".$forumindex[$i][forumName]."</a></td>
          <td width='50' bgcolor='$layout[lay_tablebgcolor1]' align='center' class='text'>".$forumindex[$i][forumThreads]."</td>
          <td width='50' bgcolor='$layout[lay_tablebgcolor2]' align='center' class='text'>".$forumindex[$i][forumPosts]."</td>
          <td width='200' bgcolor='$layout[lay_tablebgcolor1]' align='center' class='text'>Lastpost</td>
          <td width='150' bgcolor='$layout[lay_tablebgcolor2]' align='center' class='text'>".$forumindex[$i][forumMod]."</td>
        </tr>";

}

echo "</table>";
?>

If it ain't broken it doesn't have enough features


  • RRX
  • Registratie: Mei 2000
  • Laatst online: 25-08 23:43

RRX

@life-

Topicstarter
ik heb nu deze query:
code:
1
2
3
4
5
SELECT forum_ID, forum_naam, subforum_ID, subforum_naam, gebruiker_naam, subforum_beschrijving,COUNT(topic_ID) AS topics, UNIX_TIMESTAMP(NOW()) AS now 
FROM forum,subforum,gebruiker,moderator,topic 
WHERE subforum_ID = topic_subforum_ID AND moderator_gebruiker_ID = gebruiker_ID AND moderator_subforum_ID = subforum_ID AND subforum_forum_ID = forum_ID 
GROUP BY subforum_ID 
ORDER BY forum_rang,forum_ID,subforum_ID

ik ga hier alleen niet het aantal reacties tellen, dan word ie namelijk héél traag :(

mijn T.net systeemspecspagina


  • Apache
  • Registratie: Juli 2000
  • Laatst online: 14-09 22:46

Apache

amateur software devver

Op vrijdag 11 januari 2002 19:24 schreef RRX het volgende:
ik heb nu deze query:
code:
1
2
3
4
5
SELECT forum_ID, forum_naam, subforum_ID, subforum_naam, gebruiker_naam, subforum_beschrijving,COUNT(topic_ID) AS topics, UNIX_TIMESTAMP(NOW()) AS now 
FROM forum,subforum,gebruiker,moderator,topic 
WHERE subforum_ID = topic_subforum_ID AND moderator_gebruiker_ID = gebruiker_ID AND moderator_subforum_ID = subforum_ID AND subforum_forum_ID = forum_ID 
GROUP BY subforum_ID 
ORDER BY forum_rang,forum_ID,subforum_ID

ik ga hier alleen niet het aantal reacties tellen, dan word ie namelijk héél traag :(
reactie's tel je niet on the fly, die hou je bij in je db als iemand een nieuw topic start updat eje ook forum db, zelfde voor een reply op de topics tabel ... zo denk ik dat je een hoop snelheid kan winnen, als je daar dan nog rekening mee houdt als je een reply / topic etc delete.

en dan kan je nog als extraatje een script schrijven dat je tellers update (hertelt)

If it ain't broken it doesn't have enough features


  • RRX
  • Registratie: Mei 2000
  • Laatst online: 25-08 23:43

RRX

@life-

Topicstarter
Op vrijdag 11 januari 2002 19:30 schreef Apache het volgende:

[..]

reactie's tel je niet on the fly, die hou je bij in je db als iemand een nieuw topic start updat eje ook forum db, zelfde voor een reply op de topics tabel ... zo denk ik dat je een hoop snelheid kan winnen, als je daar dan nog rekening mee houdt als je een reply / topic etc delete.

en dan kan je nog als extraatje een script schrijven dat je tellers update (hertelt)
dat ga ik ook doen :)

dit word mijn nieuwe frontpage:
http://212.120.104.227/forum/?test
PHP/MySQL: doen er nu maar 0.04089 sec over :) op een PII 333 :)

mijn T.net systeemspecspagina


  • StephanL
  • Registratie: Juni 2001
  • Laatst online: 11-09 18:43
LOL gaat iedereen opeens weer forums maken?, ik wilde er ook al één maken in mijn vrije tijd en je leert best veel op deze manier *D

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 14-09 22:46

Apache

amateur software devver

Op vrijdag 11 januari 2002 20:04 schreef RRX het volgende:

[..]

dat ga ik ook doen :)

dit word mijn nieuwe frontpage:
http://212.120.104.227/forum/?test
PHP/MySQL: doen er nu maar 0.04089 sec over :) op een PII 333 :)
mijne deed iets van een 0.015xxx over op een celly 266 zonder cache :)

vnadaag komt m'n server terug up dan edit ik dit bericht wel met een linkje.

If it ain't broken it doesn't have enough features


  • RRX
  • Registratie: Mei 2000
  • Laatst online: 25-08 23:43

RRX

@life-

Topicstarter
Op zaterdag 12 januari 2002 12:18 schreef Apache het volgende:

[..]

mijne deed iets van een 0.015xxx over op een celly 266 zonder cache :)

vnadaag komt m'n server terug up dan edit ik dit bericht wel met een linkje.
incl. controleren wat voor gebruiker, IVM weergegeven topics, en aantal topics, en aantal reacties, en laatste post, en actief of niet?

mijn T.net systeemspecspagina


Verwijderd

Niet doen, beter iets meer queries dan een TE moeilijke query!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 12 januari 2002 16:53 schreef GDOG het volgende:
Niet doen, beter iets meer queries dan een TE moeilijke query!
De query hier is helemaal niet moeilijk :?

  • razor-x
  • Registratie: Februari 2001
  • Laatst online: 05-06 07:37
Op vrijdag 11 januari 2002 20:04 schreef RRX het volgende:

[..]

dat ga ik ook doen :)

dit word mijn nieuwe frontpage:
http://212.120.104.227/forum/?test
PHP/MySQL: doen er nu maar 0.04089 sec over :) op een PII 333 :)
HTML: 6.61 sec. PHP/MySQL: 0.03321 sec.
Wat is het verschil tussen de HTML tijd en de php/mysql tijd?

  • RRX
  • Registratie: Mei 2000
  • Laatst online: 25-08 23:43

RRX

@life-

Topicstarter
Op zaterdag 12 januari 2002 18:02 schreef razor-x het volgende:

[..]


[..]

Wat is het verschil tussen de HTML tijd en de php/mysql tijd?
als je een verbinding van 1Kbyte per seconde hebt, dan duurt het lang voordat je iets op het scherm hebt, omdat je browser de handel nog binnen moet halen, terwijl php&mysql allang klaar zijn :)

mijn T.net systeemspecspagina


  • razor-x
  • Registratie: Februari 2001
  • Laatst online: 05-06 07:37
Op zondag 13 januari 2002 16:04 schreef RRX het volgende:

[..]

als je een verbinding van 1Kbyte per seconde hebt, dan duurt het lang voordat je iets op het scherm hebt, omdat je browser de handel nog binnen moet halen, terwijl php&mysql allang klaar zijn :)
Hoe bereken je dat dan?

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Op zondag 13 januari 2002 16:34 schreef razor-x het volgende:

[..]

Hoe bereken je dat dan?
javascript

  • razor-x
  • Registratie: Februari 2001
  • Laatst online: 05-06 07:37
Op zondag 13 januari 2002 16:43 schreef PlayR het volgende:

[..]

javascript
Ah.. bedankt

  • RRX
  • Registratie: Mei 2000
  • Laatst online: 25-08 23:43

RRX

@life-

Topicstarter
Op zondag 13 januari 2002 16:34 schreef razor-x het volgende:

[..]

Hoe bereken je dat dan?
in javascript het begin van de pagina de tijd opmeten, en helemaal onderaan, dan heb je dus de tijd, die nodig is geweest om de html op te halen :)

mijn T.net systeemspecspagina


  • RRX
  • Registratie: Mei 2000
  • Laatst online: 25-08 23:43

RRX

@life-

Topicstarter
Op zaterdag 12 januari 2002 12:18 schreef Apache het volgende:

[..]

mijne deed iets van een 0.015xxx over op een celly 266 zonder cache :)

vnadaag komt m'n server terug up dan edit ik dit bericht wel met een linkje.
is je server al on-line ondertussen??

mijn T.net systeemspecspagina


  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 15-09 23:45
Jammer dat topics over het maken van een forum altijd weer uitlopen op: kijk eens hoe snel mijn forum is!

* Rense Klinkenberg had gehoopt hier nutige posts terug te kunnen vinden over het optimaliseren van scripts / database-structuur, maar daar zijn er maar een paar van :(

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

freak007:
* drm had gehoopt hier nutige posts terug te kunnen vinden over het optimaliseren van scripts / database-structuur, maar daar zijn er maar een paar van :(
Een van de belangrijkste dingen in het optimaliseren van je db is indexen zetten op velden die je count. Je count meestal primary keys, maar daar zet je sowieso een index op. Als je dat niet al doet, dan moet je dat meteen wel gaan doen *D

Indexen op foreign keys ook altijd doen (want daar wordt op geselecteerd).
RRX:
code:
1
2
3
4
5
SELECT forum_ID, forum_naam, subforum_ID, subforum_naam, gebruiker_naam, subforum_beschrijving,COUNT(topic_ID) AS topics, UNIX_TIMESTAMP(NOW()) AS now 
FROM forum,subforum,gebruiker,moderator,topic 
WHERE subforum_ID = topic_subforum_ID AND moderator_gebruiker_ID = gebruiker_ID AND moderator_subforum_ID = subforum_ID AND subforum_forum_ID = forum_ID 
GROUP BY subforum_ID 
ORDER BY forum_rang,forum_ID,subforum_ID
Volgens mij zijn JOIN queries ook sneller, maar dat weet ik niet zeker...
GDOG:
Niet doen, beter iets meer queries dan een TE moeilijke query!
Een query is nooit te moeilijk. Anders hadden ze de taal wel aangepast ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • RRX
  • Registratie: Mei 2000
  • Laatst online: 25-08 23:43

RRX

@life-

Topicstarter
Op maandag 14 januari 2002 09:40 schreef drm het volgende:

[..]

[..]

[..]

Volgens mij zijn JOIN queries ook sneller, maar dat weet ik niet zeker...

[..]

[..]
ik zal het eens proberen :)

mijn T.net systeemspecspagina


  • RRX
  • Registratie: Mei 2000
  • Laatst online: 25-08 23:43

RRX

@life-

Topicstarter
Op maandag 14 januari 2002 10:08 schreef RRX het volgende:

[..]

ik zal het eens proberen :)
Ik heb het nu met JOINS gedaan:

Zonder joins: 0.04782 sec.
Met Joins: 0.04711 sec

Dus het scheelt nauwelijks wat :(

mijn T.net systeemspecspagina

Pagina: 1