проблемы с глобальными переменными - PullRequest
2 голосов
/ 09 ноября 2010

У меня проблема с включением страниц в PHP.Картинка показывает, что я хочу сделать.Я хочу включить в мою страницу index.php горизонтальное и вертикальное меню.Но теперь я могу включить только один из них.В global.php есть имя базы данных, пароль и переменная, которые определяют, какой язык я сейчас использую.Я включил все ограничения: include, include_once, require, require_once.Ничего не помогаетЧто вы можете предложить мне сделать?Спасибо!

alt text

РЕДАКТИРОВАТЬ:

Вот мой код:

Index.php:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>KUSS</title>
<link href="styles/default.css" rel="stylesheet" type="text/css">
</head>

<body>
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0" class="main_border">
<?php 
    include_once ("modules/php/mainMenu.php"); 
?>

<? include_once ("modules/php/vertMenu.php"); ?><!--Head-->


</table>
</body>
</html>

global.php

<?php
// All global variables MUST be defines here

//representing current language
$gl_Lang = "UKR";       

//current horizontal menu click
$gl_MaimMenuChoice;     
//current vertical sub menu click
$gl_SubMenuChoice;

$gl_dbName = "127.0.0.1";
$gl_UserName = "user1";
$gl_Password = "12345";
$gl_adminDatabase = "admin";

?>

makeHoriz.php и makeVert.php идентичны, за исключением одного чтения из базы данных и отображения строк и вторых столбцов

<?php
function MakeLeftVMenu($tableName, $levelID, $parentName)
{
    include_once ("modules/php/globals.php");

    //connect to db or die)
    $db = mysql_connect($gl_dbName, $gl_UserName, $gl_Password ) or die ("Unable to connect");

    //to prevenr ????? symbols in unicode - utf-8 coding
    mysql_query("SET NAMES 'UTF8'");

    //select database
    mysql_select_db($gl_adminDatabase, $db);
    $sql = "SELECT " .$gl_Lang. ", Link FROM ". $tableName." WHERE LevelID = ".$levelID. " AND ParentName = '". $parentName."'";
    echo $sql;
    //execute SQL-query
    $result = mysql_query($sql, $db);
    //read data to array
    $myRow = mysql_fetch_array($result);
    //print it to screen into the table
    do
    {
        echo "<tr><h3><a href=".trim($myRow['Link']).">". trim($myRow[$gl_Lang]) ."</a></h3></tr>";


    }while($myRow = mysql_fetch_array($result));
    //close database  = very inportant
    mysql_close($db);
}
?>

Ответы [ 3 ]

2 голосов
/ 09 ноября 2010

, если horizonal_menu.php и vertical_menu.php оба включают global.php, вы должны убедиться, что оба они используют require_once. Если это так, у вас не должно быть никаких проблем.

0 голосов
/ 19 декабря 2010

Все ли страницы меню вызывались самостоятельно?Например, вы когда-нибудь заходили в браузер на http://mywebsite.com/horizontalmenu.php?Если нет, то можно предположить, что любые включенные файлы, необходимые для horizontalmenu.php, будут доступны из ранее включенного файла php, или вы можете использовать require_once для всех включений.

Например

Индекс.php

include('global.php');
include('horizontalmenu.php');
include('verticalmenu.php');

horiztontalmenu.php

 //No include statments as it is being included by Index.php which
 //has provided access to all global.php functions and variables.

В качестве альтернативы, если вы используете require_once для каждого оператора require или include, вам следует избегать проблемы.

0 голосов
/ 09 ноября 2010

Если все страницы будут иметь горизонтальное / вертикальное меню, вы можете пойти до степени создания header.php, который включает горизонтальное / вертикальное меню и global.php.

...