scusami in effetti non sono molto pratica, ma mi sto impegnando a studiare...
ottengo quasi sempre l'id più vicino solo che il mio database è
strutturato cosi
id valore
1 - 20

2 - 25

3 - 30

4 - 35

5 - 40

6 - 45

7 - 50

8 - 60

9 - 70

10 - 80

11 - 90

12 - 100

13 - 120

14 - 140

15 - 160

16 - 180

17 - 200

18 - 225

19 - 250

20 - 275

21 - 300

22 - 350

23 - 400

24 - 450

25 - 500

26 - 750

27 - 1000

28 - 2000

29 - 3500

30 - 7000

quindi ad esempio quando il valore è 5000 lui mi segnala l'ID 29 mentre dovrebbe andare per eccesso al l'id 30 è possibile?

e poi se il numero è con la virgola ad esempio 527.575
non fà nulla...

come posso migliorare il codice.... Grazie mille
codice:
<?php 
function calcolaprezzo($x, $y, $pezzi, $colori, $quadr, $perc) {
	$area = $x * $y; // calcolo l'area della superficie
	$r = mysql_query("SELECT MIN(ABS(cmq - $area)) FROM serigrafia"); 
	$mindiff = mysql_result($r, 0, 0); 
	$r = mysql_query("SELECT id, cmq FROM serigrafia WHERE (ABS(cmq - $area)) = $mindiff"); 
	$row = mysql_fetch_array($r);
	if ($quadr == "SI"){
	$totale = "Questo è l'id $row[id] - AREA DELLA SUPERFICIE: $area CMQ, NUMERO DI PEZZI: $pezzi, N. COLORI: $colori, QUADRICROMIA: $quadr";
	echo $totale;
	}else {
	$totale = "Questo è l'id $row[id] - AREA DELLA SUPERFICIE: $area CMQ, NUMERO DI PEZZI: $pezzi, N. COLORI: $colori";
	echo $totale;
	}
}
?>
Ancora grazie sei gentilissimo