Originariamente inviato da Rossella_75
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' quello che avevi chiesto tu, se invece vuoi un arrotondamento per eccesso devi cambiare le query in questo modo

Codice PHP:
$r mysql_query("SELECT MIN((valore - $input)) FROM tabella WHERE (valore - $input) >= 0");
$mindiff mysql_result($r00);
$r mysql_query("SELECT id, valore FROM tabella WHERE (valore - $input) = $mindiff");
$row mysql_fetch_array($r); 
Come ti ripeto l'ultima query può restituire anche più di un risultato nel caso in cui ci siano due record con lo stesso campo valore, se non è questo che vuoi dimmelo che va cambiata.

e poi se il numero è con la virgola ad esempio 527.575
non fà nulla...
Non è che non fa nulla, semplicemente se nella tabella hai solo valori interi, lui cerca (7000 - 527.575) = 4472,425 nel campo valore e non trova nessuna corrispondenza.

Tramite php puoi convertire il dato di input in intero con
Codice PHP:
$input = (int) $input// se è 527.575 diventa 527 
in questo modo troverai sempre corrispondenze.