Ci risiamo___Array su intero codice

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio
Allora il mio script dovrebbe funzionare perfettamente... prova a modificare il ciclo così:
PHP:
print_r($dati);
print_r($dati2);

foreach($res as $key => $id) 
{ 
    $value = $totusc[$key]; 
     
    $sql = "UPDATE mon_prova SET entrate = '{$value}' WHERE id = '{$id}'"; 
    print_r($sql);

    mysql_query($sql) or die(mysql_error()); 
}
E dimmi cosa viene stampato a video.
 
Array ( [0] => 1 [1] => 6 [2] => 9 [3] => 5 [4] => 13 [5] => 12 [6] => 8 [7] => 10 [8] => 7 [9] => 24 [10] => 16 [11] => 2 [12] => 4 [13] => 25 [14] => 19 [15] => 14 [16] => 20 [17] => 11 [18] => 3 [19] => 23 [20] => 26 [21] => 15 [22] => 17 [23] => 18 [24] => 22 [25] => 21 ) Array ( [0] => 292 [1] => 318 [2] => 423 [3] => 289 [4] => 433 [5] => 451 [6] => 536 [7] => 443 [8] => 761 [9] => 328 [10] => 339 [11] => 474 [12] => 542 [13] => 246 [14] => 390 [15] => 850 [16] => 458 [17] => 422 [18] => 254 [19] => 254 [20] => 305 [21] => 487 [22] => 412 [23] => 271 [24] => 373 [25] => 278 )

ma non effettua l'update


@edit
modificato il quote, avevo sbagliato la prima variabile e non mi restituiva l'array
 
Ultima modifica:
Ops, ho sbagliato io. Prova così:
PHP:
foreach($dati as $key => $id) 
{ 
    $value = $dati2[$key]; 
     
    $sql = "UPDATE mon_prova SET entrate = '{$value}' WHERE id = '{$id}'"; 
    mysql_query($sql) or die(mysql_error()); 
}

Oggi video tastiera router stampante stavo cercando di imparare a volare, ma nel momento in cui mi sono accorto che avevo messo $res al posto di $dati e dopo averlo sostuito lo script ha funzionato alla PERFEZIONE, sono tornati sulla mia scrivania :mavieni:

non ho parole aless sei un grande non c'è la faccina di addorazione ma la meriti tutta

questo sistema funge anche epr ricavare l'età media?

PHP:
  $query = "SELECT AVG(Eta) as tot_eta FROM utenti WHERE idutente='1';
    $risultato = mysql_query($query);
		if($risultato) {
  $row = mysql_fetch_array($risultato);
 $medeta=round($row['tot_eta'],1); // <- qui hai il risultato che ti aspetti
echo $medeta;
 }

faccio una query epr ogni utente cmq mò so troppo contento di sto foreach vado a lavorarci su

Grazi grazi ed ancora grazie


:book::book::book::book::book::book::book::book::book:
 
Potresti fare una cosa del genere:
PHP:
$sql = 'SELECT * FROM utenti';
$query = mysql_query($sql) or die(mysql_error());

$total = 0;

while($user = mysql_fetch_assoc($user))
	$total += $user['Eta'];

$rows = mysql_num_rows($total);

if($rows > 0)
	$avg = round($total / $rows, 1);
Fammi sapere se ha funzionato!
 
fiuuuuuuuuuuuuuuuu

scusa so stato preso dal codice precedente :hammer: stavo impazzendo sulle addizioni e sotrattozioni degli array poi ho risolto con una nuova tabella dove memorizzo i dati e successivamente li riestraggo e li sottraggo

cmq no non funzionail codice che hai postato mi resituisce pagina bianca, avevi dimenticato le graffe all' if e le ho aggiunte ma niente
 
Le graffe nell'if non servono, perché successivamente viene eseguita una sola istruzione e si possono anche omettere. Comunque è normale che il mio script ti dia pagina bianca, perché non stampa a video nulla. Tuttavia, dopo aver eseguito quelle istruzioni, la variabile $avg dovrebbe contenere la media delle età.
 
Le graffe nell'if non servono, perché successivamente viene eseguita una sola istruzione e si possono anche omettere. Comunque è normale che il mio script ti dia pagina bianca, perché non stampa a video nulla. Tuttavia, dopo aver eseguito quelle istruzioni, la variabile $avg dovrebbe contenere la media delle età.

si la'vevo aggiunto io l'echo a $avg
 
Ho sbagliato io. Modifica questa riga:
PHP:
$rows = mysql_num_rows($total);
Così:
PHP:
$rows = mysql_num_rows($query);

mi restituisce 1.1

che ovvaimene non ho

nella select ho aggiunto il where dove definisco l'utente da cercare

e non capisco bene perchè haid efinito total= a 0
 
