Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Community > Tech
 
[Forum PHP] ...thread e post...
Clicca QUI per vedere il messaggio nel forum
Hamelin
Sto provando a costruire un forummino semplice semplice per studio sul mio pc... Apache/PHP/MySQL, ovviamente...
L'idea sarebbe un forum unico, non diviso per argomenti. Il problema è questo: ho bisogno (vero?) di avere un numero di identificazione per ogni post, ma anche un ID per sapere a quale thread il dato post appartiene... ora, se per l'ID del post basta che nella tabella inserisca un campo tipo:

INT (4) UNSIGNED auto_increment not null

(ma il not null mi serve in questo caso?), per l'ID del thread (chiamiamolo così) come faccio?: faccio una seconda tabella? Con che campi? Come la concilio con la prima? HELP!!!

korn
E' molto più semplice di quel che pensi :)

Io farei così:

Crea un campo ID_THREAD di tipo INT in cui:

- se il valore è 0 significa che quel post è l'inizio di un thread

- se il valore non è 0 significa che quel post è una risposta ad un thread il cui ID è il valore stesso

Per ordinare correttamente la sequenza dei thread e dei post ti consiglieri di utilizzare un campo contenente un timestamp unix, ma con l'ID auto_increment in teoria basterebbe ordinarli per ID per avere la sequenza corretta (teoricamente non dovrebbe riutilizzare come ID eventuali valori di post cancellati, cosa che invece creerebbe dei problemi di ordinamento).

Napolux
Originally posted by korn
E' molto più semplice di quel che pensi :)

Io farei così:

Crea un campo ID_THREAD di tipo INT in cui:

- se il valore è 0 significa che quel post è l'inizio di un thread

- se il valore non è 0 significa che quel post è una risposta ad un thread il cui ID è il valore stesso

Per ordinare correttamente la sequenza dei thread e dei post ti consiglieri di utilizzare un campo contenente un timestamp unix, ma con l'ID auto_increment in teoria basterebbe ordinarli per ID per avere la sequenza corretta (teoricamente non dovrebbe riutilizzare come ID eventuali valori di post cancellati, cosa che invece creerebbe dei problemi di ordinamento).


:sbav:

Questa idea non mi sarebbe mai venuta in 5000 anni... :D

Korn, ti devo frequentare piu' spesso :asd:

Mino
giusto per curiosita': il vbulletin (questo forum) e il phpbb utilizzano due tabelle, una per i thread e una per i post.

Quella dei thread include principalmente:
- id del thread "autoincrementativo"
- topic
- id dell'autore
- timestamp, ecc ecc

Quella dei post:
- id del post "autoincrementativo"
- id del thread a cui il post appartiene
- titolo e testo del post
- id dell'autore
- timestamp, ecc ecc

In questo modo le pagine vengono ricostruite con una join (in realta' nel vb viene fatto con una select, per motivi di prestazioni).

Hamelin
Originally posted by korn
- se il valore è 0 significa che quel post è l'inizio di un thread

- se il valore non è 0 significa che quel post è una risposta ad un thread il cui ID è il valore stesso
Ma poi per visualizzare il topic devo fare una query più complicata, no? Non è meglio ch'io copi anche nei post iniziali l'id_thread corrispettivo? Se uso una sola tabella non posso far altro che usare l'id del post iniziale come id del thread, nevvero?

korn
Originally posted by Hamelin
Ma poi per visualizzare il topic devo fare una query più complicata, no? Non è meglio ch'io copi anche nei post iniziali l'id_thread corrispettivo? Se uso una sola tabella non posso far altro che usare l'id del post iniziale come id del thread, nevvero?


Macché complicazioni! :)

Per ottenere l'elenco dei thread usa questa:

SELECT * FROM tabella_post WHERE ID_THREAD = 0 ORDER BY ID DESC

("DESC" te li ordina dal più nuovo al più vecchio, se non metti "DESC" te li ordina dal più vecchio al più nuovo)

Per leggere un thread usa questa:

SELECT * FROM tabella_post WHERE ID = valore OR ID_THREAD = valore ORDER BY ID

(senza DESC stavolta, perché vanno in ordine cronologico ovviamente... quindi verrà prima il post iniziale e poi tutte le risposte nell'ordine in cui sono state postate)

:)

Hamelin
C'hai raggione di brutto!! Grazie mille, korn...

AlphaGamma
L'ho sempre detto Korn che sei un figo! :)
A cosa ci serve il Vbulletin? C'è Korn... :D

Hamelin
Ma i file delle varie sessioni PHP vengono cancellati automaticamente dai servizi di hosting?

Chiedo perché, provando in locale, mi rimangono e intasano il mio hd (...solo qualche byte... :asd: )...

Oppure c'è un modo per usare session_destroy() quando un utente chiude il browser? (...come sarebbe possibile?)

Denghiu for anzuers...

holylaw
io sapevo che le sessioni venivano distrutte automaticamente quano si chiude il browser......

Hamelin
Sì, lo so... ma sul mio pc non è così!...mah...

korn
La sessione dovrebbe chiudersi automaticamente dopo che è passato, dalla chiusura del browser o dall'uscita dal sito, il tempo di "timeout" impostato per gli script.

Hamelin
Grazie korn!

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate