Messaggi su stanze da x a y postato il 12/10/2006 23:25:10 nel forum programmazione, gdrcd e open source
Ciao gente, sono alle prese con un nuovo add-on ma non riesco a farlo funzionare....
o meglio.....devo riuscire a mandare mediante l`uso di un carattere speciale su GDR-CD esempio § anzichè una masterata limitata alla stanza, deve essere estesa a determinate stanze da x a y.
Allora, questa condizione è facilmente adoperabile, il problema è che non so che codice scrivere ne tantomeno dove metterlo
Pagine → 1
12/10/2006 23:41:14
Dove metterlo: input.php
Cosa mettere: Va che non e` una questione semplice.. intanto non puoi fare "da x a y" perche` manderesti masterate solo su stanze contigue. Secondo il "come gestirlo" non e` immediato, io farei cosi`:
§12,34,66,35§ Ad esempio, per mandare nelle stanze 12, 34, 66 e 35.
Ma a questo punto ti devi fare una funzioncina che prende la stringa compresa tra § e §, e, in base alle virgole, si prende ciascuno dei 4 numeri, e, con un ciclo, inserisce il messaggio master in ciascuna delle quattro stanze.
13/10/2006 10:17:52
umh....ho notato che non è per nulla facile....ma gdrcd non ha dei messaggi di sistema che manda su tutte le stanze? eppure l`identificativo esiste.
per fare quello che mi hai detto in pratica creo una nuova funzione su input.php del tipo dei sussurri...
if ((substr($Msg, 0, 1) == "@") && ($Tipo == "")) {
$Pos = strpos(substr($Msg, 1), "@");
if (($Pos === false) :: ($Pos > 20)) {
$Msg = htmlspecialchars($Msg);
$Tipo = "P";
} else {
$MsgTemp = substr($Msg, $Pos+2);
$Dest = substr($Msg, 1, $Pos);
$MySql = "SELECT * FROM Presenti WHERE Nome = `".addslashes($Dest)."`";
$Result = mysql_query($MySql);
if ($rs = mysql_fetch_array($Result)) {
$Msg = $MsgTemp;
$Msg = htmlspecialchars($Msg);
$Dest = trim($rs["Nome"]);
$Tipo = "S";
} else {
$Tipo = "S";
$Msg = $Dest." non è presente";
$Msg = htmlspecialchars($Msg);
$Dest = $Login;
}
mysql_free_result($Result);
}
}
se io modificassi quei campi evienziati in modo che la query invece di selezionarmi il presente mi pesca il range delle stanze su cui sbattere il messaggio?
13/10/2006 10:58:30
se vuoi fare un messaggio in tutte le stanze e` molto piu` facile, basta che nel messaggio assegni un identificativo di stanza non valido, tipo -1, a quel punto, in refresh.php modifichi la query sql in modo che legga tutti i messaggi della stanza corrente e della stanza -1 dalla tabella chat.
13/10/2006 11:33:44
grazie faber come al solito sei molto esauriente e gentile, se non ci fossi te....
ora però ti stresso con un altro problema......chè in teoria dovrebbe essere l`ultimo....
dopo avere risolto la pecca sopra, ho pensato di creare una funzione parallela a quella dei sussurri, ma che apparissero con una formattazione diversa e pubblici a tutta la chat, un po come un admin che vede i sussurri di tutti gli utenti.....allora ho fatto così..
su input ho ripreso le stringhe della funzione sussurri e le ho modificate:
per prima cosa ho tolto questo:
if ((substr($Msg, 0, 1) == "@") && ($Tipo == "")) {
$Pos = strpos(substr($Msg, 1), "@");
if (($Pos === false) :: ($Pos > 20)) {
$Msg = htmlspecialchars($Msg);
$Tipo = "P";
} else {
poi nel rimanente al posto dei normali valori dei sussurri ho scritto:
if ((substr($Msg, 0, 1) == "%") && ($Tipo == "K")) {
$MsgTemp = substr($Msg, $Pos+2);
$Dest = substr($Msg, 1, $Pos);
$MySql = "SELECT * FROM Presenti WHERE Nome = `".addslashes($Dest)."`";
$Result = mysql_query($MySql);
if ($rs = mysql_fetch_array($Result)) {
$Msg = $MsgTemp;
$Msg = htmlspecialchars($Msg);
$Dest = trim($rs["Nome"]);
$Tipo = "K";
} else {
$Tipo = "K";
$Msg = $Dest." non è presente";
$Msg = htmlspecialchars($Msg);
$Dest = $Login;
}
mysql_free_result($Result);
}
}
poi su refresh:
case `K`: #Comunicazioni
If (strtoupper($Login) == strtoupper($rs[`Destinatario`])) {
$n = "<TABLE WIDTH=`100%`><TR CLASS=CommDest><TD align=left><b>".$rs[`Mittente`].` ti comunica: </b><i>`.$rs[`Testo`].`</i></TD></TR></TABLE>`;
};
If (strtoupper($Login) == strtoupper($rs[`Mittente`])) {
$n = "<TABLE WIDTH=`100%`><TR CLASS=CommMitt><TD align=left><b>comunichi a ".$rs[`Destinatario`].": </b><i>".$rs[`Testo`]."</i></TD></TR></TABLE>";
};
$n = "<TABLE WIDTH=`100%`><TR CLASS=CommDest><TD align=left><b>".$rs[`Mittente`].` ha comunicato a `.$rs[`Destinatario`].`: </b><i>`.$rs[`Testo`].`</i></TD></TR></TABLE>`;
};
break;
ovviamente ho creato una nuova riga di stile su mainchat.css....
morale: la chat pubblica è ok, idem i sussurri, ma quando scrivo %Ciccio% invece di apparire la scritta simil-sussurro appare un messaggio pubblico con sintassi inclusa....
sono 3 ore che ci sbatto il capo.....mi aiuti gentilmente? magari via MSN o come ti è + comodo?
18/01/2008 15:11:46
Chiedo scusa se riesumo questo vecchio thread, ma avrei bisogno di un aiuto passo passo (si sono un niubbo in programmazione) per effettuare questa modifica che non mi è chiara:
18/01/2008 19:37:01
SELECT quello che ti serve FROM MAPPA WHERE ID= la stanza che sei OR ID=-1
18/01/2008 22:24:57
dunque.. io ho creato una nuova parte in input.php sotto alla parte che riguarda i sussurri:
Pagine → 1
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD e Open Source Elenco Forum
cherryloa ha recensito Saint or Sinner?