Le stò provando tutte: ma come sempre ne sistemi una e cento ne vengono fuori.
Sono riuscito a far funzionare la query senza il nascondere i campi non completati, ma se implemento le if non mi funziona alla terza clausola and.
Codice PHP:
<?php
include('connect-db.php');
if (
$_POST['rec_id_da'] == "") {} else {$id=" AND schedario.id BETWEEN '".$_POST['rec_id_da']."' AND '".$_POST['rec_id_a']."'";}
if (
$_POST['data_da'] == "") {} else {$data=" AND schedario.data BETWEEN '".$_POST['data_da']."' AND '".$_POST['data_a']."'";} 
if (
$_POST['categoria'] == "") {} else {$categoria=" AND schedario.categoria = '".$_POST['categoria']."'";} 

$result mysql_query("SELECT * FROM schedario WHERE $id $data $categoria");if (!$result) {    die("Errore nella query $query: " mysql_error());}
while(
$row mysql_fetch_array$result )) {
P.S. Ma se io compilo la WHERE con gli '".$_POST['...']."' di ogni campo, poi se in quel campo non viene inserito nessun valore la where lo riconosce come NULL o come tutti *