... trovato l'errore... sbagliavo, come supponevo nel far analizzare l'array quando è vuoto... posto il codice finale, magari può servire a qualcuno:
Codice PHP:
<?php

$serverdb
='localhost';
$userdb='root';
$passdb='';
$db='test';
$table='news';

$link=mysql_connect("$serverdb","$userdb","$passdb")
or die (
"Impossibile connettersi");


mysql_select_db($db,$link);

$sel=mysql_query("SELECT * FROM news
WHERE data <= DATE_ADD(CURDATE(), INTERVAL 30 DAY);"
);
if (!
$sel) {
           exit (
'

 Errore mentre recuperavo i dati' 
mysql_error() . '</p>');
 
                }
if (
mysql_num_rows($sel) == 0) {
   echo 
"non ci sono eventi";
} else {
   while(
$news mysql_fetch_array($sel)) {


$a=$news['dataev'];
$for1=explode(" "$a);
$data=explode("-"$for1[0]);
$ora=explode("-"$for1[1]);

$a1=$news['data'];
$for1=explode(" "$a1);
$data1=explode("-"$for1[0]);
$ora1=explode("-"$for1[1]);

     echo 
"".$news['titolo']."</h2>
"
.$news['art']."
che si terrà il "
.$data[2]."/".$data[1]."/".$data[0]." alle ore ".$ora[0]."

Pubblicato il "
.$data1[2]."/".$data1[1]."/".$data1[0]." alle ore ".$ora1[0]."

</p>"
;
}
}
 
?>
in pratica con questo codice stampa tutti i record che nel campo 'data' contengono un timestamp non superiore di 30 giorni alla data attuale e se assenti stampa la striga "non ci sono eventi".
Grazie comunque!