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 Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD, Open Source, Hosting Elenco Forum
I dati del generatore di rank sono stati aggiornati!
The Coven: Secondo turno della side quest
Sponsorizzati con noi! → Sponsorizza il tuo gioco su GDR-online! Trova nuovi giocatori fra i migliaia di appassionati che ogni giorno visitano il portale!
Il gestore di Storie di Agarthi ha risposto alla recensione di do the evolution
Storie di Agarthi: La Corte d'Ossidiana — Schiera
Ex Gratia GDR: Nuove location di gioco nello Xanadu
La Tana del Ladro: TdL Stories - ⚡ Boati a Xantharl ⚡
Dark Genesis → Ascendi al cielo in Dark Genesis! Raduna potenti semidei, costruisci il tuo impero volante e scontrati in battaglie divine!
nww ha aperto un annuncio di ricerca: New Wizarding World ricerca Giocatore
Lineage II: Promozione "E' tempo di craftare!"
Sea of Conquest: Codice gratuito per Festa del papà!
exfainte ha aperto un annuncio di ricerca: Sylmaera GDR ricerca Programmatore
War Thunder → Aviazione, veicoli corazzati e flotte militari della seconda guerra mondiale. Parteciperai a tutte le principali battaglie!
Dalemyr: Distribuzione a sorpresa
Ex Gratia GDR: Quest | Il magazzino della PEH!
Legacy of Magic: La nuova regina del Brehorn
Storie di Agarthi: Custodi della Sacra Fiamma — Schiera
World of Warship → MMO gratuito con frenetiche battaglie navali ambientate nel ventesimo secolo. Salpa con la tua nave ed affronta i nemici!
Token per GdR - Come creare Token per giochi di ruolo gratuitamente e online!
Draghi - Scopri le leggende su queste fantastiche creature...
Oltre il Velo - Intervista alla gestrice del GdR fantasy moderno Oltre il Velo!
Storie di Esperia - Intervista alla gestione del play by chat fantasy Storie di Esperia
Provate D&D! - Dungeons and Dragons: un’esperienza da provare! Scopriamo come!
Lista Browser Game - Lista dei browser game presenti sul portale
Absynthe - Intervista ai gestori del play by chat fantasy moderno Absynthe!
Il GDR e i Dadi - Articolo che sviscera il rapporto fra i GDR e i famosissimi "dadi"