Problema con l'ordine dei topic (Gdrcd5.1) postato il 20/07/2012 15:39:10 nel forum programmazione, gdrcd, open source, hosting
Salve a tutti!
Ho notato che la bacheca del gdrcd5.1 non ordina bene le discussioni in ordine cronologico.
In pratica, se una persona risponde ad una discussione vecchia, questa discussione non viene riportata in cima, anche se risulta essere l'unica discussione attiva.
Per farvi capire meglio il problema, mi aiutero con la seguente immagine:
Come potete notare dalle date cerchiate in rosso, la discussione "2° Discussione" è nata dopo la discussione "1° Discussione". Però, non è la discussione in cui c'è stato l'intervento più recente: dalle date cerchiate in blu potrete notare che la discussione "1° Discussione" ha avuto l'ultimo intervento. Ed è qui che sorge il problema: se si risponde ad una vecchia discussione, questa non sale in cima.
Per quanto riguarda il forum ancora non ho modificato nulla, ogni file è identico e preciso a quello presente nella versione base e non modificata di gdrcd advanced. Ho provato a cercare le cause di questo motivo nel file forum.inc.php, ma non ne sono venuto a capo, non riesco a capire dov'è il problema. Qualsiasi tipo d'aiuto è ben accetto. Grazie per l'attenzione!
Pagine → 1
20/07/2012 17:19:23
eheh, i thread in gdrcd non sono ordinati per ultima risposta, sono ordinati per data di creazione, e da questo punto di vista funziona perfettamente.
Se vuoi fare in modo che vengano ordinati per ultima risposta devi aggiungere un campo nella tabella messaggioaraldo che tenga in memoria la data dell'ultimo post del thread in questione e ordinare in base a quella. Ogni volta che un nuovo post viene messo in un thread dovrai modificare il nuovo campo nel record del thread; e stai attento a gestire bene cosa deve accadere quando cancelli un post!
20/07/2012 18:07:17
20/07/2012 21:42:19
esatto. memorizzarlo per i messaggi non-padre non ha nessuna utilità
22/07/2012 20:31:03
È davvero una bella gatta da pelare, allora.
Ho creato un nuovo campo identico al campo "data_messaggio" (che è il campo che registra la data di creazione del messaggio) e l'ho chiamato "data_riferimento". Però non so come fare per registrare la data solo nei messaggi iniziali, e non ho idea di come fare per aggiornare questa data ogni volta che viene aggiunto un nuovo messaggio alla discussione.
Spulciando il codice del file "forum.inc.php", ho notato che dalla riga 157 (dove comincia la parte relativa alla nuova creazione di messaggi e topic) il titolo viene registrato solo se il messaggio è un messaggio iniziale, quindi volevo realizzare qualcosa di simile anche per la data di riferimento, ma non ci sono riuscito.
Sto brancolando nel buio, e da solo non ne riesco a venire a capo... Non so neanche se sto agendo nella parte corretta del file. Chi mi può dare una mano?
22/07/2012 22:06:49 e modificato da leoblacksoul il 22/07/2012 22:10:45
non andare così in fondo...il tuo problema risolve già alla riga 16 del file forum.inc.php:
22/07/2012 22:27:08 e modificato da dyrr il 22/07/2012 22:28:53
In teoria si potrebbe fare il tutto anche senza aggiungere un nuovo campo alla tabella semplicemente modificando la query che gestisce il recupero dei topic
la query in questione originaria è questa, circa a riga 490-500 di forum.inc.php.
23/07/2012 13:20:48
Vi ringrazio moltissimo! Ho provato entrambe le soluzioni, e funzionano perfettamente sia sulla versione patchata che su quella non patchata del file forum.inc.php
La soluzione di Dyrr ci ho messo un po' a capirla; ho dovuto studiarla un po' prima di capire come funzionasse, perché non conoscevo la funzione COALISCE e non capivo che diavolo fosse. La soluzione di Leoblacksoul, invece l'avevo abbandonata perché non riuscivo a farci nulla, dalla riga 16 ero riuscito solo a creare al massimo un campo "doppione" di data_messaggio.
C'è però un'ultima cosa, che completerà la bacheca del gdrcd5.1 rendendolo un vero e proprio forum, su cui chiedo ancora una volta aiuto.
Studiando queste due soluzioni ho trovato il modo per sperimentare un piccolo script che segni quante volte è stata aperta la discussione, ma lo devo ancora perfezionare.
In pratica ho creato un nuovo campo nel database che ho chiamato "letto" (tipo: int(8), predefinito: 0), ed ho aggiunto il seguente script alla riga 540 (dove parte l'elenco delle discussioni):
<?php gdrcd_query("UPDATE messaggioaraldo SET letto = letto + '1' WHERE id_messaggio = ".gdrcd_filter('out',$row['id_messaggio']).""); ?>
In questo modo, il campo "letto" viene aggiornato... Ma purtroppo non aggiorna solo il topic aperto, ma tutti i topic presenti nella relativa bacheca.
Come posso fare per aggiornare solo il topic che viene aperto?
23/07/2012 14:04:11
Secondo me è sbagliato il punto dove inserisci la query. dovresti inserire una query simile intorno a riga 240 dove visualizza non l'elenco dei topic ma dei messaggi del topic.
Io ho provato con una simile query:
23/07/2012 22:25:14
10/05/2018 12:19:51 e modificato da kyuren il 10/05/2018 12:21:40
Innanzitutto scusate se necroposto questo topic vecchissimo, ma sto cercando di applicare questa soluzione alla versione 5.4.
L'obiettivo è quello di ottenere l'ordinamento dei topic delle bacheche in base all'ultima risposta postata, e non la data di pubblicazione originaria del topic. Come avviene solitamente nei forum, insomma.
Ho cercato di adattare la soluzione di Dyrr:
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, GDRCD, Open Source, Hosting Elenco Forum
Fairy Tail GDR: 🌞 Nuovi filoni e media negli esiti!
Crystal Tokyo: Land ottimizzata per cellulari e tablet
New Orleans → La Città dai Mille Volti: Crime, Feste, Mistero, Voodoo, Natura Incontaminata, Fama, Grattacieli, Luci Splendenti e Ombre Profonde.
Black Sails Chronicles: OFF - Aggiornamenti di Novembre
War Thunder: Ottieni l'AK-225 nell'evento Sea Defender!
Crossout: Evento "Sentiero del Corvo" è iniziato!
RAID Shadow Legends → Plasma i tuoi eroi fino a farli diventare vere e proprie armi viventi e assembla i più epici gruppi d'assalto mai visti finora!
I dati del generatore di rank sono stati aggiornati!
Storie di Agarthi: Esce una nuova Lancetta delle Trame
sheeptamer ha recensito Hikaru No Tohei - Le Luci di Tohei
New Orleans: Modifiche in Inventario
Hero Wars → Costruisci la tua squadra di eroi leggendari e domina il campo di battaglia! Strategia, tattica e potenza si scontrano in questo RPG ricco di azione!
Felix Felicis GdR - Harry Potter GdR: Stranger Felix
The Line: Weekly Update n°2 – Scheda del PG
mari_gdr ha recensito Sid - la terra al di là del mare
Raja Dunia → Tra verità divine e menzogne eterne, la tua anima è la chiave. Scopri Raja Dunia, e riscrivi il fato del Continente con armi e magia, fede o eresia.
Setting D&D - Le più famose ambientazioni di Dungeons and Dragons! Scopriamole assieme!
Seguici su Facebook! - Diventa Fan di GDR-online.com su Facebook e goditi le nostre vignette!
Radio per GdR - Semplici istruzioni su come utilizzare Spreaker.com per creare un canale webradio per il proprio GdR
Background PG - Tanti utili consigli su come creare il background del tuo personaggio rendendolo avvincente e credibile!
Enlisted - Guida la tua squadra di soldati in combattimenti su larga scala, con fanteria, veicoli corazzati e aerei della IIa Guerra Mondiale!
I Rosiconi - Articolo ironico su un particolare tipo di utenti dei Play by Chat: I Rosiconi
GdR su ForumCommunity - Lista dei giochi di ruolo play by forum sul circuito ForumCommunity
Exclusive Villa GdR - Las Vegas, azzardo, vizi, soldi, intrighi... Più le sue luci sono scintillanti, più le sue ombre sono oscure. La città che non dorme mai, vi aspetta.
