Para "limitar" y q carguen, por ejemplo, 20 productos sólo... sería con la cláusula LIMIT de sql, por ejemplo. Si quieres poder avanzar 20 más... se llama "paginación". Busca en aportes, hay varios explicandolo :)
Ahora, en cuanto a poner dos productos "en línea", es simple.
En tu bucle, tienes algo así:
Código PHP:
<?php
while(algo) {
?>
<tr>
<td>
aqui_el_contenido
</td>
</tr>
<?php
}
Ese es tu bucle principal. Si te fijas, está dentro de una tabla. Y haces una fila (tr), y una celda (td). Tu lo que quieres es crear una fila (tr), y dos celdas (td). Básicamente, cada dos "iteraciones" del bucle, quieres que te imprima "</tr>" y "<tr>", te quedaría algo así el bucle
Código PHP:
<?php
$i = 0;
while(algo) {
if($i%2 == 0) echo '<tr>';
?>
<td>
aqui el contenido
</td>
<?php
if($i%2 == 1) echo '</tr>';
$i++;
}
if($i%2 == 1) echo '</tr>'; //Esto es por si se queda en número impar de productos ;)
Básicamente, añade un contador ($i), que vigila el número de iteracion en el que estás. Si es par (0, 2, 4, 6, 8...) empieza una fila, y si es impar (1, 3, 5, 7, 9...) termina la fila.
Recuerda que empieza por cero ;)
PD: El operador % lo que hace es darte el resto de una división ;)