[RISOLTO]GDRCD 5.4.1 Ordinamento Messaggi
[RISOLTO]GDRCD 5.4.1 Ordinamento Messaggi postato il 11/09/2018 12:23:33 nel forum programmazione, open source e hosting e modificato da fuil eireannach il 12/09/2018 17:30:29
GDRCD 5.4.1
Altervista
Ciao a tutti.
Ho inserito nei messaggi la possibilità di selezionare il tipo di messaggio che si sta inviando, OFF, SMS o EMAIL. Ho inserito il nuovo campo nelle tabelle dei messaggi del DB e funziona. Il tipo di emssaggio è indicato sia nei messaggi ricevuti che nella colonna di visualizzazione generale dei messaggi.
Quello che vorrei fare è un'ulteriore divisione dei messaggi, come già esiste per ricevuti e inviati. Quindi inserire dei link [OFF], [SMS], [EMAIL] che mi diano tutti i messaggi Ricevuti o Inviati appartenenti alla categoria selezionata. Per esempio se sono sulla sezione Ricevuti e clicco su OFF, mi devono apparire tutti i messaggi ricevuti con tipo_messaggio = OFF.
Ho la quasi certezza di dover agire qui
<?php /*Elenco messaggi (visualizzazione di base della pagina)*/
if ((($_REQUEST['op']=='')||($_REQUEST['op']=='inviati'))&&(isset($_REQUEST['newmessage'])===FALSE)){
//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
if($_GET['op'] == 'inviati') {
$result=gdrcd_query("SELECT * FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 ORDER BY spedito DESC LIMIT ".$pagebegin.", ".$pageend."", 'result');
$record=gdrcd_query("SELECT COUNT(*) FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0");
$totaleresults=$record['COUNT(*)'];
} else {
$result=gdrcd_query("SELECT * FROM messaggi WHERE destinatario = '".$_SESSION['login']."' AND destinatario_del = 0 ".$extracond." ORDER BY spedito DESC LIMIT ".$pagebegin.", ".$pageend."", 'result');
$record=gdrcd_query("SELECT COUNT(*) FROM messaggi WHERE destinatario = '".$_SESSION['login']."' AND destinatario_del = 0 ".$extracond."");
$totaleresults=$record['COUNT(*)'];
}
$numresults=gdrcd_query($result, 'num_rows');
?>
Ma qualsiasi cosa faccia, mi restituisce la pagina dei messaggi completamente vuota. Qui l'ultimo tentativo (fallimentare).
<?php /*Elenco messaggi (visualizzazione di base della pagina)*/
if ((($_REQUEST['op']=='')&&($_REQUEST['op']=='o')||($_REQUEST['op']=='inviati'))&&(isset($_REQUEST['newmessage'])===FALSE)){
//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
if($_GET['op'] == 'inviati') {
if ($_GET['op'] == 'o') {
$result=gdrcd_query("SELECT * FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 AND tipo_messaggio = o ORDER BY spedito DESC LIMIT ".$pagebegin.", ".$pageend."", 'result');
$record=gdrcd_query("SELECT COUNT(*) FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 AND tipo_messaggio = o");
$totaleresults=$record['COUNT(*)'];
}
} else {
if ($_GET['op'] == 'o') {
$result=gdrcd_query("SELECT * FROM messaggi WHERE destinatario = '".$_SESSION['login']."' AND destinatario_del = 0 AND tipo_messaggio=o ".$extracond." ORDER BY spedito DESC LIMIT ".$pagebegin.", ".$pageend."", 'result');
$record=gdrcd_query("SELECT COUNT(*) FROM messaggi WHERE destinatario = '".$_SESSION['login']."' AND destinatario_del = 0 ".$extracond." AND tipo_messaggio = o");
$totaleresults=$record['COUNT(*)'];
}
}
$numresults=gdrcd_query($result, 'num_rows');
?>
Ho anche tentato questo
if(($_GET['op'] == 'inviati')&&($_GET['op'] == 'o')) {
$result=gdrcd_query("SELECT tipo_messaggio FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 AND tipo_messaggio = o ORDER BY spedito DESC LIMIT ".$pagebegin.", ".$pageend."", 'result');
$record=gdrcd_query("SELECT COUNT(*) FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 AND tipo_messaggio = o");
$totaleresults=$record['COUNT(*)'];
}
e questo
if($_GET['op'] == 'o') {
$result=gdrcd_query("SELECT * FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 ORDER BY spedito DESC LIMIT ".$pagebegin.", ".$pageend."", 'result');
$record=gdrcd_query("SELECT COUNT(*) FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0");
$totaleresults=$record['COUNT(*)'];
}
$numresults=gdrcd_query($result, 'num_rows');
Quest'ultimo il più soddisfacente, lasciando tutto il resto del codice così come sta. Ho ancora la visualizzazione dei messaggi Ricevuti e Inviati, ma se clicco sul link [OFF] mi porta a una pagina vuota. Qualcuno ha consigli, per favore? Non so più cosa inventarmi.
Pagine → 1 2
11/09/2018 14:35:17
$result=gdrcd_query("SELECT * FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 AND tipo_messaggio = o ORDER BY spedito DESC LIMIT ".$pagebegin.", ".$pageend."", 'result');
In questa query il tipo_messaggo deve essere 0 numero oppure o lettera? Se è una lettera, va messa tra '':
$result=gdrcd_query("SELECT * FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 AND tipo_messaggio = 'o' ORDER BY spedito DESC LIMIT ".$pagebegin.", ".$pageend."", 'result');
11/09/2018 14:48:16
Intanto Seralia, grazie per la risposta :)
seralia ha scritto: [quote]$result=gdrcd_query("SELECT * FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 AND tipo_messaggio = o ORDER BY spedito DESC LIMIT ".$pagebegin.", ".$pageend."", 'result');
In questa query il tipo_messaggo deve essere 0 numero oppure o lettera? Se è una lettera, va messa tra '':
$result=gdrcd_query("SELECT * FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 AND tipo_messaggio = 'o' ORDER BY spedito DESC LIMIT ".$pagebegin.", ".$pageend."", 'result');
[/quote]E' una "o" lettera. Sto provando di nuovo tutte le varie, mettendola tra apici come hai consigliato, ma ancora nulla. Mi restituisce sempre la pagina vuota T_T.
11/09/2018 15:03:58
Ma a DB ti risulta inserito per bene il dato nel campo?
11/09/2018 15:14:44
Sì a DB risulta bene.
Adesso, quello che ho è questo
if($_GET['op'] == 'inviati') {
$result=gdrcd_query("SELECT * FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 ORDER BY spedito DESC LIMIT ".$pagebegin.", ".$pageend."", 'result');
$record=gdrcd_query("SELECT COUNT(*) FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0");
$totaleresults=$record['COUNT(*)'];
if($_GET['op'] == 'o') {
$result=gdrcd_query("SELECT * FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 AND tipo_messaggio = 'o' ORDER BY spedito DESC LIMIT ".$pagebegin.", ".$pageend."", 'result');
$record=gdrcd_query("SELECT COUNT(*) FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 AND tipo_messaggio = 'o'");
$totaleresults=$record['COUNT(*)'];
} elseif ($_GET['op'] == 's') {
$result=gdrcd_query("SELECT * FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 AND tipo_messaggio = 's' ORDER BY spedito DESC LIMIT ".$pagebegin.", ".$pageend."", 'result');
$record=gdrcd_query("SELECT COUNT(*) FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 AND tipo_messaggio = 's'");
$totaleresults=$record['COUNT(*)'];
} elseif ($_GET['op'] == 'e') {
$result=gdrcd_query("SELECT * FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 AND tipo_messaggio = 'e' ORDER BY spedito DESC LIMIT ".$pagebegin.", ".$pageend."", 'result');
$record=gdrcd_query("SELECT COUNT(*) FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 AND tipo_messaggio = 'e'");
$totaleresults=$record['COUNT(*)'];
}
sto provando a inserirli come sottocicli dei due principali, Ricevuti e Inviati. Il get passa bene, prende i tre valori di riferimento quando clicco sui link, carica i messaggi, ma ancora non fa le distinzioni.
Ho modificato anche questa riga
if ((($_REQUEST['op']=='')||($_REQUEST['op']=='inviati')||($_REQUEST['op']=='o')||($_REQUEST['op']=='s')||($_REQUEST['op']=='e'))&&(isset($_REQUEST['newmessage'])===FALSE)){
mettendo i vari casi. Ho anche provato inserendo questo (($_REQUEST['op']=='inviati')&&($_REQUEST['op']=='o')), ma nulla.
11/09/2018 15:49:00
Aspetta...
if($_GET['op'] == 'inviati') {
[...]
if($_GET['op'] == 'o') {
[...]
} elseif ($_GET['op'] == 's') {
[...]
} elseif ($_GET['op'] == 'e') {
[...]
}
$_GET['op'] può essere 'inviati' oppure può essere 'o'/'s'/'e'
Non puoi usare la stessa variabile ['op'] per ricevere sia il tipo messaggio inviati/ricevuti sia il tipo messaggio o/s/e
11/09/2018 15:55:37
Anche cambiando le variabili... niente. T_T
11/09/2018 16:00:03
Puoi postare la parte di pagina in cui c'è il pulsante che Invia i dati della pagina richiesta?
11/09/2018 16:07:19
La richiesta deve partire questi link. Si rifanno a Ricevuti e Inviati.
<div class="mess_categorie">
<a href="popup.php?page=messages_center&opz1=o">
OFF
</a>
<a href="popup.php?page=messages_center&opz2=s">
SMS
</a>
<a href="popup.php?page=messages_center&opz3=e">
EMAIL
</a>
</div>
che credo di dover duplicare per entrambe le pagine, Ricevuti e Inviati.
11/09/2018 16:20:23
Se chiami le variabili con tre nomi diversi, non funzionerà mai.
Devi chiamare tutto "opz=o". "opz=e" e "opz=s"
Una sola variabile ($_GET['opz']) che può assumere varie lettere come valore. A quel punto guardi che valore ha assunto tramite la IF che mettevi prima e carichi la parte che ti serve.
Ma puoi anche semplicificare togliendo le IF se il valore in DB è lo stesso che usi nel LINK.
Fai qualcosa tipo:
<?php /*Elenco messaggi (visualizzazione di base della pagina)*/
if ((($_REQUEST['op']=='')&&($_REQUEST['op']=='o')||($_REQUEST['op']=='inviati'))&&(isset($_REQUEST['newmessage'])===FALSE)){
//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
if($_GET['op'] == 'inviati') {
$result=gdrcd_query("SELECT * FROM messaggi WHERE mittente = '".$_SESSION['login']."' AND mittente_del = 0 AND tipo_messaggio = '".$_GET['opz']."' ORDER BY spedito DESC LIMIT ".$pagebegin.", ".$pageend."", 'result');
}
$numresults=gdrcd_query($result, 'num_rows');
?>
Ma non lo fare così: usa i filtri di gdrcd per filtrare il testo della $_GET['opz'] in modo da rendere il codice più sicuro. Ora non ho GDRCD e non ricordo la sintassi dei filtri, ma li trovi in tutti i form in cui si usa una variabile testaule scritta dall'utena XD
11/09/2018 16:45:00 e modificato da fuil eireannach il 11/09/2018 17:14:04
Sta funzionando *___*
Devo convincerlo a farlo sia per i ricevuti che per gli inviati (al momento funziona solo per i ricevuti) ma funziona. Grazie mille Seralia *ç*
E appunto. XD
Non va con Inviati. Gna posso fa! XDXD
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!
Sea of Conquest ↗
New Orleans ↗
Foundation Galactic Frontier ↗
Wuthering Waves ↗
The Coven ↗
Raja Dunia ↗
Tibia ↗
War Thunder ↗