PDA

View Full Version : [Forum] per stavolta mi arrendo...


Argosoft
11-06-2005, 21:29
eheh saaaaaaaallveee :) durante lo sviluppo del mio forum mi sono imbattuto in questo fastidioso problema... ho cercato di aggirarlo ma nulla da fare :(

Si tratta di visualizzare quanti post o quanti thread contiene una sezione. Eheh, non solo la sezione stessa, ma anche tutte le sezioni figlie.... in pratica, data una sezione, si deve ricevere la somma di tutti i thread/post che dipendono da essa. Dopo due giorni di scervellamento ci ho rinunciato :cry:

Per semplificare mi basterebbe sapere solamente il numero dei thread. Se riuscite ad aiutarmi vi sposo! :D

tabella sections:

id_section INT NOT NULL AUTO_INCREMENT,
id_parent_section INT NOT NULL,
title VARCHAR(50) NOT NULL,
description VARCHAR(255) NOT NULL,
lvl INT NOT NULL,
position SMALLINT NOT NULL

dove:

id_section: chiave primaria id_parent_section: riferimento alla sezione padre
title
description
lvl: livello della sezione, aggiunto per altri scopi, forse può tornare utile anche in questo caso. In pratica indica il livello "in classifica" :) di ogni sezione, e cioè : una sezione che compare nella index del forum ha livello 0, una eventuale sezione figlia ha livello 1, una sezione figlia della figlia livello 2, etc
position: posizione della sezione, solo per scopi grafici/estetici

tabella threads: [unica cosa importante da sapere è che hanno un riferimento id_section alla sezione a cui appartengono]


:( ... ci vorrebbe usa specie di visita che si usa per gli alberi... però :eek: MAH? e poi con le prestazioni come la mettiamo?
Io ho provato a studiarmi i sorgenti di PHPbb ma non ci ho capito nulla :cry:

h.e.l.p. !!! THANKZ!

RaouL_BennetH
11-06-2005, 21:55
prima di sparare qualsiasi cassata, ma intendi un conteggio di record che eventualmente ti dia anche la somma?!?

Argosoft
11-06-2005, 23:16
prima di sparare qualsiasi cassata, ma intendi un conteggio di record che eventualmente ti dia anche la somma?!?

hmmm si ! in pratica mi serve la somma di tutti i thread che dipendono da una certa sezione. A complicare tutto c'è il fatto che possono esistere delle sottosezioni! T_T (quindi da includere nel conteggio...)

kk3z
12-06-2005, 15:07
phpbb non è il forum più adatto per quello che cerchi te, dato che non implementa i sub-sub-forums, dovresti guardare il codice dell'invision 2.0 o di vBulletin...

EDIT: potresti aggiungere alla tabella sections una colonna "num_posts" e "num_topics" e ogni volta che viene aperto un topic aggiungi uno a quel valore e ricorsivamente al valore del parent e del parent del parent fino a quando non raggiungi (per esempio) -1, che sarebbe il forum che non ha parent

Argosoft
12-06-2005, 23:27
phpbb non è il forum più adatto per quello che cerchi te, dato che non implementa i sub-sub-forums, dovresti guardare il codice dell'invision 2.0 o di vBulletin...

EDIT: potresti aggiungere alla tabella sections una colonna "num_posts" e "num_topics" e ogni volta che viene aperto un topic aggiungi uno a quel valore e ricorsivamente al valore del parent e del parent del parent fino a quando non raggiungi (per esempio) -1, che sarebbe il forum che non ha parent

hmmmmmm................... interesting! potrei persino riutilizzare il Generatore di Mega Self Join! :)



però siccome ho la crapa di marmo, nel frattempo vorrei sapere se esiste un modo per fare una somma giganteeee!!!! :D


ciau e grazie!!

cionci
12-06-2005, 23:41
L'unico modo è memorizzarsi il numero di messaggi all'interno del record della sezione relativa...come ti è stato suggerito...
In alternativa ci potrebbe essere un altro metodo...non è stilisticamente bella, ma funziona...

Memorizzi comunque il numero di messaggi all'interno di ogni sezione, ma solo quelli contenuti nella sezione stessa (devi aggiornare un solo record all'inserimento o lo spostamento di un thread)...
Metti una stringa all'interno di ogni sezione contenente la lista delle sezioni di cui quella sezione è sottosezione...

Ad esempio:

lista_padri: 4_12_20_

In questo modo se lista_padri contiene la sezione di cui devi contare i messaggi allora aggiungi i messaggi di quella sezione al conteggio...

Argosoft
12-06-2005, 23:56
mi arrendo all'evidenza :D

grazie 1000000 !!!!!!!! comincerò ad adattare la funzione joinosa allo scopo!



..però domani :P


ciao e ancora grazzzzie!

cionci
13-06-2005, 09:15
Mi è venuto in mente un modo simile a quello sopra ancora più semplice...

Aggiungendo solo il contatore dei messaggi contenuti nella relativa sezione alla tabella sopra, pootresti esprimere la stringa che avevo scritto tramite una tabella...

Semplicemente in questo modo:

Tabella relatives:

id_section INT NOT NULL
id_relative INT NOT NULL
distance INT NOT NULL

Con questa tabella potresti eliminare la voce id_parent dalla tabella precedente...

Ovviamente distance indica quanti livelli di distanza ci sono...
Ad esempio pere esprimere una situazione del genere:

root(-1)
|-----Hardware(1)
| |-------CPU(7)
| | |-------AMD(6)
| | |-------Intel(5)
| |
| |-------Schde madri(4)
|
|-----Software(2)
|-------Programmazione(3)

id_s id_p dist
1 -1 0
2 -1 0
3 -1 1
4 -1 1
5 -1 2
6 -1 2
7 -1 1
3 2 0
4 1 0
7 1 0
5 1 1
6 1 1
5 7 0
6 7 0