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.042
149
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
24
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 3
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
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
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
L input (rilevare cambio dati) PHP 3
L input dati con inser into select ? PHP 4
W Invio Dati ad un altra pagina Classic ASP 1
A Mostrare dati database per pagine PHP 2
Samuele Ronzani Sposta dati in una tabella eliminandolo MySQL 6
S Gestire scelta dropdown con dati da Mysql PHP 2
C Estrarre dati stringa Sql Database 1
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
W Evitare ridondanza dei dati Classic ASP 3
MarcoGrazia Dati nulli su join tra più tabelle MySQL 1
A Inserimento dati nel database tramite form + altre operazioni PHP 18
Alex_70 sql importazione dati MySQL 0
C Aggiungere blocco dati Javascript 6
G inserire dati automaticamente in mysql PHP 0
Tommy03 Unire dati da due tabelle MySQL 5
S Trasferire dati sulle pagine del sito PHP 7
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
L inviare i dati di un form ad un database PHP 6

Discussioni simili