GDRCD 5.4.1 Segnalazione topic bacheche
Pagine → 1 2
18/09/2019 15:57:55 e modificato da irenes il 18/09/2019 15:58:25
credo facendo un gran casino ha messo questo codicillo per cercare di far sì che sia... "avvertita" la presenza di nuovi messaggi nel forum. E... niente, nessun errore particolare. Non fosse che il codice non funziona XD
<?php
$result = gdrcd_query("SELECT messaggioaraldo.id_messaggio, messaggioaraldo.id_messaggio_padre, messaggioaraldo.anonymous, messaggioaraldo.edit, messaggioaraldo.titolo, messaggioaraldo.messaggio, messaggioaraldo.autore, messaggioaraldo.data_messaggio, messaggioaraldo.chiuso, araldo.anonym, araldo.tipo, araldo.nome, araldo.proprietari, personaggio.url_img_chat, araldo.id_araldo FROM messaggioaraldo LEFT JOIN araldo ON messaggioaraldo.id_araldo = araldo.id_araldo LEFT JOIN personaggio ON messaggioaraldo.autore = personaggio.nome WHERE (messaggioaraldo.id_messaggio_padre = ".gdrcd_filter('num',$_REQUEST['what'])." AND messaggioaraldo.id_messaggio_padre != -1) OR messaggioaraldo.id_messaggio = ".gdrcd_filter('num',$_REQUEST['what'])." ORDER BY id_messaggio_padre, data_messaggio", 'result');
$row = gdrcd_query($result, 'fetch');
$araldo=(int)$row['id_araldo'];
$new_msg = gdrcd_query("SELECT COUNT(MA.id_messaggio) AS num FROM messaggioaraldo AS MA LEFT JOIN araldo_letto AS AL ON MA.id_messaggio=AL.thread_id AND AL.nome='".$_SESSION['login']."' WHERE MA.id_araldo = ".$araldo." AND MA.id_messaggio_padre = -1 AND AL.id IS NULL");
$check_letto = gdrcd_query("SELECT * FROM araldo_letto WHERE nome = '".addslashes($_SESSION['login'])."' AND thread_id = ".gdrcd_filter('num',$_REQUEST['what']));
if ($check_letto['id'] <= 0)
{
gdrcd_query("INSERT INTO araldo_letto (nome, araldo_id, thread_id) VALUES ('".addslashes($_SESSION['login'])."', ".gdrcd_filter('num',$_REQUEST['where']).", ".gdrcd_filter('num',$_REQUEST['what']).")");
}
if ($new_msg['num'] > 0)
{
echo 'Nuovi post';
} else {
echo 'nope';
}; ?>
18/09/2019 16:10:15 e modificato da gianni10049 il 18/09/2019 16:12:19
irenes ha scritto: credo facendo un gran casino ha messo questo codicillo per cercare di far sì che sia... "avvertita" la presenza di nuovi messaggi nel forum. E... niente, nessun errore particolare. Non fosse che il codice non funziona XD
Ho scritto un pezzo semplice, prova ad adattarlo a quello che ti serve:
function Letture($id_araldo,$pg){
//Conta il numero di Thread per la bacheca selezionata
$Threads= gdrcd_query("SELECT COUNT(id_messaggio) as Threads FROM messaggioaraldo WHERE id_messaggio_padre = -1 AND id_araldo='{$id_araldo}'",'result');
//Conta il numero di letture dell'utente, per l'araldo selezionato
$Reads= gdrcd_query("SELECT count(id) as Letture FROM araldo_letto WHERE thread_id='{$id_araldo} AND nome='{$pg}'",'result');
//Filtra i dati
$TrheadEsistenti= gdrcd_filter('num',$Threads['Threads']);
$Reads= gdrcd_filter('num',$Reads['Letture']);
//Se i thread letti per quell'araldo dal personaggio sono minori dei thread esistenti
if($Reads < $TrheadEsistenti){
return true;
}
//Altrimenti ha letto tutti i thread di quell'araldo
else{
return false;
}
}
$id_araldo= 1;
$pg= 'Super';
if(Letture($id_araldo,$pg) === true){
echo 'Nuovi Messaggi';
}
E' una funzione pre-confezionata, per la lettura delle varie bacheche (quindi non per le letture dei singoli post, ma per un conteggio generale dei post letti in quel thread), basata sui valori base del DB di gdrcd, che dovete adattare alle vostre voci di DB.
Basta che controllate che quando eliminate un thread, gli si eliminino anche le sue letture, altrimenti il conteggio si falla, ma quello dovrebbe essere gia' fatto di base da gdrcd.
Se avete problemi, provate a scrivere qui o in pvt.
18/09/2019 16:33:16
grazie mille!
errorino :<
Error Code: 1064
Error String: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Super'' at line 1
Error Detail: SELECT COUNT(id) as Letture FROM araldo_letto WHERE thread_id='1 AND nome='Super'
18/09/2019 16:35:40 e modificato da gianni10049 il 18/09/2019 16:40:17
irenes ha scritto: grazie mille!
errorino :<
Error Code: 1064
Error String: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Super'' at line 1
Error Detail: SELECT COUNT(id) as Letture FROM araldo_letto WHERE thread_id='1 AND nome='Super'
Errore mio, fuggito un apostrofo:
sostituisci:
$Reads= gdrcd_query("SELECT count(id) as Letture FROM araldo_letto WHERE thread_id='{$id_araldo} AND nome='{$pg}'",'result');
con: (Ho risolto anche un altro errore, che mi era sfuggito)
$Reads= gdrcd_query("SELECT count(id) as Letture FROM araldo_letto WHERE araldo_id='{$id_araldo}' AND nome='{$pg}'",'result');
18/09/2019 16:46:28
Fatal error: Cannot use object of type mysqli_result as array in on line 125
linea 125 è
$TrheadEsistenti= gdrcd_filter('num',$Threads['Threads']);
18/09/2019 16:50:39
irenes ha scritto: Fatal error: Cannot use object of type mysqli_result as array in on line 125
linea 125 è
$TrheadEsistenti= gdrcd_filter('num',$Threads['Threads']);
Ora monto un gdrcd e faccio un paio di prove. Dammi 20 minuti.
18/09/2019 16:52:27
gianni10049 ha scritto: [quote]irenes ha scritto: Fatal error: Cannot use object of type mysqli_result as array in on line 125
linea 125 è
$TrheadEsistenti= gdrcd_filter('num',$Threads['Threads']);
Ora monto un gdrcd e faccio un paio di prove. Dammi 20 minuti.[/quote]
ahahahahah, ma ci mancherebbe :3 sei gentilissimo, segnalavo solo la problematica :)
18/09/2019 16:55:11
irenes ha scritto: [quote]gianni10049 ha scritto: [quote]irenes ha scritto: Fatal error: Cannot use object of type mysqli_result as array in on line 125
linea 125 è
$TrheadEsistenti= gdrcd_filter('num',$Threads['Threads']);
Ora monto un gdrcd e faccio un paio di prove. Dammi 20 minuti.[/quote]
ahahahahah, ma ci mancherebbe :3 sei gentilissimo, segnalavo solo la problematica :)[/quote]
function Letture($id_araldo,$pg){
//Conta il numero di Thread per la bacheca selezionata
$Threads= gdrcd_query("SELECT COUNT(id_messaggio) as Threads FROM messaggioaraldo WHERE id_messaggio_padre = -1 AND id_araldo='{$id_araldo}'");
//Conta il numero di letture dell'utente, per l'araldo selezionato
$Reads= gdrcd_query("SELECT count(id) as Letture FROM araldo_letto WHERE araldo_id='{$id_araldo}' AND nome='{$pg}'");
//Filtra i dati
$TrheadEsistenti= gdrcd_filter('num',$Threads['Threads']);
$Reads= gdrcd_filter('num',$Reads['Letture']);
var_dump($TrheadEsistenti.' '.$Reads);
//Se i thread letti per quell'araldo dal personaggio sono minori dei thread esistenti
if($Reads < $TrheadEsistenti){
return true;
}
//Altrimenti ha letto tutti i thread di quell'araldo
else{
return false;
}
}
Ora va e funziona, su un gdrcd base.
Ripeto, questo e' un conteggio per i thread presenti in una bacheca, quindi da metter nella pagina 1 di gdrcd, dove ci sono tutte le liste delle bacheche, per il controllo dei singoli thread (nella lista thread) poi va fatto un controllo diverso.
27/09/2019 09:53:52
domanda: come si potrebbe modificare questa funzione per fare in modo che la segnalazione di nuovi messaggi sia solo per le bacheche cui il pg ha accesso? AD esempio: se uno aggiunge una risposta in bacheca master, se il pg è almeno master e quindi vede la bacheca gli arriva la segnalazione della presenza di nuovi messaggi in forum, se uno non ha accesso alla bacheca non vede niente
Discussione seguita da
Pagine → 1 2
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Tibia ↗
World of Warship ↗
AlterEgo ↗
Feudera ↗
Raja Dunia ↗
Neverness to Everness ↗
Crossout ↗
Seconda Era ↗