PDA

View Full Version : [PHP] Ordinare un array multidimensionale e visualizzare solo i primi tre risultati


RayFanti
31-10-2014, 12:00
Salve a tutti!

Sto cercando di ottenere una top tre formata da delle statistiche che prelevo da un database contando il numero di righe corrispondenti a un dato parametro.

Tralasciando il fatto che mi sono sicuramente complicato inutilmente la vita grazie alla mia palese (vedi codice sottostante) ignoranza in php, sono arrivato al punto di avere una bellissima tabella basata su un array multidimensionale che però non riesco a ordinare secondo i parametri che voglio (pro, punti e sup).

Ho provato con usort e array_multisort, ma non riesco a ottenere i risultati voluti (probabilmente per il mio codice completamente arbitrario = ] )


Il codice:


$n = 1;
//
$r = mysql_query("SELECT id,nome,cognome FROM lista_g") OR die('Errore nella richiesta a MySQL');
mysql_close();
while($ri = mysql_fetch_assoc($r))
{
//
$r2 = mysql_query("SELECT pr FROM stat WHERE pr='".$ri['cognome']."'") OR die('Errore nella richiesta a MySQL');
mysql_close();
$pro = mysql_num_rows($r2);
//
$r3 = mysql_query("SELECT sr FROM stat WHERE sr='".$ri['cognome']."'") OR die('Errore nella richiesta a MySQL');
mysql_close();
$sup = mysql_num_rows($r3);

$punti = $pro + $sup;
$tot = mysql_num_rows($r);


$arr[$n++] = array("cognome" => $ri['cognome'], "nome" => $ri['nome'], "pro" => $pro, "sup" => $sup, "punti" => $punti);
}

for ($i = 1; $i <= $tot; $i++) {
$tab= array
(
$arr[$i],
);

echo '<tr><td><div align="center">'.$tab[0][cognome].', '.$tab[0][nome].'</div></td><td><div align="center"><b>'.$tab[0][pro].'</b></div></td><td><div align="center"><b>'.$tab[0][sup].'</b></div></td><td><div align="center"><b>'.$tab[0][punti].'</b></div></td></tr>';
}


Grazie in anticipo. : )

biowep
31-10-2014, 15:11
La richiesta è estremamente vaga e non sto capendo cosa intendi dire, anche perché il codice è indentato in modo sbagliato.
Inoltre dovresti usare Mysqli in quanto le funzioni che hai scritto sono deprecate. Consultare il manuale su php.net
Ed, inoltre ancora gli ordinamenti si fanno con sql, se possibile.

RayFanti
31-10-2014, 17:53
La richiesta è estremamente vaga e non sto capendo cosa intendi dire, anche perché il codice è indentato in modo sbagliato.
Inoltre dovresti usare Mysqli in quanto le funzioni che hai scritto sono deprecate. Consultare il manuale su php.net
Ed, inoltre ancora gli ordinamenti si fanno con sql, se possibile.


Non parlo il codese e l'incomprensione è reciproca. :(

Cosa dovrei controllare di preciso??
Perché si tratta di una cosa molto amatoriale, giusto per avere qualche statistica e farsi una risata a fine stragione.
Se possibile, vorrei evitare di leggere paginate superflue per una cosa che prima facevo direttamente a mano, altrimenti la semplificazione dell'automaticità verrebbe a mancare.


Da quel codice io ottengo una tabella dall'array $tab del tipo:

Nome Pro Sup Punti
Pino 2 3 5
Gino 3 2 5
Ino 6 3 9
Tino 1 6 7
Zino 1 0 1
Nino 0 0 0

E vorrei ordinarla così:
Nome Pro Sup Punti
Ino 6 3 9
Gino 3 2 5
Pino 2 3 5