Pagina di forum

icex

Nuovo Utente
14 Ago 2012
29
0
0
Buon pomeriggio ragazzi.
Avrei intenzione di implementare il sito che sto sviluppando (che praticamente è un blog) con una sezione stile forum.
Mi spiego meglio: in questa sezione dovrebbe essere possibile aggiungere delle discussioni e rispondere nelle discussioni stesse. L'importante è che, ovviamente, il tutto venga salvato e sia visibile in una successiva visita. Praticamente una vera e propria pagina di forum.
Il problema è molto semplice: non so da dove incominciare :) quindi una qualche delucidazione (che non sia necessariamente fatta da script "precotti" ma mi va bene anche una procedura da seguire con qualche esempio, dato che vorrei capire come funziona il fatterello :fonzie: ) mi farebbe molto piacere :) vi ringrazio in anticipo ;)
 

Malware

Utente Attivo
19 Lug 2012
112
0
0
Ciao!

Una pagina di forum con sezioni (metodo A) o solamente delle discussioni da inserire (metodo B)?

Metodo B:
Io farei una cosa del genere:



TABELLA discussioni
Id-Testo-Data-Ora

TABELLA risposte
Id-Id_discussione-Testo-Data-Ora



Poi con un for visualizzi tutte le discussioni, e quando un'utente ne clicca una:
http://tuo_sito.com/forum/index.php?view_disc=Id

Id=id della tabella discussioni

Visualizzi tutto e poi dall'id discussione richiami tutte le risposte dalla tabella risposte e le visualizzi

Quando un utente vuole aggiungere una risposta aggiungi una riga a Risposte mettendo l'id automatico (AUTO_INCREMENT) e come id_discussione l'id della discussione

Ho fatto un po' di casino ma forse riesci a capire

Per il metodo A invece la cosa è leggermente più complicata, ma possibile smanettando un po'.

Ma perché non ti limiti a integrare una piattaforma già fatta? Tipo SMF?
 

icex

Nuovo Utente
14 Ago 2012
29
0
0
Ma perché non ti limiti a integrare una piattaforma già fatta? Tipo SMF?

Per il semplice motivo che andrei a perdere tutto il lavoro in PHP che ho fatto finora. O sbaglio? Io ho visto (per quanto rigurada la parte di blog) che Joomla! è un'ottima piattaforma ma non mi va di utilizzarla proprio per i suddetti motivi. D'altronde "chi lascia la strada vecchia per la strada nuova...." :D
Se poi c'è la possibilità di integrare il lavoro svolto, ben venga! :)

In ogni caso hai colto in pieno quello che ti ho chiesto... sono interessato semplicemente alla tipologia B che mi hai proposto e d'altronde, per ciò che ho intenzione di fare, non mi servono neanche le risposte!! :D quindi è ancora più semplificato il lavoro! Ma, d'accordo sulla creazione di una tabella nel db, non mi è tanto chiaro come lo vado a visualizzare nel sito :confused:

Se potresti spiegarti meglio te ne sarei molto grato :beer:
 

Malware

Utente Attivo
19 Lug 2012
112
0
0
Prendi in considerazione l'idea di un'estensione di joomla per implementare un forum.
Lavoro già fatto e abbastanza sicuro.



Comunque se vuoi farlo tu...
torniamo alle tabelle


TABELLA discussioni
Id-Testo-Data-Ora

TABELLA risposte
Id-Id_discussione-Testo-Data-Ora

(con id auto_increment)



Intanto facciamo finta che questo è il tuo indirizzo del forum:
http://tuo_sito.com/forum/index.php

Per prima cosa mettici un bel pulsantino "Crea discussione" no?
Un form e poi inserisci il tutto (dopo i controlli da fare sui dati inseriti-controlla questa sezione, ci sono 2 discussione su questo) nella tabella discussioni.
Questo sei in grado di farlo?
 

icex

