Secondo me ti conviene usare un approccio diverso.

Molto piu' comodo.

Io quando devo fare cose similari prima carico i dati e li metto su variabile e poi li stampo dove serve.

per cui io procederei cosi'

1-Query
2-Controllo ris query
2.1-se ho dati carico i dati e li converto nelle oppurtune stringhe che salvo su varibili distinte

3- controllo di avere caricato i dati
4- stampo i dati precedentemente caricati.

Secondo me e' l'approccio migliore che puoi adottare quando hai problematiche similari.

Codice PHP:

$records_per_row 
3;
$i 0;

$testi =array();

while (
$row=mysql_fetch_array($query)) {

  
// inserisci i controlli e popoli di dati le celle dell'array
  
if([controllo1]) 
    
$testi[0] .= ".....";
  else if([
controllo2])
    
$testi[1] .= ".....";
  else
    
$testi[2] .= ".....";
}

// a questo punto crei i 3 box e li riempi di dati
echo "
<div id=\"box1\">"
.$testi[0]."</div>
<div id=\"box2\">"
.$testi[1]."</div>
<div id=\"box3\">"
.$testi[2]."</div>
"