Già una cosa. Hai scritto : select idD from dispensa. Poi recuperi il numero delle righe con mysqli_num_rows.
Come fai carichi in memoria tutti gli id che hai ed é uno sprecco di memoria.

E' meglio fare un : select count(idD) as num_record from dispensa. Poi recuperi num_record con uno fetch e fai l'assegnazione a $righe.

C'è anche un metodo che consente di ricavare il numero dei record di una tabella leggendo le proprietà della suddetta tabella ma non mi ricordo come (non ho il PC davanti a me).