Te recomiendo trabajar con fechas UNIX para hacer cálculos.
Las fechas UNIX van en segundos, por lo que es muy sencillo sumar minutos, horas, dias e incluso semanas, meses y años.
Para tu problema es bastante sencilla la solucion, tan solo debes coger la fecha inicial que te de el usuario y la fecha de ahora.
Las restas y calculas cuantas semanas hay en ese periodo de tiempo.
Este tipo de funciones son muy comunes y sencillas de encontrar en internet.
Aqui te dejo un par que acabo de encontrar.
Código PHP:
Ver originalfunction days_between($datefrom,$dateto){
$fromday_start = mktime(0,0,0,date("m",$datefrom),date("d",$datefrom),date("Y",$datefrom)); $diff = $dateto - $datefrom;
$days = intval( $diff / 86400 ); // 86400 / day
if( ($datefrom - $fromday_start) + ($diff % 86400) > 86400 )
$days++;
return $days;
}
function weeks_between($datefrom, $dateto)
{
$day_of_week = date("w", $datefrom); $fromweek_start = $datefrom - ($day_of_week * 86400) - ($datefrom % 86400);
$diff_days = days_between($datefrom, $dateto);
$diff_weeks = intval($diff_days / 7); $seconds_left = ($diff_days % 7) * 86400;
if( ($datefrom - $fromweek_start) + $seconds_left > 604800 )
$diff_weeks ++;
return $diff_weeks;
}