Semplifico con un esempio.
Ho una tabella chiamata "favorito" con 3 campi: quota / arrivo / diff (dove "quota" e "diff" sono float) così popolato:
2.01 / 4 / 1.11
1.99 / 2 / 1.03
3.02 / 3 / 0.31
4.92 /1 / 0.78
3.75 / 1 / 0.29
1.46 / 1 / 3.18
1.95 /4 / 0.84
Questo è il codice
codice:
<?php
//connessione al db
$query = "SELECT quota,arrivo,diff FROM favorito ";
$result = (mysql_query($query, $db));
while ($dati = mysql_fetch_array($result))
{
$quota = $dati['quota'];
$arrivo = $dati['arrivo'];
$diff = $dati['diff'];
$indice=$diff*100;
$conta[$indice][$arrivo]=$conta[$indice][$arrivo]+1;
if ($arrivo==1) { $conta[$indice][5]=$conta[$indice][5]+$quota;}
}
?><table width="90%" border="1" cellspacing="1" cellpadding="2" bgcolor="#ecf2f6" align="center">
<tr><th><font size="4">VISUALIZZAZIONE PER DIFFERENZA DI QUOTA</font></th></tr>
<table width="90%" border="1" cellspacing="1" cellpadding="2" bgcolor="#f0fff0" align="center">
<thead>
<tr><th width="32%"><h3>diff. quota</h3></th>
<th width="34%"><h3>vittorie</h3></th>
<th width="34%"><h3>corse disputate</h3></th>
</tr></thead><tbody>
<?php
//qua serve il for per stampare le righe
for ($i=0; $i<=5000; $i++)
{
//occore vedere che la singola riga abbia almeno una corsa
$cd=$conta[$i][1]+$conta[$i][2]+$conta[$i][3]+$conta[$i][4];
$conta[$i][6]=substr($conta[$i][6],0,-1);
if ($cd>0) { ?>
<tr><td><center><?php echo number_format($i/100,2,'.',''); ?></center></td>
<td><center><?php echo $conta[$i][1]; ?></center></td>
<td><center><?php echo $cd; ?></center></td>
</tr><?php
}
}
echo ("</tbody></table>
</p>");
In pratica deve fornire poi un ordine per differenza ed essendo variabili con 2 decimali dopo la virgola ho pensato di moltiplicarlo per 100 così da avere un array che poi diventa bidimensionale perché ciascun "arrivo" può assumere valori 1, 2, 3 o 4.
I valori delle "diff" sono
1.11
1.03
0.31
0.78
0.29
3.18
0.84
ma quando viene visualizzata la tabella esce così
0.28 1 1
0.31 1
0.78 1 1
0.84 1
1.03 1
1.11 1
3.18 1 1
In pratica lo 0.29 mi diventa 0.28.
Perché??????