include array wird nicht ausgelesen

grillfleisch

Erfahrenes Mitglied
Hallo,

eigentlich weiß ich was ich machen will, aber irgendwie will es nicht wie ich möchte und warum es nicht klappt verstehe ich nicht.

Wäre nett wenn ihr euch das mal anschauen könnt und vielleicht könnt ihr mir sagen was ich falsch machen. Die SUFU hat keine befriedigende Ergebnisse angeboten.

Es ist eine Website auf englisch oder deutsch.

Es funktioniert soweit alles, die Sprachdatein lassen sich includen, wenn ich in der Sprachdatei selber "print_r" verwende, sendet er auch korrekte Ergebnisse, nur bekomme ich die Daten nicht in meine Navileisten.

In der index.php wird über eine GET Variable geschaut ob eng oder ger abgerufen wird.

PHP:
$page = $_GET['page'];
    
    if(isset($page)) {
      define('DOMAIN', '...'); #domain entfernt
      
      if($_GET['lang']=='ger') {$language='ger';} else {$language='eng';}
      
      if($language=='eng') {$longlang ='Deutsch'; $smalllang='ger';} else {$longlang= 'English'; $smalllang='eng';}
      
      #require_once (''.DOMAIN.'/include/language/'.$language.'.php');
      #echo ''.DOMAIN.'/include/language/'.$language.'.php';

/* der obere teil ist auskommentiert, da ich es in der funktion direkt auch probiert habe.*/
      
      include_once('function/func_nav.php');

      echo '<div id="lang" style="position:fixed; top:0px; right:10px;"><a href="'.DOMAIN.'/maru/'.$smalllang.'/collection/" title="Seite auf '.$longlang.'"><p style="font-size:12px; color:#ccc;">'.$longlang.'</p></a></div>';
      
      include ($_SERVER['DOCUMENT_ROOT']. 'include/page/pi_'.$page.'.php');
  
    }
    else {
      
      include ($_SERVER['DOCUMENT_ROOT'].'include/page/pi_index.php');
    }

hier die navigationsfunktion die in der INDEX includet wird.

PHP:
<?php
error_reporting(E_ALL); 
function nav_top() {
global $language;
include (''.DOMAIN.'/include/language/'.$language.'.php');
/* debugs */ 
var_dump( $LNG['link1'] ); #liefert NULL
echo $LNG['link1'];    #funktioniert nicht
print_r($LNG);  #sagt auch kein ton
/* debugs ende */
 
  echo '
    <div id="nav_top">
      <ul>
        <li><a href="'.DOMAIN.'/maru/'.$language.'/collection/" title="'.$LNG['link1'].'">? '.$LNG['link1'].' ?</a></li> 
        <li><a href="'.DOMAIN.'/maru/'.$language.'/collection_extras/" title="'.$LNG['link2'].'">? '.$LNG['link2'].' ?</a></li>
        <li><a href="'.DOMAIN.'/maru/'.$language.'/shop/" title="'.$LNG['link3'].'">? shop ?</a></li>
        <li><a href="'.DOMAIN.'/maru/'.$language.'/customisation/" title="'.$LNG['link4'].'">? customisation ?</a></li>
        <li><a href="'.DOMAIN.'/maru/'.$language.'/contact/" title="'.$LNG['link5'].'">? contact ?</a></li>
      </ul>
    </div>
  ';
}

Kann es vielleicht daran liegen, dass in der Index.php die Navifunktion includet wird, jedoch erst in der includeten $pageSeite der aufuf der funktion startet?
Eigentlich nicht oder?

nun kam, warum auch immer erst jetzt:

HTML:
Notice: Undefined variable: LNG in /www/htdocs/w006b0f0/maru/version_1/function/func_nav.php on line 9...

Nun habe ich nach dem include der Englischdatei die Variable $LNG auf globalgesetzt.
fehler meldung ist weg, aber ausgegeben wird immer noch nichts.

DATEI nav_func.php
PHP:
error_reporting(E_ALL); 
function nav_top() {
global $language;
include (''.DOMAIN.'/include/language/'.$language.'.php');
global $LNG;  #<--- auf global gesetzt
/* debugs */ 
var_dump( $LNG['link1'] ); #liefert NULL
echo $LNG['link1'];    #funktioniert nicht
print_r($LNG);  #sagt auch kein ton
/* debugs ende */

PHP:
<?php
error_reporting(E_ALL); 
#$LNG = array();
$LNG['link1']='collection';
$LNG['link2'] = 'collection extras';
$LNG['link3'] = 'shop';
$LNG['link4'] = 'customisation';
$LNG['link5'] = 'contact';
$LNG['link6'] = 'who is it';
$LNG['link7'] = 'philosophy';
$LNG['link8'] = 'video';
$LNG['link9'] = 'impressum';
$LNG['link10'] = 'links';
?>
 
Zuletzt bearbeitet von einem Moderator:
var_dumb($language) meldet -> string(3) "eng"

Der include funktioniert ja, sonst hätte er mir doch ein include fehler gemeldet, dass er die Datei nicht finden würde.
 
Musst du das unbedingt über ein Array lösen? Mit define() würde das auch gehen, dann bräuchtest du auch keine globalen Variablen, denn defines sind automatisch immer global. Achja, defines sind Konstanten und daher meiner Meinung nach für dein Vorhaben eh viel geeigneter.

EDIT: Es hätte aber sein können, das er eine Datei inkludet, die noch keine Einträge in $LNG hat.. Ich hab schon einiges gesehen, daher ziehe ich alle möglichen Fehlerquellen in Betracht ;-)
 
was genau stellst du dir mit defins vor, soll ich alle Variablen in defines ändern?

statt dies

$LNG['link1']='collection';
$LNG['link2'] = 'collection extras';
$LNG['link3'] = 'shop';

das

define('LINK1', 'collection');
define('LINK2', 'collection extras');
define('LINK3', 'shop');
 
Genau. Und dann

PHP:
function nav_top() {
global $language;
include (''.DOMAIN.'/include/language/'.$language.'.php');
/* debugs */ 
echo LINK1;    #funktioniert
/* debugs ende */
 
Zuletzt bearbeitet:
mmh ich verstehe es nicht.
Es geht nicht !

Notice: Use of undefined constant LINK1 - assumed 'LINK1' in /www/htdocs/w006b0f0/maru/version_1/function/func_nav.php on line 11
LINK1
 
Und dort testest du das ganze auch und nicht bei dir lokal?

Sind den die Arrays/Defines im globale Scope verfügbar, also wenn man den include() außerhalb der Funktion macht und dan einfach mal Debug-Ausgaben?
 
Zurück