a me non sembra che il between includa i valori estremi.
Nel mio esempio ho questo record:
NOTIZIA 1 data_inizio: 2007-02-03 data_fine: 2007-02-04

uso questa query per trovare la settimana corrente ed estrarre gli articoli:

Codice PHP:
function eventi() {
// Restituisce inizio (LUN) e fine (DOM) della settimana corrente e di quella successiva
$mesi = array(1=>'Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno',
              
'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre');

$oggi date('Y-n-d');
list(
$anno,$mese,$giorno) = explode("-",$oggi);
$numero_lunedi $giorno date('w') + 1;
$questo_lunedi $anno.'-'.$mese.'-'.$numero_lunedi;
$questa_domenica date('Y-n-d',strtotime("$questo_lunedi + 6 days"));
$prossimo_lunedi date('Y-n-d',strtotime("$questo_lunedi + 1 week"));
$prossima_domenica date('Y-n-d',strtotime("$questa_domenica + 1 week"));
list(
$anno_ql,$mese_ql,$giorno_ql) = explode('-',$questo_lunedi);
list(
$anno_pl,$mese_pl,$giorno_pl) = explode('-',$prossimo_lunedi);
list(
$anno_qd,$mese_qd,$giorno_qd) = explode('-',$questa_domenica);
list(
$anno_pd,$mese_pd,$giorno_pd) = explode('-',$prossima_domenica);

$questa_settimana = ($mese_ql == $mese_qd) ? "Eventi dal $giorno_ql al $giorno_qd $mesi[$mese_ql] $anno_qd"
                                           
"Eventi dal $giorno_ql $mesi[$mese_ql] al $giorno_qd
                                                 
$mesi[$mese_qd] $anno_qd";

$prossima_settimana = ($mese_pl == $mese_pd) ? "Eventi dal $giorno_pl al $giorno_pd $mesi[$mese_pl] $anno_pd"
                                           
"Eventi dal $giorno_pl $mesi[$mese_pl] al $giorno_pd
                                                 
$mesi[$mese_pd] $anno_pd";

return array(
$questa_settimana,$prossima_settimana);
}

list(
$questa,$prossima) = eventi();
echo 
"<h2>$questa</h2>";

$s="SELECT * FROM $table WHERE curdate() BETWEEN data_inizio AND data_fine ORDER BY categoria";
$r=mysql_query($s);
while(
$d=mysql_fetch_array($r)){
echo 
"$d[titolo]
"
;

ma non funzia!