-
Creare un forum in php
Ragazzi sto creando un forum in php...
ma ce un problema...
come posso fare che in base al ultima discussione messa mi visualizza quella...
questo e il codice...
Codice PHP:
<?php
#Includo il file di configurazione
require("config.php");
#Recupero le sezioni esistenti
$query = mysql_query("SELECT * FROM forum_sezioni");
#Recupero alcune informazioni esistenti
$query2 = mysql_query("SELECT * FROM forum_discussione");
#verifichiamo che siano presenti le sezioni
if(mysql_num_rows($query) > 0){
#Stampo la lista di tutti le sezioni
while($risultato = mysql_fetch_array($query)){
$risultato2 = mysql_fetch_array($query2);
#mostro il numero di discussioni relativi ad ogni sezione
$conta = "SELECT COUNT(id_sezione) as conta From forum_discussione WHERE id_sezione='".$risultato['id_sezione']."' ";
$conto = mysql_query($conta);
$tot = mysql_fetch_array($conto);
?>
<tr class="tr">
<td width="2%"><img src="favicon.png" alt=""></td>
<td><a href="forum.php?sez=<?php echo $risultato['id_sezione']; ?>"><?php echo $risultato['titolo_sezione']; ?></a></td>
<td><?php echo $tot['conta']; ?></td>
<td><?php echo $risultato2['titolo_discussione']; ?></td>
<td><?php echo $risultato2['autore_discussione']; ?></td>
</tr>
il problema e qua
Codice PHP:
<td><?php echo $risultato2['titolo_discussione']; ?></td>
<td><?php echo $risultato2['autore_discussione']; ?></td>
-
Sostituisci:
Codice PHP:
$query2 = mysql_query("SELECT * FROM forum_discussione");
Con
Codice PHP:
$query2 = mysql_query("SELECT * FROM forum_discussione ORDER BY id DESC LIMIT 1");
Ammesso che nella tabella forum_discussione esista il campo id.
Saluti!
-
lo sto provando in locale....
funziona ma lo fa vedere sempre nella prima sezione...
nelle altre 2 no....
-
Ragazzi il pulsante edit non ce...
allora i devo fare che le discussione vendono visualizzate in base al ultimo messaggio inserito o dal creatore che sarebbe il primo messaggio o dagli utenti o dal creatore del messaggio che sarebbero gli altri in base alla data....
per prendere la discussione uso
Codice PHP:
mysql_query("SELECT * FROM forum_discussioni WHERE id_sezione='".$_GET['sez']."'");
Codice PHP:
mysql_query("SELECT * FROM forum_risposte WHERE id_sezione='".$_GET['sez']."'");
in poche parole la discussione che come l'ultima risposta ha come orario ultimo inserito venga visualizzato come primo, poi il penultimo e cosi via....
non so come spiegarvelo...
P.s.
Buone Feste^.^
-
Se posso darti un consiglio, usa 1 variabile sola per la query:
Codice PHP:
$conta = "SELECT COUNT(id_sezione) as conta From forum_discussione WHERE id_sezione='".$risultato['id_sezione']."' ";
$conto = mysql_query($conta);
/* falla diventare */
$conto = mysql_query("SELECT COUNT(id_sezione) as conta From forum_discussione WHERE id_sezione='{$risultato[id_sezione]}');
E usa le {graffe} :wink:
-
grazie del consiglio e per stamparla poi...
come dovrebbe essere...
p.s.
sai darmi una mano per l'altra cosa...
-
Basta ordinare i dati per la data:
Codice:
SELECT * FROM forum_discussione WHERE id_sezione='{$risultato[id_sezione]}' ORDER BY campo_data DESC
-
non proprio ti faccio un esempio....
io creo un forum giusto...
tu crei una discussione e io ti rispondo...
poi arriva un altro utente che crea un altra discussione e dovrebbe essere prima della tua...
se poi un altro utente commenta la discussione di prima quella nostra la tua discussione dovrebbe essere prima della sua...
non so come spiegartelo...^^
-
È per questo che solitamente, quando ho bisogno di sviluppare un forum in PHP, non creo una tabella per le discussioni ma solamente una per i messaggi. La tabella ha un campo che definisce se il messaggio è il primo di una discussione, e in caso affermativo allora la discussione si intitola come si intitola il messaggio. In questa maniera ti basta ordinare i messaggi per data e poi visualizzare il primo come titolo della discussione. Lo so che non sono stato molto chiaro ma non credo che ci sia un'altra maniera per spiegartelo.
-
capito ma penso che come faccio io sia molto più facile poi non so ma non so come posso fare quella cosa che metta in ordine le discussioni per data tipo come altervista...^^
tipo qua
http://forum.it.altervista.org/php-m...file-database/
il mio sarà il primo messaggio fino a quando un altro utente con creerà un altra discussione o risponderà ad una discussione...
p.s.
sapete dirmi dove e l'errore
Codice PHP:
<form action=ìì>
<select name="siti" >
<?php
$elenco_argomenti = mysql_query("SELECT * FROM forum_argomenti");
while($elenco_argomenti = mysql_fetch_array(){ ?>
<optgroup label="<?php echo $elenco_argomenti['titolo_argomento']; ?>">
<?php
$elenco_sezioni = mysql_query("SELECT * FROM forum_sezioni WHERE id_argomento='".$elenco_argomenti['id_argomento']."'");
while($elenco_sezioni = mysql_fetch_array($elenco_sezioni)){ ?>
<option value="index.php?sez=<?php echo $elenco_sezioni['id_sezione']; ?>"><?php echo $elenco_sezioni['titolo_sezione']; ?></option>
<?php } ?>
</optgroup>
<?php } ?>
</select>
</form>