Raggruppare dati in array per successivo insert

marf

Utente Attivo
4 Nov 2009
30
0
0
Salve a tutti, sto sviluppando i messaggi circolari delle alleanze per il mio browser game, prima della effettiva apertura, praticamente mediante essi il founder della alleanza potrà inviare un messaggio a tutti i membri della sua stessa alleanza, volevo utilizzare il campo alliance della tabella users, infatti vi è la tabella users che contioene tutti i record degli utenti del gioco, tra cui il campo alliance che rappresenta
l'id della alleanza alla quale un determinato yutente fa parte
Questa funzione, utilizzabile solo dagli admin fa in modo che tutti gliu utenti del gioco ricevano un messaggio:


PHP:
function send_to_all($subject, $contents)
{
 global $db_id;
 
 $users=users();
 for ($i=0; $i<count($users); $i++)
 {
  $query="insert into reports(recipient, subject, contents, sent) values(".$users[$i][0].", '".mysql_escape_string($subject)."', '".mysql_escape_string($contents)."'
 , now())";
  mysql_query($query, $db_id);
 }
}

Ho circa capito come fare, praticamente creo una funzione simile a quella sovracitata dove passo anche l'id della alleanza presa in questione poi faccio un select dove trovo tutti gli utenti che hanno id del campo alliance uguale all'id della alleanza, li metto in un array e da lì mando il messaggio, il problema è che non so come mettere in un array il risultato, tipo faccio

SELECT id FROM users WHERE alliance = $id_ally poi faccio la QUERY e mi spunteranno vari valori poi però, faccio mysql_fetch_array per metterli in un unico array tutti gli utenti ai quali vorrei manadare il messaggio, dovrò poi fare un ciclo for per ripere l'azione per tutti i giocatori a cui volgioo manda il messaggio ?

Grazie in anticipo,

Marco
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao, se non ho caito male quello che vuoi fare
prova così

PHP:
function metti_in_array($id_ally)
{
 global $db_id;
 $users=array();
 $query="SELECT id FROM users WHERE alliance='$id_ally'";
 mysql_query($query, $db_id);
 while($riga=mysql_fetch_array($query)){
  $users[]=$riga['id'];
 }
 return $users;//restituisce l'array $users[0], $users[1].....
} //fine function
 
Ultima modifica:

marf

Utente Attivo
4 Nov 2009
30
0
0
In pratica questo ti mette gli utenti che hanno lo stesso id_ally in array giusto ?

Ora per mandare un mesaggio ad ognuno di essi dovrei fare un ciclo for, dove tipo metto in un apice $i che si incrementa in modo da mandare il messaggio a tutti gli utenti contenuti nell'array ?

Grazie in anticipo,

Marco
 

marf

Utente Attivo
4 Nov 2009
30
0
0
Capito, quindi ora utilizzando la funzione che ho citato nel primo post che manda un messaggio agli utenti del gioco basta che gli passi l'array di questa funzione ed è tutto risolto se ho capito bene...

Edit:

Ho provato a creare la funzione utilizzando anche il codice di borgo italia, la funzione è questa:

PHP:
function send_to_ally($id_ally, $subject, $contents)
{
 global $db_id;
 $query="SELECT id FROM users WHERE alliance='$id_ally'";
 mysql_query($query, $db_id);
 while($riga=mysql_fetch_array($query)){
  $users_a[]=$riga['id'];
 }
 
 for ($i=0; $i<count($users_a); $i++)
 {
  $query="INSERT INTO reports(recipient, subject, contents, sent) VALUES(".$users_a[$i].", '".mysql_escape_string($subject)."', '".mysql_escape_string($contents)."', now())";
  mysql_query($query, $db_id);
 }
 
 //return $users_a;//restituisce l'array $users_a[0], $users_a[1].....
} //fine function

Richiamo la funzione passandole i parametri:
PHP:
send_to_ally($_GET['id'], $_POST["subject"], $_POST["contents"]);

