2010-11-08 14 views
2

J'ai un problème avec les pages d'inclusion en PHP. L'image montre ce que je veux faire. Je veux inclure dans ma page index.php le menu horizontal et vertical. Mais maintenant je peux en inclure seulement un. Dans global.php, il y a un nom de base de données, un mot de passe et une variable qui définissent la langue que j'utilise maintenant. J'ai inclus avec tous les derictives: include, include_once, require, require_once. Rien ne aide. Que peux-tu me proposer de faire? Merci!problèmes avec les variables globales

alt text

EDIT:

Voici mon code:

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 et makeVert.php identique, sauf une lecture de db et affiche des lignes et deuxième

Col.
<?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); 
} 
?> 
+0

Quelle erreur voyez-vous lorsque vous incluez les deux? – Stephen

+0

donnez-nous du code – Galen

+8

OMG, THE PICTURE! Où est le bouton +2? – Harmen

Répondre

2

si horizonal_menu.php et vertical_menu.php sont tous deux, y compris global.php, vous devez vous assurer que les deux utilisent require_once. Si tel est le cas, vous ne devriez avoir aucun problème.

+0

Id ajoute également que global IMO ne doit être inclus que par la mise en page globale (par exemple index.php ou quelle que soit la page). Alors cette disposition devrait prendre soin d'inclure tous les "composants" comme les menus. – prodigitalson

+0

require_once est une béquille. L'op devrait s'assurer qu'il n'écrit pas de code insensé. c'est tout –

0

Si toutes les pages doivent avoir un menu horizontal/vertical, vous pourriez aller jusqu'à créer un header.php qui inclue le menu horizontal/vertical et le global.php.

0

Est-ce que les pages Menu sont appelées toutes seules? par exemple allez-vous jamais dans le navigateur pour http://mywebsite.com/horizontalmenu.php? Si ce n'est pas le cas, il est prudent de supposer que tous les fichiers inclus nécessaires par horizontalmenu.php seront disponibles à partir d'un fichier php précédemment inclus, ou vous pouvez utiliser require_once pour tous les inclus.

Par exemple,

index.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. 

Alternativement, si vous utilisez require_once pour chaque besoin ou inclure la déclaration, vous devriez éviter le problème.