Si el dato de marca o categoría lo envías desde otro archivo, puedes incluir éste archivo en el anterior y solamente verificarías si has recibido datos por el método POST que es el que estás usando, algo como esto:
Código PHP:
Ver original<?php
if (!$_POST) { //Si no se recibieron datos
$sql = mysql_query("SELECT * FROM productos WHERE marca = '" . $_POST['marca'] . "'"); }
else { //Si se recibieron datos
//Aquí haces la búsqueda con el dato recibido
}
?>
<li>
<div class="cont-productos">
<div class="cont-sec" id="cont-sec-texto">
<p><strong>Categoría:</strong><?php echo $p["categoria"];?></p>
<p><strong>Marca:</strong><?php echo $p["marca"];?></p>
<p><strong>Fabricado en:</strong><?php echo $p["fabricado"];?></p>
<p><strong>Código:</strong><?php echo $p["codigo"];?></p>
<p><strong>Precio:</strong><?php echo $p["precio"];?></p>
<p><strong>Descripción:</strong><?php echo $p["descripcion"];?></p>
</div>
<div class="cont-sec">
<img src="<?php echo $p["foto"];?>" width="150px" height="150px" />
</div>
</div>
</li>
Y en el primer archivo (desde el que envías los datos para la búsqueda), incluyes este archivo así:
Código PHP:
Ver original<?php
include ("busqueda.php");
//El resto del código
?>
De esta forma, cada vez que cargue el primer archivo, se mostrarán todos los datos de la tabla ya que todavía no se han enviado datos, ya luego de que se envíen los datos para la búsqueda, se mostrarán los datos filtrados.
Saludos