Lo unico que se me ocurre es que vayas guardando en una variable las IDs de los productos que hayas mostrado ya separados por comas y que al hacer la consulta le metas una id NOT IN ($idsmostradas).
Al ser paginacion, define un numero de articulos por pagina, que las ID si avanza de pagina te las de la DB pero si vuelve hacia atras le metes un explode a la variable con IDs.
Es decir:
Código PHP:
Ver original$total_por_pag = 50;
if(isset($_REQUEST['idsmostradas'])) { $array_de_ids = explode(',',$_REQUEST['idsmostradas']); $total_registros = count($array_de_ids); if($total_por_pag*$pag_actual)<$total_registros) { // Es una pagina ya mostrada
$filtro_SQL = 'AND id IN (';
for($x=$total_por_pag*$pag_actual;$x<=$total_por_pag*$pag_actual+$total_por_pag;$x++) {
$filtro_SQL .= $array_de_ids[$x].',';
}
$filtro_SQL = substr($mostrar_ids,0,strlen($mostrar_ids)-1); $filtro_SQL .= ')';
} else { // Es una página nueva
$filtro_SQL = 'AND id NOT IN ('.$_REQUEST['idsmostradas'].')';
}
} else
$filtro_SQL = '';
$sql = 'SELECT * FROM tabla WHERE tusfiltros '.$filtro_SQL.''
Algo asi :)
Como sujerencia: Cuando concatenes en PHP; si vas hacerlo bien usa comillas simples, el parser si encuentra comillas dobles tarda más ya que busca dentro del string posibles variables de PHP que interpretar, con lo cual tarda mas, usando simples, le indicas al parser que lo que hay en ese string es texto plano y si quieres mostras variables concatenas como bien haces.
Un saludo