Nuovo Utente
14 Ago 2012
29
0
0
Prendi in considerazione l'idea di un'estensione di joomla per implementare un forum.
Lavoro già fatto e abbastanza sicuro.



Comunque se vuoi farlo tu...
torniamo alle tabelle


TABELLA discussioni
Id-Testo-Data-Ora

TABELLA risposte
Id-Id_discussione-Testo-Data-Ora

(con id auto_increment)



Intanto facciamo finta che questo è il tuo indirizzo del forum:
http://tuo_sito.com/forum/index.php

Per prima cosa mettici un bel pulsantino "Crea discussione" no?
Un form e poi inserisci il tutto (dopo i controlli da fare sui dati inseriti-controlla questa sezione, ci sono 2 discussione su questo) nella tabella discussioni.
Questo sei in grado di farlo?

Se spieghi così anche un bambino ti capirebbe :D chiarissimo ;) comunque sì sì, questo riesco a farlo... tieni conto che ho creato già diverse pagine, tra cui registrazione, Login e logout, quindi proprio così neo-neo-neofita non sono :D diciamo che sono approdato al secondo "neo" ;)

Comunque una volta fatto questo come posso far sì che i risultati memorizzati in tabella siano visibili nella pagina del sito? E sopratutto come posso fare affinchè le discussioni inserite siano subito visibili all'utente, senza dover per forza aggiornare la pagina?
 

Malware

Utente Attivo
19 Lug 2012
112
0
0
Anche io sono un neofita, ma voglio cercare di aiutare gli altri dove posso, e nel miglior modo possibile.

Mmm allora.

Aggiungiamo alla tabella discussioni il nome della discussione che mi ero dimenticato.
TABELLA discussioni
Id-nome-testo-data-ora

Tu devi scriere il codice per richiamare i dati nella pagina in cui l'utente va appena collegato, in modo che appena si connette esce il forum.
Oppure scegli un'altra pagina, come vuoi.

Io partirei subito con la visualizzazione del nome di ogni disc e quando si clicca su un nome si apre il link per vedere tutta la discussione con le risposte.
Poi la grafica devi curartela te.


PHP:
//Qua i tuoi parametri per connetterti al db

$query="SELECT id,nome FROM discussioni";
$esegui=mysql_query($query); //eseguo la query
$num_discussioni=mysql_num_rows($esegui); //trovo il numero totale di discussioni

If ($num_discussioni==0) {

echo "Nessuna discussione lresente";

}else{

For ($n=0; $n<$num_discussioni; $n++) 
{

$risultato=mysql_fetch_row($esegui);
$id_discussione=$risultato[0];
$nome_disc=$risultato[1];

echo '

<a href="index.php?func=view_disc&id_disc='.id_discussione.'">Nome discussione: '.$nome_disc.'</a>

';

} //fine for
} //fine if se il num di discussioni è diverso da zero


Non ho provato il codice ma dovrebbe andare.
 
Ultima modifica:

icex

Nuovo Utente
14 Ago 2012
29
0
0
Anche io sono un neofita, ma voglio cercare di aiutare gli altri dove posso, e nel miglior modo possibile.

Mmm allora.

Aggiungiamo alla tabella discussioni il nome della discussione che mi ero dimenticato.
TABELLA discussioni
Id-nome-testo-data-ora

Tu devi scriere il codice per richiamare i dati nella pagina in cui l'utente va appena collegato, in modo che appena si connette esce il forum.
Oppure scegli un'altra pagina, come vuoi.

Io partirei subito con la visualizzazione del nome di ogni disc e quando si clicca su un nome si apre il link per vedere tutta la discussione con le risposte.
Poi la grafica devi curartela te.


PHP:
//Qua i tuoi parametri per connetterti al db

$query="SELECT id,nome FROM discussioni";
$esegui=mysql_query($query); //eseguo la query
$num_discussioni=mysql_num_rows($esegui); //trovo il numero totale di discussioni

