Te complicas mucho por algo que parece tan sencillo, usa un contador y reinícialo dentro del while para seguir creando y cerrando <tr>:
Código PHP:
Ver original$cuenta = 1;
$columnas = 2; // Si fueran más, sólo lo modificas y listo
echo '<table>';
while(/* lectura de la consulta */) {
// Si ya se mostró el total de columnas, hay que cerrar <tr>
if($cuenta == $columnas) {
echo '</tr>';
// Reinicializas la cuenta
$cuenta = 1;
}
// Si la cuenta va en 1, hay que abrir <tr>
if($cuenta == 1) {
echo '<tr>';
}
// Aquí el <td>
echo '<td>contenido de la celda</td>';
// Incrementas el contador
$cuenta ++;
}
// Por si las moscas, revisas si hay que cerrar <tr>
if($cuenta == 2) {
echo '</tr>';
}
echo '<table>';