Не могу понять почему ссылки работают не правильно.

McLoud

Guest
Не могу понять почему ссылки работают не правильно.

Я только начал осваивать PHP и естественно возникла куча вопросов.
1. Насколько грамотно написан нижеприведенный код или это полный бред и так писать нельзя.
2. Почему-то не правильно работают ссылки. По идее стоя на открытой странице ссылки на нее же быть не должно, а она есть.
PHP:
<?php
class Page
{
    var $content;
    var $buttons = array( "Главная" => "../",
    				      "О ..." => "/about/"
                        );
	function SetContent($newcontent)
    {$this->content = $newcontent;}
    function SetButtons($newbuttons)
    {$this->buttons = $newbuttons;}
    function Display()
    {
       	echo "<html>\n<head>\n";
        echo "</head>\n<body>\n";
        $this->DisplayHeader();
        $this->DisplayMenu($this->buttons);
        echo $this->content;
        $this->DisplayFooter();
        echo "</body>\n</html>\n";
    }
    function DisplayHeader()
    {
?>
//Тут Html теги
<?php
	}
	function DisplayMenu($buttons)
    {
    	echo "<table width=\"100%\" bgcolor=#FFFFFF cellpadding=0 cellspacing=0>\n";
        echo "<tr>\n";
        $width=100/count($buttons);
        while (list($name, $url)=each($buttons))
        {$this->DisplayButton($width, $name, $url, !$this->IsURLCurrentPage($url));}
        echo "</tr>\n";
        echo "</table>\n";
    }
    function IsURLCurrentPage($url)
    {
    	if(strpos($globals["script_name"], $url)==false)
         {return false;}
         else
         {return true;}
	}
    function DisplayButton($width, $name, $url, $active=true)
    {if($active)
         {echo "<td width=\"$width%\"><a href=\"$url\">$name</a></td>";}
          else
         {echo "<td width=\"$width%\">$name</td>";}
    }
    function DisplayFooter()
    {
?>
//Тут Html теги
<?php
	}
}
?>
 

SelenIT

IT-лунатик :)
Первая ошибка: не учитываешь, что имена переменных в PHP регистрозависимы.

Вторая ошибка - пишешь под register_globals=on. Явно учишься по какой-то старой книге. Скорее откладывай ее в сторонку и наверстывай упущенное тут: PHP FAQ: Не передаются переменные! Проблема register_globals.

А про грамотность подхода пусть лучше скажут эксперты по ООП.
 

McLoud

Guest
Есть такое дело. Я тут прочел несколько книжек. Может не то читал?
 

Gas

может по одной?
McLoud
Имхо не нравится.
Как говорится "смешались кони, люди", логика и представление всё вкучу. Правки в дизайне сложно делать.

Вот класс для работы со структурой сайта - какие есть разделы, какой текущий, ф-ции а-ля IsURLCurrentPage, то есть который работает с данными и их возвращает, может быть полезен.
 
Сверху