If ($num_discussioni==0) {

echo "Nessuna discussione lresente";

}else{

For ($n=0; $n<$num_discussioni; $n++) 
{

$risultato=mysql_fetch_row($esegui);
$id_discussione=$risultato[0];
$nome_disc=$risultato[1];

echo '

<a href="index.php?func=view_disc&id_disc='.id_discussione.'">Nome discussione: '.$nome_disc.'</a>

';

} //fine for
} //fine if se il num di discussioni è diverso da zero


Non ho provato il codice ma dovrebbe andare.

In effetti il discorso fila ma non riesco a capire come mai l' IF venga praticamente ignorato. Se invece provo ad eliminare il ciclo FO, viene riconosciuto. Come mai avviene questo?
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciap
intanto prova così
PHP:
<?php
//Qua i tuoi parametri per connetterti al db
$query="SELECT id,nome FROM discussioni";//se hai la data ci starebbe bene ORDER BY data
$esegui=mysql_query($query); //eseguo la query
$num_discussioni=mysql_num_rows($esegui); //trovo il numero totale di discussioni
if ($num_discussioni==0) {
	echo "Nessuna discussione presente";
}else{
	while($risulytato=mysql_fetch_array($esegui)){
		$id_discussione=$risultato[0];//comunque io preferisco scrivere $risultato['nome_del_campo']
		$nome_disc=$risultato[1];
		echo '<a href="index.php?func=view_disc&id_disc='.id_discussione.'">Nome discussione: '.$nome_disc.'</a><br />';
	} //fine for
} //fine if se il num di discussioni è diverso da zero  
?>

poi
1. scrivi le parole chiave di php miniscole if non If for non For
2. indenta il codice, poi fai meno fatica a leggerlo e capire cosa hai fatto
 

icex

Nuovo Utente
14 Ago 2012
29
0
0
Ops! Dovevo indicizzare il php :incazz: quanto tempo che ho perso per questa idiozia -.- comunque, fatto questo, adesso suppongo che per creare una discussione bisognerebbe creare un pulsante nella pagina con questo codice che indirizzi ad una pagina di creazione della discussione stessa.
Questa, munita dei vari campi necessari, andrà a riempire i campi di "discussioni" nel db. Anche i campi data ed ora di inserimento, con gli opportuni strumenti di php, è possibile riempirli senza troppa difficoltà. Ritenete che questo sia giusto?
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
la data/ora puoi inserirli in automatico quando il post viene inviato.
un consiglio per la data e ora (almeno secondo la mia opinione) usa il timestamp (il campo data int(15)) ti risolvi un sacco di problemi
 

icex

Nuovo Utente
14 Ago 2012
29
0
0
ciao
la data/ora puoi inserirli in automatico quando il post viene inviato.
un consiglio per la data e ora (almeno secondo la mia opinione) usa il timestamp (il campo data int(15)) ti risolvi un sacco di problemi

ok grazie del consiglio :) ma quello che chiedo è se sia giusto l'iter da seguire o c'è qualche altra cosa da sapere. Perchè quel "func=view_disc" dopo il "?" nell'URL da linkare mi lasci un po' perplesso. E' già una funzione di php o dovrei crearla io affinchè ogni discussione creata sia correlata alla pagina principale?
 

Malware

Utente Attivo
19 Lug 2012
112
0
0
Ho scritto tutto il codice dall'iphone ieri sera, per quello c'erano iniziali maiuscole.

Mettiamo che quando ti connetti vai alla pagina index.php
Qua potresti inserire qualcosa del tipo:

PHP:
If (!isset($_GET['func'])) { //se non c'è nessuna richiesta particolare...

//qua tutto il codice per vedere le discussioni

}

//se invece un'utente ha cliccato su un link....

If (isset($_GET['func'])) { 

     If ($_GET['func'] == 'view_disc') { //se ha cliccato sul link per vedere una discussione
          //recupero "id_disc" e mostro la discussione
     }


     If ($_GET['func'] == 'new_disc') { //se ha cliccato sul link per scrivere una nuova discussione
          //mostro il form per creare una nuova discussione
     }

}


