23/06/2021 16:53:41
haruka ha scritto: Tanto per capire, la query che c'è in index va replicata anche lì?
E poi vanno stampati i messaggi della conversazione?
haruka ha scritto: Adesso il read restituisce questo bel messaggio di errore :D
GitHub: https://github.com/GDRCD/GDRCD
Discord: https://discord.com/invite/K2eWXpvu4M
GdR-O: https://www.gdr-online.com/readforum.asp?id=250579
23/06/2021 17:19:13
kasa ha scritto:
Controlla se $pagebegin e $pageend vengono popolati correttamente. Forse mancano i LIMIT. In alternativa, prova a stampare per intero la query e vediamo cosa va in errore.
Kasa.
<?php
//Determinazione pagina
if(isset($_REQUEST['offset']) === false) {
$pagebegin = 0;
} else {
$pagebegin = (int) $_REQUEST['offset'] * $PARAMETERS['settings']['messages_per_page'];
}
$pageend = $PARAMETERS['settings']['messages_per_page'];
//Conteggio messaggi totali
$record = gdrcd_query("SELECT COUNT(*) FROM messaggi WHERE destinatario = '".$_SESSION['login']."'");
$totaleresults = $record['COUNT(*)'];
//Elenco messaggi paginato
/** * Bugfix: correzione di un bug che permetteva la visualizzazione di messaggi non inviati all'utente
* semplicemente modificando l'id. Viene quindi aggiunta nella clausola where il controllo sulla proprietà
* del messaggio. Nel caso in cui non venga trovato alcun messaggio verrà mostrato un errore.
* @author Rhllor
*/
//$result=gdrcd_query("SELECT * FROM messaggi WHERE personaggio_conversazione = ".gdrcd_filter('num',$_REQUEST['personaggio_conversazione'])." LIMIT 1", 'result');
$result = gdrcd_query("SELECT personaggio_conversazione, testo, letto, MAX(spedito) as spedito
FROM (
(
SELECT mittente as personaggio_conversazione, testo, letto, spedito
FROM messaggi
WHERE 1
AND destinatario = '".$_SESSION['login']."'
AND destinatario_del = 0
AND spedito = (SELECT MAX(mcheck.spedito) from messaggi as mcheck WHERE mcheck.destinatario = messaggi.destinatario AND mcheck.mittente = messaggi.mittente )
GROUP BY mittente
ORDER BY letto, spedito DESC
)
UNION ALL
(
SELECT destinatario as personaggio_conversazione, testo, letto, spedito
FROM messaggi
WHERE 1
AND mittente = '".$_SESSION['login']."'
AND mittente_del = 0
AND spedito = (SELECT MAX(mcheck.spedito) from messaggi as mcheck WHERE mcheck.destinatario = messaggi.destinatario AND mcheck.mittente = messaggi.mittente )
GROUP BY destinatario
ORDER BY letto, spedito DESC
)
) AS conversazioni
GROUP BY personaggio_conversazione
ORDER BY letto, spedito DESC
LIMIT ".$pagebegin.", ".$pageend."", 'result');
if(gdrcd_query($result, 'num_rows') == 0) { ?>
<div class="warning">
Impossibile visualizzare il messaggio richiesto, il messaggio potrebbe non esistere oppure non
disponi delle autorizzazioni necessarie per poterlo visionare
</div>
<?php
} else {
$record = gdrcd_query($result, 'fetch');
gdrcd_query($result, 'free');
//Leggi id messaggio
//Formatta messaggio
//Bottoni Rispondi, Rispondi e allega, cancella
?>
<div class="read_message_box">
<div class="infos">
<span class="title"><?php echo gdrcd_filter('out', $MESSAGE['interface']['messages']['date']).": "; ?></span>
<span class="body">
<?php $quando = explode(' ', $record['spedito']);
echo gdrcd_format_date($quando[0]) ?>
</span>
<span class="title">
<?php echo ' '.gdrcd_filter('out', $MESSAGE['interface']['messages']['time']).' '; ?>
</span>
<span class="body">
<?php echo gdrcd_format_time($quando[1]); ?>
</span>
</div>
<div class="infos">
<span class="title"><?php echo gdrcd_filter('out', $MESSAGE['interface']['messages']['sender']).": "; ?>
</span>
<span class="body"><?php echo gdrcd_filter('out', $record['mittente']); ?></span>
</div>
<?php if(($record['destinatario'] == $_SESSION['login']) && ($record['letto'] == 0)) {
gdrcd_query("UPDATE messaggi SET letto = 1 WHERE personaggio_conversazione = ".gdrcd_filter('num', $_REQUEST['personaggio_conversazione'])." LIMIT 1");
} ?>
<div class="read_message_box_text">
<?php echo nl2br(gdrcd_bbcoder(gdrcd_filter('out', $record['testo']))); ?>
</div>
<div class="read_message_box_forms">
<div class="read_message_box_form">
</div>
<div class="read_message_box_form">
<!-- attach -->
<form action="main.php?page=messages_center"
method="post">
<input type="hidden" name="reply_dest" value="<?php echo $record['mittente']; ?>" />
<input type="hidden" name="testo" value="<?php echo gdrcd_filter('out', $MESSAGE['interface']['messages']['attachment'].$record['testo']); ?>" />
<input type="hidden" name="op" value="attach" />
<input type="image" src="imgs/icons/attach.png" value="submit" alt="<?php echo gdrcd_filter('out', $MESSAGE['interface']['messages']['attach']); ?>"
title="<?php echo gdrcd_filter('out', $MESSAGE['interface']['messages']['attach']); ?>" />
</form>
</div>
<div class="read_message_box_form">
<!-- reply -->
<form action="main.php?page=messages_center" method="post">
<input type="hidden" name="reply_dest" value="<?php echo $record['mittente']; ?>" />
<input type="hidden" name="op" value="reply" />
<input type="image" src="imgs/icons/reply.png" value="submit" alt="<?php echo gdrcd_filter('out', $MESSAGE['interface']['messages']['reply']); ?>"
title="<?php echo gdrcd_filter('out', $MESSAGE['interface']['messages']['reply']); ?>" />
</form>
</div>
</div>
<!-- read_message_box_form -->
</div>
<div class="link_back">
<a href="main.php?page=messages_center&offset=0"><?php echo gdrcd_filter('out', $MESSAGE['interface']['messages']['go_back']); ?></a>
</div>
<?php
} // Chiudo controllo paternità messaggio
Leggendra.eu - Fantasy steampunk itinerante
https://www.leggendra.eu
23/06/2021 18:55:19
Non è vero, ci sono riuscita xD
Scusate se mi gaso per così poco.
<?php
//Determinazione pagina
if(isset($_REQUEST['offset']) === false) {
$pagebegin = 0;
} else {
$pagebegin = (int) $_REQUEST['offset'] * $PARAMETERS['settings']['messages_per_page'];
}
$pageend = $PARAMETERS['settings']['messages_per_page'];
//Conteggio messaggi totali
$record = gdrcd_query("SELECT COUNT(*) FROM messaggi WHERE destinatario = '".$_SESSION['login']."'");
$totaleresults = $record['COUNT(*)'];
//Elenco messaggi paginato
/** * Bugfix: correzione di un bug che permetteva la visualizzazione di messaggi non inviati all'utente
* semplicemente modificando l'id. Viene quindi aggiunta nella clausola where il controllo sulla proprietà
* del messaggio. Nel caso in cui non venga trovato alcun messaggio verrà mostrato un errore.
* @author Rhllor
*/
//$result=gdrcd_query("SELECT * FROM messaggi WHERE personaggio_conversazione = ".gdrcd_filter('num',$_REQUEST['personaggio_conversazione'])." LIMIT 1", 'result');
$result = gdrcd_query("SELECT *
FROM (
(
SELECT mittente as personaggio_conversazione, testo, letto, destinatario, mittente, id, spedito
FROM messaggi
WHERE 1
AND ( destinatario = '".$_SESSION['login']."' AND mittente = '".$_REQUEST['personaggio_conversazione']."') OR ( mittente = '".$_SESSION['login']."'
AND destinatario = '".$_REQUEST['personaggio_conversazione']."')
AND destinatario_del = 0
AND spedito = (SELECT MAX(mcheck.spedito) from messaggi as mcheck WHERE mcheck.destinatario = messaggi.destinatario AND mcheck.mittente = messaggi.mittente )
ORDER BY letto, spedito DESC
)
) AS conversazioni
ORDER BY letto, spedito DESC
LIMIT ".$pagebegin.", ".$pageend."", 'result');
?>
<?php
while($row = gdrcd_query($result, 'fetch')) {
?>
<div style=" border: 1px solid black;">
<tr>
<td class="elementi_elenco_preview">
<div>
Id messaggio: <?php echo $row['id']; ?>
</div>
</td>
<td class="elementi_elenco_preview">
<div>
Destinatario: <?php echo $row['destinatario']; ?>
</div>
</td>
<td class="elementi_elenco_preview">
<div>
Mittente: <?php echo $row['mittente']; ?>
</div>
</td>
<td class="elementi_elenco_preview">
<div>
<?php echo $row['testo']; ?>
</div>
</td>
</tr>
</div>
<?php
}
?>
Leggendra.eu - Fantasy steampunk itinerante
https://www.leggendra.eu
23/06/2021 19:26:20
haruka ha scritto: ...
GitHub: https://github.com/GDRCD/GDRCD
Discord: https://discord.com/invite/K2eWXpvu4M
GdR-O: https://www.gdr-online.com/readforum.asp?id=250579
23/06/2021 23:23:30
haruka ha scritto: ...
SELECT mittente, testo, letto, spedito
FROM (
(
SELECT mittente, testo, letto, spedito
FROM messaggi
WHERE 1
AND destinatario = '".$_SESSION['login']."'
AND mittente = '".$_REQUEST['personaggio_conversazione']."'
AND destinatario_del = 0
ORDER BY spedito DESC
)
UNION ALL
(
SELECT mittente, testo, letto, spedito
FROM messaggi
WHERE 1
AND destinatario = '".$_REQUEST['personaggio_conversazione']."'
AND mittente = '".$_SESSION['login']."'
AND mittente_del = 0
ORDER BY spedito DESC
)
) AS conversazione
ORDER BY spedito DESC
GitHub: https://github.com/GDRCD/GDRCD
Discord: https://discord.com/invite/K2eWXpvu4M
GdR-O: https://www.gdr-online.com/readforum.asp?id=250579
24/06/2021 00:33:12
kasa ha scritto:
haruka ha scritto: ...
SELECT mittente, testo, letto, spedito
FROM (
(
SELECT mittente, testo, letto, spedito
FROM messaggi
WHERE 1
AND destinatario = '".$_SESSION['login']."'
AND mittente = '".$_REQUEST['personaggio_conversazione']."'
AND destinatario_del = 0
ORDER BY spedito DESC
)
UNION ALL
(
SELECT mittente, testo, letto, spedito
FROM messaggi
WHERE 1
AND destinatario = '".$_REQUEST['personaggio_conversazione']."'
AND mittente = '".$_SESSION['login']."'
AND mittente_del = 0
ORDER BY spedito DESC
)
) AS conversazione
ORDER BY spedito DESC
<style type="text/css">
.destinatario {width: 80%; float: left; padding:20px; margin: 10px 20px 5px 20px;
}
.mittente {width: 80%; float: right; padding:20px; margin:10px;
}
</style>
<?php
//Determinazione pagina
if(isset($_REQUEST['offset']) === false) {
$pagebegin = 0;
} else {
$pagebegin = (int) $_REQUEST['offset'] * $PARAMETERS['settings']['messages_per_page'];
}
$pageend = $PARAMETERS['settings']['messages_per_page'];
//Conteggio messaggi totali
$record = gdrcd_query("SELECT COUNT(*) FROM messaggi WHERE destinatario = '".$_SESSION['login']."'");
$totaleresults = $record['COUNT(*)'];
//Elenco messaggi paginato
/** * Bugfix: correzione di un bug che permetteva la visualizzazione di messaggi non inviati all'utente
* semplicemente modificando l'id. Viene quindi aggiunta nella clausola where il controllo sulla proprietà
* del messaggio. Nel caso in cui non venga trovato alcun messaggio verrà mostrato un errore.
* @author Rhllor
*/
//$result=gdrcd_query("SELECT * FROM messaggi WHERE personaggio_conversazione = ".gdrcd_filter('num',$_REQUEST['personaggio_conversazione'])." LIMIT 1", 'result');
$result = gdrcd_query("SELECT *
FROM (
(
SELECT mittente as personaggio_conversazione, testo, letto, destinatario, mittente, id, spedito
FROM messaggi
WHERE 1
AND ( destinatario = '".$_SESSION['login']."' AND mittente = '".$_REQUEST['personaggio_conversazione']."') OR ( mittente = '".$_SESSION['login']."'
AND destinatario = '".$_REQUEST['personaggio_conversazione']."')
AND destinatario_del = 0
ORDER BY letto, spedito DESC
)
) AS conversazioni
ORDER BY letto, spedito DESC", 'result');
?>
<h3>Conversazione con: <?php echo $_REQUEST['personaggio_conversazione']; ?> </h3>
<?php
while($row = gdrcd_query($result, 'fetch')) {
?>
<?php
if(($row['destinatario'] == $_SESSION['login']) && ($row['letto'] == 0)) {
gdrcd_query("UPDATE messaggi SET letto = 1 WHERE id = ".gdrcd_filter('num', $row['id'])." LIMIT 1");
}
$cls = $row['destinatario'] == $_SESSION['login'] ? "destinatario" : "mittente";
echo "<div class=\"{$cls}\">"
?>
<tr>
<td class="elementi_elenco_preview">
<div>
Id messaggio: <?php echo $row['id']; ?>
</div>
</td>
<td class="elementi_elenco_preview">
<div>
Data: <?php echo $row['spedito']; ?>
</div>
</td>
<td class="elementi_elenco_preview">
<div>
Destinatario: <?php echo $row['destinatario']; ?>
</div>
</td>
<td class="elementi_elenco_preview">
<div>
Mittente: <?php echo $row['mittente']; ?>
</div>
</td>
<td class="elementi_elenco_preview">
<div>
<?php echo $row['testo']; ?>
</div>
</td>
</tr>
</div>
<div style="clear: both;">
<?php
echo "</div>";
}
?>
Leggendra.eu - Fantasy steampunk itinerante
https://www.leggendra.eu
24/06/2021 10:06:22
Ti consiglio di utilizzare la query che ti ho indicato, in modo da avere dai messaggi lo stretto ed indispensabile e formattato in una sola chiave leggibile.
Quando andrai poi a stampare il tutto, nell'attributo classe dei box messaggio farai un IF STATEMENT molto semplice:
<... class="<?php if($row['mittente'] == $_SESSION['login']) { echo 'NOME_CLASSE_NOVOLETTA_DESTRA';} else { echo 'NOME_CLASSE_NUVOLETTA_SINISTRA';} ?>" ... >
<... class="<?php echo $row['mittente'] == $_SESSION['login'] ? 'NOME_CLASSE_NOVOLETTA_DESTRA'} : 'NOME_CLASSE_NUVOLETTA_SINISTRA'; ?>" ... >
GitHub: https://github.com/GDRCD/GDRCD
Discord: https://discord.com/invite/K2eWXpvu4M
GdR-O: https://www.gdr-online.com/readforum.asp?id=250579
24/06/2021 10:58:42
kasa ha scritto: Ti consiglio di utilizzare la query che ti ho indicato, in modo da avere dai messaggi lo stretto ed indispensabile e formattato in una sola chiave leggibile.
Leggendra.eu - Fantasy steampunk itinerante
https://www.leggendra.eu
24/06/2021 11:24:35
Scusate se mi intrometto... ma ho seguito questa conversazione col fiato sospeso, tipo lancio dell'Apollo 11! Ahahahahahah
Innanzitutto grazie ad entrambi per aver postato qui i ragionamenti e le meccaniche! **
Se l'intenzione sarebbe di farne un pacchetto, potrei azzardare a chiedere di provare a strutturare la cosa sia per il 5.4 che per il 5.5? Anche solo un txt di spiegazione su come ottenere la stessa cosa sul 5.4... Temo siano molte le land attuali ancora strutturate sul precedente GDRCD e sarebbe carino (e molto utile) andare a coprire entrambe le versioni!
Da quello che ho capito, tutta la parte di GDRCD 5.5 che gestisce i messaggi è stata scomposta e divisa in più pagine. Credete che le modifiche/aggiunte da voi avanzate si possano replicare anche sul 5.4?
24/06/2021 11:35:38
jan90 ha scritto: Scusate se mi intrometto... ma ho seguito questa conversazione col fiato sospeso, tipo lancio dell'Apollo 11! Ahahahahahah
Innanzitutto grazie ad entrambi per aver postato qui i ragionamenti e le meccaniche! **
Se l'intenzione sarebbe di farne un pacchetto, potrei azzardare a chiedere di provare a strutturare la cosa sia per il 5.4 che per il 5.5? Anche solo un txt di spiegazione su come ottenere la stessa cosa sul 5.4... Temo siano molte le land attuali ancora strutturate sul precedente GDRCD e sarebbe carino (e molto utile) andare a coprire entrambe le versioni!
Da quello che ho capito, tutta la parte di GDRCD 5.5 che gestisce i messaggi è stata scomposta e divisa in più pagine. Credete che le modifiche/aggiunte da voi avanzate si possano replicare anche sul 5.4?
Leggendra.eu - Fantasy steampunk itinerante
https://www.leggendra.eu
Discussione seguita da:
Non puoi scrivere in questo Forum
Aggiungi Discussione ai Preferiti
Inoltra Discussione
Forum Programmazione, GDRCD, Grafica e Open Source
Torna alla lista Forum
✋😟
Abbiamo rilevato che stai usando un software per bloccare la pubblicità!
L'utilizzo di GDR-online.com è gratuito da oltre 17 anni ma è necessario coprire i costi per mantenerlo online... ti chiediamo di aiutarci disabilitando il blocco dei banner pubblicitari.
Togliere il blocco significa fare in modo che GDR-online.com possa continuare a far conoscere piccoli giochi amatoriali gratuitamente e offrire un servizio sempre migliore e adatto alle esigenze dei suoi giocatori!
Se questo avviso continua ad apparire nonostante tu abbia autorizzato il portale:
- Verifica nelle opzioni che venga disattivato AdBlock in tutto il dominio gdr-online.com e non solo in una pagina
- Controlla di non avere fra le estensioni installate altre analoghe ad AdBlock, come AdBlock Plusbr, ublock origin, ecc.
- Probabilmente sul tuo PC è installato un Antivirus che ha anche funzioni di blocco pubblicità
- Se usi Firefox impostare il "Blocco Contenuti" su "Normale" e non su "Restrittivo". Per farlo clicca sull'icona dello scudo vicino all'URL e clicca su "Disattiva Blocco per questo sito"
- Prova a premere CTRL + F5, riloggarti e vedi se il problema persiste