Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] подставлять значения в зависимости от открытой страницы PhP (http://forum.oszone.net/showthread.php?t=150378)

binders 13-09-2009 06:09 1217662

подставлять значения в зависимости от открытой страницы PhP
 
раньше у HTML сайта было такое меню

HTML код:

<div id="iefix">
  <div id="horiz-menu" class="splitmenu">
    <ul class="menu">
      <li id="current" class="active"><span class="top"><a href="index.php">Главная</a><span class="selector"><br />
        </span></span></li>
      <li><span class="top"><a href="rules.php">Правила</a><span class="selector"><br />
        </span></span></li>
      <li><span class="top"><a href="reg.php">Регистрация</a><span class="selector"><br />
        </span></span></li>
      <li><span class="top"><a href="login.php">Аккаунт</a><span class="selector"><br />
        </span></span></li>
      <li><span class="top"><a href="faq.php">FAQ</a><span class="selector"><br />
        </span></span></li>
      <li><span class="top"><a href="gb.php">Гостевая</a><span class="selector"><br />
        </span></span></li>
    </ul>
  </div>

где если вставить в тег <li id="current" class="active"> то менюшка становилась активной

а теперь сайт переехал на PHP и всё это перенесено в header.php
вобщем исчезла красота

мож есть возможность подставлять id и class в зависимости от открытой страницы

Sham 13-09-2009 08:49 1217684

можно в PHP с помощью str_replace или preg_replace (парсить код меню с PHP_SELF)...
и javascript`ом тоже просто...

binders 13-09-2009 17:48 1218005

А если я чайник в php
можно обьяснить по подробней ?

Sham 14-09-2009 08:53 1218377

так примерно
PHP код:

$PHP_SELF basename($_SERVER['PHP_SELF']);
// $menu содержит код меню
$menu str_replace
(
    
'<li><span class="top"><a href="'.$PHP_SELF.'">',
    
'<li id="current" class="active"><span class="top"><a href="'.$PHP_SELF.'">',
    
$menu
); 


binders 14-09-2009 19:18 1218910

я конешно извиняюсь но опять нечего не не понял :not-me:
я не просто чайник а кипятильник

если можно ещо подробней

Sham 15-09-2009 02:18 1219184

Цитата:

Цитата binders
и всё это перенесено в header.php »

там чистый хтмл-код? Выложите, посмотрим...

binders 15-09-2009 02:32 1219187

PHP код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<?
include("setup.php");
require (
"inc/connect.inc.php");
$sql=mysql_query("select*from pages");
$row=mysql_fetch_array($sql);
$sql=mysql_query("select*from sysvals");
$row1=mysql_fetch_array($sql);
$selectedpravactive=$row1['prav_active'];

?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<?=$row['head_meta'];?>
<title><?=$row['head_title'];?></title>
<link href="css/template_css.css" rel="stylesheet" type="text/css" />
<link href="css/style<?=$row['style'];?>.css" rel="stylesheet" type="text/css" />
<link href="css/rokmoomenu.css" rel="stylesheet" type="text/css" />
        
        <link href="css/template_ie7.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon">



    <style type="text/css">
        div.wrapper { margin: 0 auto; width: <? if($selectedpravactive==NO): echo"1000"; endif; ?>
<? 
if($selectedpravactive==YES): echo"1200"; endif; ?>
px;padding:0;}
        td.secondcol { width: 235px;}
        td.thirdcol { width: 235px;}
    </style>
    <script type="text/javascript" src="js/mootools-release-1.11.js"></script>        
    <script type="text/javascript">
        window.addEvent('domready', function(){    var FlipTip = new Tips($$('.fliptip'), { className: 'fliptip' });}); 
    </script>
    
    <!--[if IE]>
<script type="text/javascript">
sfHover = function() {
    var sfEls = document.getElementById("horiz-menu").getElementsByTagName("LI");
    for (var i=0; i<sfEls.length; i++) {
        sfEls[i].onmouseover=function() {
            this.className+=" sfHover";
        }
        sfEls[i].onmouseout=function() {
            this.className=this.className.replace(new RegExp(" sfHover\\b"), "");
        }
    }
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
</script>

<![endif]-->
    
        </head>

<script language=JavaScript> 
            var h=(new Date()).getHours(); 
            if (h > 23 || h < 7) document.write("<body id='night' class='f-default'>"); 
            if (h > 6 && h < 12) document.write("<body id='dawn' class='f-default'>"); 
            if (h > 11 && h < 19) document.write("<body id='day' class='f-default'>"); 
            if (h > 18 && h < 24) document. write("<body id='dusk' class='f-default'>"); 
            </script> 
 

    
        <!-- begin top part -->
        <div id="bg-top">
            <div id="bg-top-overlay"></div>
        </div>
        <!-- end top part -->
        <!-- start overall frame -->
        <div id="overall-frame">
            <!-- begin bottom part IE ONLY -->
            <div id="bg-bottom-ie">
                <div id="bg-bottom-overlay-ie"></div>
            </div>
            <!-- end bottom part ie -->
            <!-- start bottom part OTHER BROWSERS -->
            <div id="bg-bottom">
                <div id="bg-bottom-overlay">
                    <!-- begin wrapper -->
                    <div class="wrapper">
                        <div id="top-shadow">
                            <!-- begin header -->
                            <div id="header">
                                <div id="logo-space"><a href="index.php" class="nounder"><img src="images/logo.png" style="border:0;" alt="" id="logo" /></a><br /><span><i><?=$row1['slogan'];?></i></span></div>
                            </div>                      </div>







                    <div id="iefix">
<div id="horiz-menu" class="splitmenu">
<ul class="menu">
<li class="item"><span class="top"><a href="index.php">Главная</a><span class="selector"><br /></span></span></li>
<li class="item"><span class="top"><a href="rules.php">Правила</a><span class="selector"><br /></span></span></li>
<li class="item"><span class="top"><a href="reg.php">Регистрация</a><span class="selector"><br /></span></span></li>
<li class="item"><span class="top"><a href="account.php">Аккаунт</a><span class="selector"><br /></span></span></li>
<li><span class="top"><a href="faq.php">FAQ</a><span class="selector"><br /></span></span></li>
<?
$sqlgbactive
=mysql_query("select*from sysvals where gb_active='YES'");
$rowgbactive=mysql_fetch_array($sqlgbactive);
if(
$rowgbactive>0):
?>
<li class="item"><span class="top"><a href="gb.php?page=0">Гостевая</a><span class="selector"><br /></span></span></li>

<?
endif;
?>


</ul></div></div>
<br>
                        
                        <div align="center" id="inset">
                            <span><?
include("inc/banners1.inc.php");
?>
<div id='out'></div>
</span>                        </div>
<!-- end inset -->
                        <!-- begin mainbody -->
                        



<div id="body-shadow-left">
<div id="body-shadow-right">
<div id="body">
<table class="mainbody" border="0" cellspacing="0" cellpadding="0">
  <tr valign="top">
    
    <?
$sqlgbactive
=mysql_query("select*from sysvals where prav_active='YES'");
$rowgbactive=mysql_fetch_array($sqlgbactive);
if(
$rowgbactive>0):
?>
    
    
    <td class="secondcol"><div id="secondcol">
    <div class="accent">
      <div class="accent-left"></div>
      <div class="accent-right"></div>
    </div>

<?include("inc/stat.inc.php");?>


</div></td>

<?
endif;
?>

    <td class="maincol">
    <div id="maincol">
    <div class="accent">
      <div class="accent-left"></div>
      <div class="accent-right"></div>
    </div>
    <div id="component">
      <div class="padding">

подключаю через include ко всем другим страницам

Sham 15-09-2009 03:01 1219192

пробуйте
PHP код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<?
include("setup.php");
require (
"inc/connect.inc.php");
$sql=mysql_query("select*from pages");
$row=mysql_fetch_array($sql);
$sql=mysql_query("select*from sysvals");
$row1=mysql_fetch_array($sql);
$selectedpravactive=$row1['prav_active'];

?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<?=$row['head_meta'];?>
<title><?=$row['head_title'];?></title>
<link href="css/template_css.css" rel="stylesheet" type="text/css" />
<link href="css/style<?=$row['style'];?>.css" rel="stylesheet" type="text/css" />
<link href="css/rokmoomenu.css" rel="stylesheet" type="text/css" />

        <link href="css/template_ie7.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon">



    <style type="text/css">
        div.wrapper { margin: 0 auto; width: <? if($selectedpravactive==NO): echo"1000"; endif; ?>
<? 
if($selectedpravactive==YES): echo"1200"; endif; ?>
px;padding:0;}
        td.secondcol { width: 235px;}
        td.thirdcol { width: 235px;}
    </style>
    <script type="text/javascript" src="js/mootools-release-1.11.js"></script>
    <script type="text/javascript">
        window.addEvent('domready', function(){    var FlipTip = new Tips($$('.fliptip'), { className: 'fliptip' });});
    </script>

    <!--[if IE]>
<script type="text/javascript">
sfHover = function() {
    var sfEls = document.getElementById("horiz-menu").getElementsByTagName("LI");
    for (var i=0; i<sfEls.length; i++) {
        sfEls[i].onmouseover=function() {
            this.className+=" sfHover";
        }
        sfEls[i].onmouseout=function() {
            this.className=this.className.replace(new RegExp(" sfHover\\b"), "");
        }
    }
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
</script>

<![endif]-->

        </head>

<script language=JavaScript>
            var h=(new Date()).getHours();
            if (h > 23 || h < 7) document.write("<body id='night' class='f-default'>");
            if (h > 6 && h < 12) document.write("<body id='dawn' class='f-default'>");
            if (h > 11 && h < 19) document.write("<body id='day' class='f-default'>");
            if (h > 18 && h < 24) document. write("<body id='dusk' class='f-default'>");
            </script>



        <!-- begin top part -->
        <div id="bg-top">
            <div id="bg-top-overlay"></div>
        </div>
        <!-- end top part -->
        <!-- start overall frame -->
        <div id="overall-frame">
            <!-- begin bottom part IE ONLY -->
            <div id="bg-bottom-ie">
                <div id="bg-bottom-overlay-ie"></div>
            </div>
            <!-- end bottom part ie -->
            <!-- start bottom part OTHER BROWSERS -->
            <div id="bg-bottom">
                <div id="bg-bottom-overlay">
                    <!-- begin wrapper -->
                    <div class="wrapper">
                        <div id="top-shadow">
                            <!-- begin header -->
                            <div id="header">
                                <div id="logo-space"><a href="index.php" class="nounder"><img src="images/logo.png" style="border:0;" alt="" id="logo" /></a><br /><span><i><?=$row1['slogan'];?></i></span></div>
                            </div>                      </div>





<?

$menu 
=
'
<div id="iefix">
<div id="horiz-menu" class="splitmenu">
<ul class="menu">
<li class="item"><span class="top"><a href="index.php">Главная</a><span class="selector"><br /></span></span></li>
<li class="item"><span class="top"><a href="rules.php">Правила</a><span class="selector"><br /></span></span></li>
<li class="item"><span class="top"><a href="reg.php">Регистрация</a><span class="selector"><br /></span></span></li>
<li class="item"><span class="top"><a href="account.php">Аккаунт</a><span class="selector"><br /></span></span></li>
<li><span class="top"><a href="faq.php">FAQ</a><span class="selector"><br /></span></span></li>
'
;
$sqlgbactive=mysql_query("select*from sysvals where gb_active='YES'");
$rowgbactive=mysql_fetch_array($sqlgbactive);
if(
$rowgbactive>0):

$menu .= '<li class="item"><span class="top"><a href="gb.php?page=0">Гостевая</a><span class="selector"><br /></span></span></li>';


endif;

$menu .= '</ul></div></div>';

$PHP_SELF basename($_SERVER['PHP_SELF']);

echo 
str_replace
(
    
'<li class="item"><span class="top"><a href="'.$PHP_SELF,
    
'<li id="current" class="active"><span class="top"><a href="'.$PHP_SELF,
    
$menu
);
?>



<br>

                        <div align="center" id="inset">
                            <span><?
include("inc/banners1.inc.php");
?>
<div id='out'></div>
</span>                        </div>
<!-- end inset -->
                        <!-- begin mainbody -->




<div id="body-shadow-left">
<div id="body-shadow-right">
<div id="body">
<table class="mainbody" border="0" cellspacing="0" cellpadding="0">
  <tr valign="top">

    <?
$sqlgbactive
=mysql_query("select*from sysvals where prav_active='YES'");
$rowgbactive=mysql_fetch_array($sqlgbactive);
if(
$rowgbactive>0):
?>


    <td class="secondcol"><div id="secondcol">
    <div class="accent">
      <div class="accent-left"></div>
      <div class="accent-right"></div>
    </div>

<?include("inc/stat.inc.php");?>


</div></td>

<?
endif;
?>

    <td class="maincol">
    <div id="maincol">
    <div class="accent">
      <div class="accent-left"></div>
      <div class="accent-right"></div>
    </div>
    <div id="component">
      <div class="padding">


binders 15-09-2009 03:35 1219197

СПАСИБО заработало :yahoo: :oszone:

binders 04-10-2009 05:35 1234067

Решено то оно решено но как сделать чтоб страницы
не прописаные в коде ниже выбрали
переключали меню как активное

пример
страница profile.php
относится к менюшке Аккаунт
совсем запутался :sorry:
PHP код:

<? 

$menu 


<div id="iefix"> 
<div id="horiz-menu" class="splitmenu"> 
<ul class="menu"> 
<li class="item"><span class="top"><a href="index.php">Главная</a><span class="selector"><br /></span></span></li> 
<li class="item"><span class="top"><a href="rules.php">Правила</a><span class="selector"><br /></span></span></li> 
<li class="item"><span class="top"><a href="reg.php">Регистрация</a><span class="selector"><br /></span></span></li> 
<li class="item"><span class="top"><a href="account.php">Аккаунт</a><span class="selector"><br /></span></span></li> 
<li><span class="top"><a href="faq.php">FAQ</a><span class="selector"><br /></span></span></li> 
'

$sqlgbactive=mysql_query("select*from sysvals where gb_active='YES'"); 
$rowgbactive=mysql_fetch_array($sqlgbactive); 
if(
$rowgbactive>0): 

$menu .= '<li class="item"><span class="top"><a href="gb.php?page=0">Гостевая</a><span class="selector"><br /></span></span></li>'


endif; 

$menu .= '</ul></div></div>'

$PHP_SELF basename($_SERVER['PHP_SELF']); 

echo 
str_replace 

    
'<li class="item"><span class="top"><a href="'.$PHP_SELF
    
'<li id="current" class="active"><span class="top"><a href="'.$PHP_SELF
    
$menu 
); 
?>


Sham 04-10-2009 23:48 1234572

если я правильно понял, перед echo добавьте
PHP код:

if($PHP_SELF == 'profile.php'$PHP_SELF 'account.php'

str_replace расчитан на то, что хтмл-код будет именно в таком виде без изменений, иначе регексп и preg_replace...

конечно, все это можно и симпатичнее реализовать....

binders 05-10-2009 00:53 1234628

всё правильно всё работает
Цитата:

Цитата Sham
конечно, все это можно и симпатичнее реализовать... »

а как это буду очень признателен


Время: 08:59.

Время: 08:59.
© OSzone.net 2001-