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
anty01 ha aperto un annuncio di ricerca: Pokémon Light Abyss ricerca Master
Crossout → Tuffati nel mondo di Crossout, il gioco MMO d'azione post apocalittico! Costruisci le tue speciali macchine da combattimento!
Ikariam: Nuovi server il 6 dicembre!
Entropia Universe: Note sulla versione di Entropia Universe 18.8.0
kasa ha risposto alla discussione: Alternativa alla sindrome del gioco che non c'è
Il portale raggiunge i 15.700 giochi catalogati! Grazie a tutti!
Sea of Conquest → Vivi un'avventura tra i mari! Dal cuore del Mare del Diavolo, un paradiso piratesco brulicante di magia, tesori e avventure, salperai verso l'ignoto!
Games of Thrones Winter is Coming: Preparati per la Gloriosa Battaglia!
Enlisted: Aggiornamento "Tigri della Birmania"
Il gestore di Sigil - La Città dei Portali ha risposto alla recensione di zannata
I dati del generatore di rank sono stati aggiornati!
OGame → In OGame migliaia di giocatori da tutto il mondo competono tra di loro per conquistare l'intero universo!
Felix Felicis GdR - Harry Potter GdR: Il Torneo Tremaghi - i mostri e gli spalti
Mud AI: Brexinton: Esperienza Utente Potenziata e Design Rivisitato
Ikariam: Versione di Gioco 12.0.0
Nuovo Play by Forum Pokémon → Pokémon Light Abyss
Ikariam → Su una piccola isola, in qualche parte del Mediterraneo, sorge un`antica civiltà. Sotto la tua guida inizia un`era di ricchezza e di scoperte!
My Hero Academia GDR - Intervista al forunder del play by forum My Hero Academia GDR Become a Hero!
HarryWeb.net - Intervista al gestore di HarryWeb.net play by forum potteriano!
Lucca C&G 2018 - Le dieci cose che ci sono piaciute nella splendida edizione 2018 di Lucca Comics and Games!
Sottogeneri Cyberpunk - Scopriamo assieme tutti i sottogeneri del Cyberpunk e dello Steampunk!
Role Players Community - Intervista al gestore di Role Players Community il servizio gratuito di creazione di GdR Play By Chat!
Elot e Dlot - Confronto fra Extremelot e Dreamalot