Creare un forum in php

  • Creatore Discussione Creatore Discussione angel
  • Data di inizio Data di inizio

angel

Utente Attivo
2 Nov 2009
109
0
0
Ciao a tutti....
Ho letto l'articolo riguardante come creare un forum ma ci sono alcune cose che non vanno....
sapete darmi una mano....^^
se si posto i codici della tabella...
 
ok....
mi spiego...
ho creato una tabella cosi..
PHP:
CREATE TABLE `forum_sezioni`(
            `id_sezione` INT(11) NOT NULL AUTO_INCREMENT,
            `titolo_sezione` VARCHAR(255) NOT NULL DEFAULT '',
             PRIMARY KEY (`id_sezione`)
)TYPE=MyISAM AUTO_INCREMENT=1;
e un altra cosi
PHP:
CREATE TABLE `forum_discussione`(
            `id_discussione` INT(11) NOT NULL AUTO_INCREMENT,
            `id_sezione` VARCHAR(255) NOT NULL DEFAULT '',
            `data_discussione` VARCHAR(255) NOT NULL DEFAULT '',
            `autore_discussione` VARCHAR(255) NOT NULL DEFAULT '',
            `titolo_discussione` VARCHAR(255) NOT NULL DEFAULT '',
            `testo_discussione` text NOT NULL,
PRIMARY KEY (`id_discussione`)
)TYPE=MyISAM AUTO_INCREMENT=1
ma non so come fare ha memorizzare i messaggi di risposta per ogni discussione...

hai consigli su come sistemare al meglio le tabelle...
 
Ti consiglio di creare una tabella forum_lite_replies in cui memorizzi l'ID del thread e tutti i dati della risposta. Poi le visualizzi insieme al messaggio principale e nella pagina della visione di un thread inserisci il link alla risposta.
 
potresti farmi un esempio di come creare questa tabella....
come al solito dovrebbe salvare
autore,data,id_discussione,testo,eccc...
 
PHP:
CREATE TABLE `forum_sezioni`(
            `id_sezione` INT(11) NOT NULL AUTO_INCREMENT,
            `titolo_sezione` VARCHAR(255) NOT NULL DEFAULT '',
             PRIMARY KEY (`id_sezione`)
)TYPE=MyISAM AUTO_INCREMENT=1;  

CREATE TABLE `forum_discussione`(
            `id_discussione` INT(11) NOT NULL AUTO_INCREMENT,
            `id_sezione` VARCHAR(255) NOT NULL DEFAULT '',
            `data_discussione` VARCHAR(255) NOT NULL DEFAULT '',
            `autore_discussione` VARCHAR(255) NOT NULL DEFAULT '',
            `titolo_discussione` VARCHAR(255) NOT NULL DEFAULT '',
            `testo_discussione` text NOT NULL,
PRIMARY KEY (`id_discussione`)
)TYPE=MyISAM AUTO_INCREMENT=1 

CREATE TABLE `forum_risposta`(
            `id_risposta` INT(11) NOT NULL AUTO_INCREMENT,
            `id_discussione` VARCHAR(255) NOT NULL DEFAULT '',
            `data_risposta` VARCHAR(255) NOT NULL DEFAULT '',
            `autore_risposta` VARCHAR(255) NOT NULL DEFAULT '',
            `oggetto_risposta` VARCHAR(255) NOT NULL DEFAULT '',
            `messaggio_risposta` VARCHAR(255) NOT NULL DEFAULT '',
             PRIMARY KEY (`id_risposta`)
)TYPE=MyISAM AUTO_INCREMENT=1;
tipo cosi...


ma e sorto un problema cerco di spiegarti...
ho un problema con creare discussione nelle sezioni....
ho 3 sezioni

sez1
sez2
sez3

nella prima sezione ci sono 2 discussioni
nella 3 ce ne 1
per vedere una discussione bisogna andare nella pagina

thread.php?sez=1&discu=1
sez e la sezione
discu e la discussione

fino ha qui ci 6...
il problema e nella tabella forum_discussione dove ce (id_discussione)
vorrei che aumentare di uno se già esiste quello di prima ma in base ad id_sezione
--------------------------------------
id_discussione--------------id_sezione
1------------------------------------1
2------------------------------------1
3------------------------------------1
1------------------------------------3
2------------------------------------3
1------------------------------------2
3------------------------------------3
--------------------------------------

Vorrei che aumentasse in base alla sezione e possibile fare....^^
cosa devo cambiare nelle tabelle
 
La vedo complicata, comunque non vedo perché ti preoccupi. Nessun forum del mondo usa il sistema da te adottato, per ogni topic c'è un ID univoco. Altrimenti anche nelle risposte dovresti salvare l'ID di sezione, non pensi sia scomodo?
 
hai ragione devo salvare l'id della sezione per poi mostrare nel index il numero dei messaggi....
in totale in quella determinata sezione...

ma per quello che ti dicevo e possibile fare o no....

per ora pensavo di fare cosi
ma per quella cosa non so come sistemare idee...
PHP:
CREATE TABLE `forum_sezioni`(
            `id_sezione` INT(11) NOT NULL AUTO_INCREMENT,
            `titolo_sezione` VARCHAR(255) NOT NULL DEFAULT '',
             PRIMARY KEY (`id_sezione`)
)TYPE=MyISAM AUTO_INCREMENT=1;  

CREATE TABLE `forum_discussione`(
            `id_discussione` INT(11) NOT NULL AUTO_INCREMENT,
            `id_sezione` VARCHAR(255) NOT NULL DEFAULT '',
            `data_discussione` VARCHAR(255) NOT NULL DEFAULT '',
            `autore_discussione` VARCHAR(255) NOT NULL DEFAULT '',
            `titolo_discussione` VARCHAR(255) NOT NULL DEFAULT '',
            `testo_discussione` text NOT NULL,
PRIMARY KEY (`id_discussione`)
)TYPE=MyISAM AUTO_INCREMENT=1 