Io farei così.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
in parte ti ha risposto malware, io ti do una spiegazione teorica
quello che vedi nell'url sono querystringhe che servono per trasmettere alla index i valori che hai estratto

<a href="index.php?func=view_disc&id_disc='.$id_discussione.'">Nome discussione: '.$nome_disc.'</a>

nella pag index.php avrai qualcosa del tipo (ti scrivo in pseudocodice)

$cosa=$_GET['func'];
$quale=$_GET['id_disc'];

se $cosa == view_disc allora estrai la discussione con id == $quale
 

icex

Nuovo Utente
14 Ago 2012
29
0
0
Ragazzi non so come ringraziarvi! Funziona! :D Davvero bello! :D
Però scusate il mio opportunismo ma desidererei un ultimo chiarimento. Attualmente non mi serve, ma nel caso in cui dovessi implementare qualcosa con le risposte, dovrei:
1) creare nel db una tabella "risposte";
2) creare i vari campi tra cui un campo "id" AUTO-INCREMENT da relazionare con l' "id" della tabella discussioni;
3) nel ciclo while (o for) per la visualizzazione delle discussioni ci aggiungo il riferimento anche ai campi di "risposte" oltre a quello di "discussioni" (sempre dove "id_disc"=£id_discussioni);
4) oltre alla SELECT nel suddetto while, ci metto anche un bel ORDER BY per ora e data affinchè le risposte vengano visualizzate in modo corretto.

Questo è l'iter che ho pensato. Ritenete sia giusto?
 

Malware

Utente Attivo
19 Lug 2012
112
0
0
Crei la tabella risposte con due id:
Id: autoincrement e primary key
Id_discussione

Per visualizzare le discussioni attuali mettendo l'ultima creata in cima devi aggiungere alla fine della query: "ORDER BY id DESC"

Oppure al posti di id il campo "timestamp" come ha detto di fare Borgo Italia.
Per visualizzare dal timestamp il gg/mm/aaaa hh:mm ci sono alcuni algoritmi basta che googli
Il timestamp lo trovi con $timestamp=mktime();
 

icex

Nuovo Utente
14 Ago 2012
29
0
0
Crei la tabella risposte con due id:
Id: autoincrement e primary key
Id_discussione

Per visualizzare le discussioni attuali mettendo l'ultima creata in cima devi aggiungere alla fine della query: "ORDER BY id DESC"

Oppure al posti di id il campo "timestamp" come ha detto di fare Borgo Italia.
Per visualizzare dal timestamp il gg/mm/aaaa hh:mm ci sono alcuni algoritmi basta che googli
Il timestamp lo trovi con $timestamp=mktime();

OOOOk :D Perfetto :D ma come mai 2 id? Una non ne basta?
 

Malware

Utente Attivo
19 Lug 2012
112
0
0
In ogni tabella ci dev'essere un campo obbligatorio primary key.
Questo campo dev'essere univoco (si dice così)?
Cioè non possono esistere due id uguali.
Se aggiungi due risposte alla stessa discussione, ci saranno due campi id_discussione contenenti lo stesso valore.
Quindi non puoi utilizzare id_discussione e basta.

Chi ne sa più di me...confermate?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao

In ogni tabella ci dev'essere un campo obbligatorio primary key.
questo dipende ma nel tuo caso e generelmente in quasi tutti si
Questo campo dev'essere univoco (si dice così)?
si
Cioè non possono esistere due id uguali.
si

Se aggiungi due risposte alla stessa discussione, ci saranno due campi id_discussione contenenti lo stesso valore.
Quindi non puoi utilizzare id_discussione e basta.
il discorso è leggermente diverso

tu avrai una tabella "discussioni" con (metto solo alcuni campo con nome autoesplicativo)
Codice:
id_discussione int(12) autoincrement primarykey
testo_discussione longtext


e la tabella "risposte"
Codice:
id_risposta int(12) autoincrement primarykey
id_discussione int(12)
testo_risposta longtext

