Ci risiamo___Array su intero codice

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio
E la tabella degli utenti, invece, come è strutturata? In che campo è contenuto il nome dell'utente?

c'è un tabella con tutti gli utenti è il suo id è

ID_Utenti

strutturata così

ID_Utenti Nome Citta etc.

1 Giovanni Bologna
2 Marco Bari

etc..

ovviamente non ci sono duplicati

quindi io dovrei strare

in pratica vorrei estrarre tutti i nomi utenti come array come già visto e poi nell'altra tabella estarre l'età media dei nominativi associati a tal utente

al momento ho un file che li estrae 1 x 1 e recupera l'eta media 1 x 1 però vorrei evitare che ad ogni nuovo utente di mettere mano al codice

in pratica come hai risolto in questo topic dove ancora ti ringrazio

immagino stai pensando alla join al momento materia ostica per me :book:
 
In realtà, senza complicarsi troppo la vita, io farei così. Modifica il while in cui recuperi gli ID degli utenti in questo modo:
PHP:
$nomi = array();

while($linea = mysql_fetch_array($result, MYSQL_ASSOC))
{ 
	$dati[] = $linea['i_utente'];
	$nomi[] = $linea['Nome'];
}
Poi per recuperare l'età media dei giocatori di ogni utente fai così:
PHP:
$avgs = array();

foreach($nomi as $user)
{
	$sql = "SELECT * FROM giocatori WHERE Utente = '{$user}'";
	$query = mysql_query($sql) or die(mysql_error());
	
	$total = 0;
	
	while($row = mysql_fetch_assoc($query))
		$total += $row['Eta'];
	
	$rows = mysql_num_rows($query);
	
	$avgs[$user] = ($rows > 0) ? ($total / $rows) : 0;
	$avgs[$user] = round($avgs[$user]);
}
Dovrebbe funzionare.
 
Certo, è normale che ti restituisca un array... se hai 3 utenti l'array sarà composto da 3 elementi la cui chiave è il nome dell'utente e il valore la media delle età dei suoi giocatori. Prova a fare:
PHP:
print_r($avgs);
Per vedere quello che ti restituisce.
 
Certo, è normale che ti restituisca un array... se hai 3 utenti l'array sarà composto da 3 elementi la cui chiave è il nome dell'utente e il valore la media delle età dei suoi giocatori. Prova a fare:
PHP:
print_r($avgs);
Per vedere quello che ti restituisce.

ok mi da l'array completo di chiave e valore però non risco a separarli

ho provato con

PHP:
while (list($chiave,$valore) = each($avgs))

e stampando $valore e $chiave me li divide ma poi non mi fa l'implode
PHP:
$val = "'".implode("','", $valore)."'";

ed ame serve che i valori sinao "1","2", etc.

madò sti array mi faranno impazzire
 
A parte che per gli array c'è l'apposito ciclo foreach... per eseguire l'implode dell'array basta che fai così:
PHP:
$val = '"' . implode('","', $avgs) . '"';
E avrai "1","2","3","4" e così via...

si mi so spiegato male mi servono '1','2', etc. ma quessto loa vevamo già visto e so farlo

avevo provato
PHP:
$val = "'".implode("','", $avgs)."'";

ma non mi restituiva niente

probabilmente ho sbagliato qualcosa

il foreach l'ho provaato ma non mi restituiva niente, per questo ho provato con while probabilemnte stos bagliando qualcosa

riprovo e ti faccio sapere
 
mamma miaaaaaaaaaaaaaa

uff
che faticaccia non riuscivo a fare l'up date rispetto l'id ho provato di tutte le maniere

foreach su $avgs e tant'altro

poi conto fino a 5 tazza di caffè e sigaretta

toh l'illuminazine

PHP:
  $avgs[$user] = ($rows > 0) ? ($total / $rows) : 0;
    $avgs[$user] = round($avgs[$user]);

l'ho cambiato in


PHP:
$avgs[] = round((($rows > 0) ? ($total / $rows) : 0),2);

e così finalmente il foreach


PHP:
foreach($dati as $key=>$id)
{ 


$value1 = $avgs[$key];

è andato e so risucito afare l'update

è stato un grosso errore non inserire nella tabella dove sono presenti i gicoatori, l'id del utente ma solo il suo nome. se era presente anche l'id sarebbe stato molto più facile

ancora una volta

GRAZIE

p.s.

a breve apro un altro topo con un altra chicca che mi martella :book::book:

:hammer:
 

Discussioni simili