Modifica questa riga:
PHP:
$avg = round($total / $rows, 1);
Così:
PHP:
$avg = round($total / $rows);
La variabile $total è inizializzata a 0, ma poi, dopo il ciclo, assume il valore equivalente al totale delle età di tutti gli utenti. Successivamente, viene divisa per il numero degli utenti (la media si calcola dividendo la somma dei valori per il numero dei valori stessi).
 
Modifica questa riga:
PHP:
$avg = round($total / $rows, 1);
Così:
PHP:
$avg = round($total / $rows);
La variabile $total è inizializzata a 0, ma poi, dopo il ciclo, assume il valore equivalente al totale delle età di tutti gli utenti. Successivamente, viene divisa per il numero degli utenti (la media si calcola dividendo la somma dei valori per il numero dei valori stessi).

ale non me ne volere


lo script funziona
PHP:
while($user = mysql_fetch_assoc($user))
    $total += $user['Eta'];

qua avevo tolto il + da vicino l'uguale, pensavo fosse stata una tua svustaper questo non andava
facendo vari echo e rivedendo il tuo script originale me ne so accorto


ora mi dà l'età media giusta

scusami se ti ho fatto eprde del tempo puoi/ vuoi spiegarmi sta cosa del +=


grazie cmq sei un grande sia per conoscenza che per disponibilità
 
però ale ok lo script funziona con un utente ma quando isnerisco nella where l'arrai delle id

mi restituisce l'età media di tutta la colonna


mentre nella mia tabella ci sono tot giocatori assegnati a x tot a y etc.

io vorrei fare l'eta emdia dei giocatori di misterx di mister y ecosì via

quindis empre inserendo nella where l'array degli id utenti
 
Non ho capito bene quale condizione devono rispettare i record di cui devi calcolare la media... dimmi direttamente a quale valore deve corrispondere quale campo.

Comunque scrivere:
PHP:
$total += $row['Eta'];
È come scrivere:
PHP:
$total = $total + $row['Eta'];
Solo che si può abbreviare.
 
Non ho capito bene quale condizione devono rispettare i record di cui devi calcolare la media... dimmi direttamente a quale valore deve corrispondere quale campo.

Comunque scrivere:
PHP:
$total += $row['Eta'];
È come scrivere:
PHP:
$total = $total + $row['Eta'];
Solo che si può abbreviare.

deve calcolare l'età media dei giocatori assegnati ad un utentex

in pratica nella tabella deve pescare tutte l'eta dove c'è come utente l'utentex e farne la media

solo che invece di scrivere

PHP:
$sql = 'SELECT * FROM utenti' where Nome='$utentex';
$query = mysql_query($sql) or die(mysql_error());

come lo script di prima vorrei fare

PHP:
$sql = 'SELECT * FROM utenti' where Nome IN($tuttiutenti)';
$query = mysql_query($sql) or die(mysql_error());
 
Non capisco... se esegui una query del genere è come se estraessi tutti i giocatori, perché tutti i giocatori sono assegnati ad un utente ma tu selezioni i giocatori di TUTTI gli utenti. A questo punto la condizione perde significato... è come se io in una tabella avessi un campo ENUM che può essere 1, [/B]2[/B] o 3 e scrivessi una query del genere:
Codice:
SELECT * FROM tabella WHERE campo IN('1','2','3')
La condizione sarebbe inutile. Sarebbe uguale scrivere:
Codice:
SELECT * FROM tabella
Avrebbe avuto un senso se avessi voluto selezionare i giocatori di un determinato utente e ricavarne l'età media, ma così non ne vedo l'utilità...
 
Avrebbe avuto un senso se avessi voluto selezionare i giocatori di un determinato utente e ricavarne l'età media, ma così non ne vedo l'utilità...
questo è quello che mi serve

in pratica io già ora ricavo l'età media di tutti i giocatori di un determinato utente solo che attualmente lo faccio uno per uno

invece con questa funzione vorrei che ricavasse l'età media di tutti i giocatori di un utente ma utente per utente
 
Quindi tu hai bisogno, per esempio, di un array associativo composto così:
Codice:
utente1 => [età media dei suoi giocatori],
utente2 => [età media dei suoi giocatori],
utente3 => [età media dei suoi giocatori]
E così via, giusto? Cioè per ogni utente la relativa media?
 
Quindi tu hai bisogno, per esempio, di un array associativo composto così:
Codice:
utente1 => [età media dei suoi giocatori],
utente2 => [età media dei suoi giocatori],
utente3 => [età media dei suoi giocatori]
E così via, giusto? Cioè per ogni utente la relativa media?

si esatto
però il problema è che la tabella e fatta cosi

ID Nome Eta Utente
1 Pippo 20 Giovanni
2 Topolino 22 Matteo
3 Pluto 18 Francesco
4 Minni 25 Giovanni

quindi l'utente può ripwtersi + volte nella tabella perciò dovrei estrarre prima tutte le età relative all'utente e poi farne la media
 

Discussioni simili