come vedi entrambe le tabelle hanno il loro id unico (primarykey)
quello che lega la risposta alla discussione è il campo della tabella risposte chiamato id_discussione
 

icex

Nuovo Utente
14 Ago 2012
29
0
0
oK :) grazie ancora ragazzi per l'enorme aiuto che mi avete dato! mi avete salvato da uno stato di inerzia permanente :dormo: Alla prossima :beer:
 
Discussioni simili
Autore Titolo Forum Risposte Data
R [Vendo] forum con +285.000 messaggi + pagina facebook da 5.000 fan + gruppo facebook 700 membri Compravendita siti e domini 2
D [phpBB] [HTML] Problema pagina elenco argomenti (di forum) phpBB 9
E Un utente di questo forum mi ha appena provato a rubare la pagina facebook Annunci servizi di Social Media Marketing 2
T vBulletin 3.8.x E' possibile creare una nuova pagina in PHP nel forum? CMS (Content Management System) 0
S Integrare forum in pagina html HTML e CSS 0
G Pagina html in stringa PHP 2
L Creare ancore interne alla pagina PHP 1
F Aiuto! cambio immagine di sfondo al cambio pagina HTML e CSS 2
Shyson Regex che trova la parola nella pagina jQuery 6
L Eliminazione di una pagina dalla gallery SEO e Posizionamento 0
D Apre il lightbox fuori pagina Javascript 0
K posizionare variabile da pagina html all'iframe. Javascript 1
R jquery che cambia css di un elemento non mi funziona sulla pagina caricata da ajax Ajax 5
U Link a pagina ed esecuzione file PHP 0
S Passare query o utm alla pagina successiva Domini 1
D [Cerco] Pagina Facebook settore calcio Annunci servizi di Social Media Marketing 0
napuleone div centrato alla pagina posto sopra ai contenuti HTML e CSS 1
G Eliminare l'effetto refresh di una pagina internet PHP 8
L Bing prima pagina prima riga; Google mi ignora SEO e Posizionamento 0
P Pagina modifica record che non funziona PHP 0
T Conferma reload pagina Javascript 4
A Submit senza ricaricare la pagina Ajax 2
L Problemi form Pagina php HTML e CSS 3
L php mysql cerca e visualizza pagina PHP 0
S Variabile in post su altra pagina PHP 2
D Visualizzazione pagina basata sul valore di un campo del database PHP 2
D Pagina non trovata Wordpress WordPress 7
E Pagina Cloudflare e captcha Domini 1
W Anomalia Pagina Facebook Social Media Marketing 9
A Aiuto per pagina php PHP 0
T Risolto Redirect a pagina esterna Javascript 2
M Questa pagina non carica correttamente Google Maps: aiuto!! HTML e CSS 1
T Offuscare link pagina web PHP 2
D Stampa a video in altra pagina html Database 3
Cosina script data aggiornamento pagina Javascript 1
Y cambiare sfondo di una pagina Javascript 1
Y Vorrei selezionare un colore di sfondo per una pagina web Javascript 0
S Apertura in una nuova pagina PHP 6
G creazione menu a tendina e invio a pagina php PHP 1
B Stampare una porzione della pagina PHP 0
D Pubblicità Instagram su pagina da 144 mila follower Vendere e Acquistare pubblicita' online 3
A Dare l'accesso ad una pagina solo ad un utente specifico PHP 0
F pagina dinamica PHP PHP 3
W Invio Dati ad un altra pagina Classic ASP 1
Samuele Ronzani Click e reload della pagina PHP 1
M Compilazione automatica campi in input stessa pagina PHP 0
C Statistiche pagina Facebook aziendale Social Media Marketing 2
L titolo del sito nella pagina di ricerca di google SEO e Posizionamento 2
MarcoGrazia Pagina canonical SEO e Posizionamento 0
elpirata Update dinamico informazioni scritte in una pagina php jQuery 11

Discussioni simili