CREATE TABLE `forum_risposta`(
            `id_risposta` INT(11) NOT NULL AUTO_INCREMENT,
            `id_discussione` VARCHAR(255) NOT NULL DEFAULT '',
            `id_sezione` VARCHAR(255) NOT NULL DEFAULT '',
            `data_risposta` VARCHAR(255) NOT NULL DEFAULT '',
            `autore_risposta` VARCHAR(255) NOT NULL DEFAULT '',
            `oggetto_risposta` VARCHAR(255) NOT NULL DEFAULT '',
            `messaggio_risposta` VARCHAR(255) NOT NULL DEFAULT '',
             PRIMARY KEY (`id_risposta`)
)TYPE=MyISAM AUTO_INCREMENT=1;  

CREATE TABLE `forum_utenti`(
            `id_utenti` INT(11) NOT NULL AUTO_INCREMENT,
            `nome_utenti` VARCHAR(255) NOT NULL DEFAULT '',
            `password_utenti` VARCHAR(255) NOT NULL DEFAULT '',
            `data_utenti` VARCHAR(255) NOT NULL DEFAULT '',
            `mail_utenti` VARCHAR(255) NOT NULL DEFAULT '',
            `attivo_utenti` enum('0','1') NOT NULL default '0',
             PRIMARY KEY (`id_utenti`)
)TYPE=MyISAM AUTO_INCREMENT=1;
 
Ultima modifica:
Ti ho già detto che solo con il database sarebbe impossibile, perché non gestisce correttamente gli indici. Ti servirebbe una libreria in PHP che simula la funzione AUTO_INCREMENT e gestisce gli ID come dici tu.

Ma ti ripeto la mia domanda: a che cosa ti serve? Non so se te ne rendi conto, ma è una cosa totalmente inutile e nessun CMS usa il sistema che vorresti adottare, né lo farà mai. Perché? Semplicemente perché è scomodissimo!
 
No, un momento, non capisco una cosa. Io mi riferisco al fatto che tu voglia far partire per ogni categoria l'ID del topic da uno. Ma capisci che così complichi solo il codice? Altro che renderlo più pulito, dovrai aggiungere qualche decina di righe senza senso! Probabilmente, in futuro, se qualcuno vedesse ciò che hai scritto ti riderebbe in faccia.
 
secondo te va bene cosi....
secondo te potrebbe andare.....:mavieni:
PHP:
CREATE TABLE `forum_sezioni`(
            `id_sezione` INT(11) NOT NULL AUTO_INCREMENT,
            `titolo_sezione` VARCHAR(255) NOT NULL DEFAULT '',
             PRIMARY KEY (`id_sezione`)
)TYPE=MyISAM AUTO_INCREMENT=1;  

CREATE TABLE `forum_discussione`(
            `id_discussione` INT(11) NOT NULL AUTO_INCREMENT,
            `id_sezione` VARCHAR(255) NOT NULL DEFAULT '',
            `data_discussione` VARCHAR(255) NOT NULL DEFAULT '',
            `autore_discussione` VARCHAR(255) NOT NULL DEFAULT '',
            `titolo_discussione` VARCHAR(255) NOT NULL DEFAULT '',
            `testo_discussione` text NOT NULL,
PRIMARY KEY (`id_discussione`)
)TYPE=MyISAM AUTO_INCREMENT=1 

CREATE TABLE `forum_risposta`(
            `id_risposta` INT(11) NOT NULL AUTO_INCREMENT,
            `id_discussione` VARCHAR(255) NOT NULL DEFAULT '',
            `id_sezione` VARCHAR(255) NOT NULL DEFAULT '',
            `data_risposta` VARCHAR(255) NOT NULL DEFAULT '',
            `autore_risposta` VARCHAR(255) NOT NULL DEFAULT '',
            `oggetto_risposta` VARCHAR(255) NOT NULL DEFAULT '',
            `messaggio_risposta` VARCHAR(255) NOT NULL DEFAULT '',
             PRIMARY KEY (`id_risposta`)
)TYPE=MyISAM AUTO_INCREMENT=1;  

CREATE TABLE `forum_utenti`(
            `id_utenti` INT(11) NOT NULL AUTO_INCREMENT,
            `nome_utenti` VARCHAR(255) NOT NULL DEFAULT '',
            `password_utenti` VARCHAR(255) NOT NULL DEFAULT '',
            `data_utenti` VARCHAR(255) NOT NULL DEFAULT '',
            `mail_utenti` VARCHAR(255) NOT NULL DEFAULT '',
            `attivo_utenti` enum('0','1') NOT NULL default '0',
            `gruppi_utenti` VARCHAR(255) NOT NULL DEFAULT 'utente',
            `messaggi_utenti` INT(11) NOT NULL DEFAULT '0',
            `avatar_utenti` VARCHAR(255) NOT NULL DEFAULT '',
             PRIMARY KEY (`id_utenti`)
)TYPE=MyISAM AUTO_INCREMENT=1;
 
ciao
sono perfettamente d'accordo con alessandro1897.
poi un paio di cose
quando ti porti dietro l'id (o sezione o discussione o risposta) mantieni lo stesso tipo INT(11), poi per le date (secondo me) è megio usare INT(...) al posto di varchar ed utilizzare le date in formato timestamp, sono molto più comode per eventuali ordinameni per data, vi si possono effettuare facilmente operazioni e poi le trasformi a monitor come vuoi

poi, ma perchè non usi phpbb
 
^^ perché ne voglio creare uno per me...
potresti postarmi il codice delle tabelle come secondo te deve essere....
scritto...
 

Discussioni simili