Mi viene visualizzato il messaggio che tutto è andato a buon fine, ma nessuno degli utenti riceve il messaggio...

Secondo me c'è un erorre nella funzione send_to_ally, voi cosa dite ?

Grazie in anticipo,

Marco
 
Ultima modifica:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Correggi in questa maniera. Ho fatto anche qualche altro piccolo perfezionamento dove mi sembrava necessario:
PHP:
function send_to_ally($id_ally, $subject, $contents)
{
	global $db_id;

	$subject = mysql_real_escape_string($subject, $db_id);
	$contents = mysql_real_escape_string($contents, $db_id);
	
	$query = "SELECT id FROM users WHERE alliance='{$id_ally}'";
	$query = mysql_query($query, $db_id);

	$users_a = array();
	while($riga = mysql_fetch_assoc($query))
		$users_a[] = $riga['id'];

	foreach($users_a as $id)
	{
		$query = "INSERT INTO reports(recipient, subject, contents, sent) VALUES({$id}, '{$subject}', '{$contents}', now())";
		mysql_query($query, $db_id);
	}
}
 
Discussioni simili
Autore Titolo Forum Risposte Data
max1974 raggruppare e girare i dati in colonne MySQL 11
D Raggruppare dati query con php PHP 1
davide1982 Raggruppare dati in categorie con group by MySQL 2
S Raggruppare ed estrarre data più recente MySQL 6
R Raggruppare valori array PHP 5
A Raggruppare record con stessa data PHP 13
max1974 [PHP] Raggruppare array PHP 4
MarcoGrazia [mysql][mariadb]Raggruppare query in base alla data MySQL 2
M [PHP] [HTML] Raggruppare 4 pagine web in una PHP 3
A Raggruppare piu' funzioni in una sola PHP 1
N Raggruppare risultati di due tabelle PHP 1
ivarello Raggruppare Query per mese PHP 1
mircop Raggruppare elementi di una tabella PHP 2
G Raggruppare record tabella PHP 1
X Raggruppare risultati di una query PHP 3
max75 query su due tabelle e dati doppioni MS Access 2
K Form che manda dati doppi PHP 1
T problemi con dati menu a tendina HTML e CSS 2
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
D Risultati diversi elaborazione dati fra localhost e Altervista PHP 0
C Creare Tabella Dati Meteo prelevandoli da dei Tags in un altro foglio PHP 27
M Invio dati database via email php PHP 0
K [php]form invio dati PHP 0
peppe0703 Come Estrarre dati da db wordpress e richiamarli in html esterno HTML e CSS 0
V dati scomparsi dal sito HTML e CSS 3
M Memorizzare i dati nei campi prima dell'invio al db PHP 4
A Stampare dati da form PHP 15
E Estrarre dati da doppia tabella, banale ma non sempre PHP 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
F Scrivere dei dati in word con php PHP 0
otto9due $_FILE non passa i dati dal form PHP 1
N dati tabella non presi PHP 1
M Riportare in tabella HTML dati estratti con query SQL MySQL 0
I Assegnare dati fetch request ad una variabile globale Javascript 0
L PHPSpreadsheet inserire dati da file .xlsx/.xls su database PHP 2
L Ricezione dei dati su file php da modulo html PHP 6
L inserimento form dati multipli ? PHP 0
S Leggere dati da API e visualizzarli PHP 0
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
A invio massivo dati a file php Javascript 4
M Inviare dati nel db dopo risposta alert PHP 0
A recuperare i dati passati nel post PHP 1
L Estrazione dati php Database 6
L Estrazione dati casuali non doppioni MySQL 1
F Leggere e aggiornare dati di campi <input text> su file di test PHP 0
J Form inserimento dati in database Ajax 1
D Recupero dati da HDD esterno Hardware 0
L non duplicare dati in stato "aggiornamento" PHP 6
L inserire dati multi livello PHP 8

Discussioni simili