GDRCD 5.4 - Errore quando invio messaggio privato multiplo
08/08/2017 10:19:07
kanade tachibana ha scritto: Il problema si verifica quando selezioni destinatario multiplo, apparentemente lasci vuoto il campo e ottieni quell'errore.
Devi controllare questo
$_POST['destinatario']
Se vuoi inviare un messaggio privato a più utenti devi separare i nomi con una virgola. (pippo,pluto)
Ho capito quello che dici, cosi ho fatto un test.
In sostanza ho scoperto che:
il separamento con la virgola dei destinatari è collegato con la funzione di destinatario multiplo.
Io ero convinto che per inviare un messaggio a più persone bastasse indicare il nome di più persone separandole da delle virgole senza dover selezionare la funzione messaggio multiplo. Questo perché ero altresi convinto che la funzione di messaggio multiplo servisse ai capi gilda per inviare le ML a tutti i membri della propria gilda.
Che tra l’altro è la funzione di cui avrei bisogno...
08/08/2017 10:27:55
E se fosse qui il problema ?
Da quello che capisco da questa parte di codice è che se non iserisci nomi separati da virgola (quindi è empty) lui dovrebbe prendere i nomi della gilda automaticamente.
No?
<?php
if($_SESSION['permessi']>=GUILDMODERATOR)
{
?>
<div class="form_field">
<select name="multipli">
<option value="singolo" selected>
<?php echo gdrcd_filter('out',$MESSAGE['interface']['messages']['multiple']['single']); ?>
</option>
<option value="multiplo">
<?php echo gdrcd_filter('out',$MESSAGE['interface']['messages']['multiple']['multiple']); ?>
</option>
<?php
if (empty($_SESSION['gilda'])===FALSE){
$gilde=explode(',', $_SESSION['gilda']);
foreach ($gilde as $getname){
if ((is_numeric($getname)===TRUE) && ($getname>-1) ){
$query_getname="SELECT nome FROM gilda WHERE id_gilda=".$getname."";
$res_getname=mysql_query($query_getname);
$row_getname=mysql_fetch_array($res_getname);?>
<option value="<?php print $getname; ?>">
<?php print gdrcd_filter('out',$row_getname['nome']); ?>
</option>
<?php }
}
}?>
08/08/2017 11:41:00 e modificato da kanade tachibana il 08/08/2017 11:42:26
Devi controllare
if (gdrcd_query($result, 'num_rows')>0)
il codice attuale si aspetta uno o più nomi di utenti separati da virgola, se il primo nome che vai ad inserire esiste procede, se non esiste ti retituisce l'errore perchè non trovando una corrispondenza non completa la query.Quel if sta per se trovo una corrispondenza nel database procedo e completo il pezzo mancante della query (se noti qualche riga sopra la query finisce con VALUE).
Ma se non la trova (un nome che non esiste) non processa quel pezzo di codice all'interno del ciclo if.
Se vuoi divertirti e provare a inviare messaggi ai tuoi gildani puoi prendere spunto da questo
$me = 1; // l'id del ruolo del capo gilda
$query = gdrcd_query("SELECT ruolo.id_ruolo, ruolo.gilda, ruolo.capo, clg.personaggio FROM ruolo INNER JOIN clgpersonaggioruolo as clg ON ruolo.id_ruolo=clg.id_ruolo WHERE gilda=$me GROUP BY clg.personaggio", "result");
foreach($query as $user)
{
$string[] = $user['personaggio'];
}
$string = implode(',', $string);
echo $string;
08/08/2017 13:31:06
<?php
if (empty($_SESSION['gilda'])===FALSE){
$gilde=explode(',', $_SESSION['gilda']);
foreach ($gilde as $getname){
if ((is_numeric($getname)===TRUE) && ($getname>-1) ){
$query_getname="SELECT nome FROM gilda WHERE id_gilda=".$getname."";
$res_getname=mysql_query($query_getname);
$row_getname=mysql_fetch_array($res_getname);?>
<option value="<?php print $getname; ?>">
<?php print gdrcd_filter('out',$row_getname['nome']); ?>
</option>
<?php }
}
}?>
qui tu ti carichi il nome della gilda preso nella session, che c'entra con il messaggio multiplo?^? se non ti funziona è perche nel value gli infili l'id per cui quando poi fai il post dovresti verificare oltre a singolo, multiplo ecc, anche se gli passa un numero e agire di conseguenza.
08/08/2017 13:41:53
darkblade ha scritto:
<?php
if (empty($_SESSION['gilda'])===FALSE){
$gilde=explode(',', $_SESSION['gilda']);
foreach ($gilde as $getname){
if ((is_numeric($getname)===TRUE) && ($getname>-1) ){
$query_getname="SELECT nome FROM gilda WHERE id_gilda=".$getname."";
$res_getname=mysql_query($query_getname);
$row_getname=mysql_fetch_array($res_getname);?>
<option value="<?php print $getname; ?>">
<?php print gdrcd_filter('out',$row_getname['nome']); ?>
</option>
<?php }
}
}?>
qui tu ti carichi il nome della gilda preso nella session, che c'entra con il messaggio multiplo?^? se non ti funziona è perche nel value gli infili l'id per cui quando poi fai il post dovresti verificare oltre a singolo, multiplo ecc, anche se gli passa un numero e agire di conseguenza.
nell'elenco a tendina non mi esce per nulla questa voce.
come faccio per inviare un msg automatico a tutti i membri della gilda?
08/08/2017 20:20:50
devi essere in una gilda, hai verificato se sei in una gilda?
08/08/2017 20:28:08
darkblade ha scritto: devi essere in una gilda, hai verificato se sei in una gilda?
si sono in una gilda e sono admin
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Tibia ↗
CRSED: F.O.A.D. ↗
War Thunder ↗
Cafuné ↗
Sea of Conquest ↗
Fallen Gods ↗
Imperion ↗