- вычислить сколько частей ("/") в урле. применить соответственно дочерний класс (Url1, Url2 и тд)
- регулярками узнать что запрашивается - дата, номер или название, запустить соответствующую ф-ию, которая соберёт массив для SQL-строки.
- полученное чудо передать методу класса Mysql, любезно разобранному в этой теме http://pyha.ru/forum/topic/3394.0
возможно неправильно поставил задачу, но такая логика пришла на ум, хз…
class Url
{
public $url;
public $sql=array();
public $dir=array();
public $q=array();
/*вот честно так и не въехал что из этого надо, а что нет??!*/
//убираем лишнее, урл в массив:
function clean_url()
{
$dir=explode("/", $_SERVER['REQUEST_URI']);
$dir = Clean_array($dir);//пользовательская, работает!!
return $dir;
}
//сколько частей?
public function check_url()
{
$dir = self::clean_url();
$u = count($dir);
switch($u)
{
case 1: Url1::parse_url($dir); break;
case 2: Url2::parse_url($dir); break;
case 3: Url3::parse_url($dir); break;
}
}
}
class Url1 extends Url
{
public function parse_url($dir)
{
$ER = array(
'y_m_d' => "^20([0-9]{2})-([01][0-9])-([0-3][0-9])$",
'y_m' => "^20[0-9]{2}-[01][0-9]$",
'y' => "^20[0-9]{2}$",
'num' => "N[1-9][0-9]*",
'title' => "[:alnum:]*");
foreach($ER as $k=>$v)
{if(eregi($v, $dir[1])){break;}}
$sql = self::$k($dir[1]);
return($sql); //и вот это не возвертается во внешний мир!!
}
public function y_m_d($dir)
{
$sql=array();
$sql[] = '*';
$sql[] = 'articles';
$sql[] = array(
'DATE' => $dir);
$sql[] = 1;
return $sql;
}
function title($dir)
{
$sql[] = '*';
$sql[] = 'articles';
$sql[] = array(
'TITLE'=>$dir);
$sql[] = 1;
return $sql;
}
}