curiosita' max(array)

zighy

Utente Attivo
20 Gen 2012
96
0
0
PHP:
$query ="select * from punti ";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
echo $row[campo];
Ho questa query che mi restituisce tutti i valori del campo $row[campo], che se non sono ancora sbroccato completamente è un array.
Sarei curioso di sapere perchè non riesco a estrarre il valore piu' alto con
PHP:
$max=max($row[campo]);
almeno vorrei delucidazioni.Grazie.
 

zighy

Utente Attivo
20 Gen 2012
96
0
0
Grazie per la risposta Borgo ma cosi facendo mi restituisce il primo campo della tabella (id) quindi non calcola nessun max perchè è sempre lo stesso oltre a non essere il campo del quale vorrei trovare il valore piu' alto.

id | campo1 | campo2
1 | 2 | 2
1 | 8 | 3
1 | 5 | 9
1 | 3 | 1

Esempio.. se la tabella fosse questa sopra mi restituisce 1. Spero di essermi spiegato.
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.038
146
63
PR
www.borgo-italia.it
ciao
potresti provare così
PHP:
<?php
//..
$query ="select * from punti ";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)){
	$cerca_max[]=$row[campo];
	echo $row[campo]; 
}
echo "massimo punteggio: ".max($cerca_max);
//...
?>
oppure puoi ordinare la query per il punteggio
 

zighy

Utente Attivo
20 Gen 2012
96
0
0
si alla fine anch'io sono giunto alla soluzione di ordinare la query pero' ho diversi campi quindi diventa una script lungo poi ordino i risultati in un array e ricavo il valore piu' grande con max.. funziona come voglio solo mi chiedevo se c'era un modo per estrapolare tutti i dati di diversi campi e trovare il piu alto senza dover fare diverse query. Ieri c'ho smattato un po ma per ora mi arrangio cosi. Ho chiesto perchè magari qualcuno aveva una soluzione geniale. Grazie tante cmq. :)
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, la funzione max esiste anche in mysql
Codice:
SELECT max(campo) as alto FROM tabella
 

zighy

Utente Attivo
20 Gen 2012
96
0
0
ciao criric,
sono a conoscenza di select max ma correggimi se sbaglio (ho provato mi pare) funziona per ogni singolo campo quindi usare select max o ordinare la query non mi cambia molto devo cmq fare query per ogni campo solo usando select max.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
non cambia molto se dopo l' ORDER BY ci metti anche LIMIT 1 visto che max ti restituisce soltanto un record
ma non ho capito bene cosa vorresti ottenere
 

zighy

Utente Attivo
20 Gen 2012
96
0
0
Guarda i post precedenti, ho 'disegnato' una tabella "punti" di esempio.Volevo estrarre tutti i dati di tutti i campi e trovare il piu' alto senza dover estrarre il valore piu' alto campo per campo e poi trovare il maggiore. La mia era piu' che altro una curiosita' per semplificare lo script.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
il codice che ti ha postato Borgo allora è perfetto
crea un nuovo array da verificare con la funzione max()
 

zighy

Utente Attivo
20 Gen 2012
96
0
0
:)
Borgo spesso mi ha aiutato e so che è ferratissimo ma in questo caso il suo script è buono per campo come con un order.. cmq adesso apro un altra discussione che nel mio piccolo credo sia davvero complicata.. vi ringrazio per le dritte di questo caso ma alla fine ho ordinato campo x campo senza starmi a complicare la vida.. ciao