per la questione di "rivedere" il codice... potresti basarti sulla "classica" separazione tra "logica e rappresentazione"... in partica nei cicli while NON generi alcun codice HTML, ma semplicemente imposti e definisci tutte le variabili: in particolare le varie righe con $row che vengono calcolate le potresti inserire in un vettore (diciamo per esempio $dati[]['descrizione']=..., $dati[]['nome']=...); in questo caso il punto dove ora c'è echo $cost (o con eval) non conterrebbe un output ma solo una computazione di una variabile (es.: $dati[]['cost'] = $row[$row['nome']]). Al termine dei cicli fai un nuovo ciclo sul vettore $dati per generare la TABLE in HTML.