PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Konstanten werden nicht mehr erkannt (http://www.selfphp.de/forum/showthread.php?t=20739)

theo_deluxe 19.01.2009 11:54:36

Konstanten werden nicht mehr erkannt
 
Hallo,

nachdem ich nun tagelang vergeblich im Netz nach einer Lösung für mein Problem gesucht habe, wende ich mich an Euch.

Problemstellung, die sich seit etwa einer Woche ergeben hat, sieht wie folgt aus:
Für ein CMS, verwende ich Konstanten, deren Namen und zugewiesene Werte sowohl aus einer Datenbank als auch aus einer Textdatei ausgelesen werden. D.h., die define-Anweisungen werden über Variablen bestückt. Im Falle der Datenbank-Prozedur funktioniert alles nach wie vor so wie es soll. Allerdings werden die Konstanten, die in einem eigenen Script mit Werten aus der Textdatei zusammengestellt werden, nicht mehr global erkannt.

Dies ist aber die Grundlage für das Funktionieren und hat auch bisher immer geklappt.

In diesem nachfolgenden Script selbst sind die Konstanten mit defined() bzw. constant() verfügbar, aber nicht mehr im index.php oder in Funktionen.

PHP-Code:

$tab_datei fopen'Datei.txt' 'r' );

while(!
feof($tab_datei))
    
$Tabellen[] = fgetcsv($tab_datei 1000 ';');

fclose($tab_datei);

foreach(
$Tabellen as $_Tabelle)
{
    if (
$_Tabelle)
    {
        
define$_Tabelle[0] , trim($_Tabelle[1]) );
        
define$_Tabelle[2] , trim($_Tabelle[3]) );
    }


Das Kuriose: es hat bisher von Anfang an funktioniert, bis vergangene Woche. Was hier der Auslöser war, ist mir schleierhaft.

Vielleicht habe ich etwas Entscheidendes übersehen, jedenfalls bin ich über eine Lösung sehr dankbar!

DokuLeseHemmung 19.01.2009 12:53:32

AW: Konstanten werden nicht mehr erkannt
 
Wie wäre es mal mit ein paar Kontrollausgaben...
Damit du mal siehst, was da überhaupt passiert.

evtl läuft da was mit deinem include schief...

theo_deluxe 19.01.2009 13:12:03

AW: Konstanten werden nicht mehr erkannt
 
Danke, DLH, das habe ich ausgiebigst gemacht. Und inzwischen habe ich auch diese vorgestellte Routine direkt in index.php integriert – mit dem gleichen Ergebnis.

Innerhalb der foreach-Schleife kann ich die Konstanten prima mit constant() auslesen, aber direkt danach geht das nicht mehr.

Nachfolgend kommen dann solche Meldungen wie:

Notice: Use of undefined constant TABELLE_SEITEN - assumed 'TABELLE_SEITEN' in Scriptname.php on line 155

Wie gesagt, die gleiche Routine aus einer Datenbank klappt:
PHP-Code:

    while( $Einstellung mysql_fetch_object$einst_erg ) )
    {
        if ( ! (
$Einstellung->Wert))
            
$Einstellung->Wert '';

            
define$Einstellung->Titel $Einstellung->Wert );
    } 

Hm...?

DokuLeseHemmung 19.01.2009 13:43:38

AW: Konstanten werden nicht mehr erkannt
 
Zitat:

Innerhalb der foreach-Schleife kann ich die Konstanten prima mit constant() auslesen, aber direkt danach geht das nicht mehr.
Da Konstanten immer im (super)globalen Namesraum existieren, kann ich dir nicht glauben!

Du schießt irgendwo einen fürchterlichen Bock!!
Aber KA wo, da du keine Testdaten und keinen/zuwenig Testcode lieferst..

theo_deluxe 20.01.2009 11:01:53

AW: Konstanten werden nicht mehr erkannt [GELÖST]
 
Danke, DokuLeseHemmung, für Deine Bemühungen. Du hattest Recht, dass der Hase irgendwo anders im Pfeffer liegen müsste. Und auch mir war das irgendwo klar, doch ich hatte keine Idee mehr.

Ich war grad dabei, mehr Code und mehr Systemmeldungen zusammenzustellen, da bin ich auf den Trichter gekommen, die Variable zu untersuchen, die aus der Datei geholt wird und den Konstanten-Namen liefert ("$_Tabelle[0]" bzw. "$_Tabelle[2]"):

PHP-Code:

    definetrim($_Tabelle[0]) , trim($_Tabelle[1]) );
    
definetrim($_Tabelle[2]) , trim($_Tabelle[3]) ); 

Der Name war schon immer korrekt, nur war am Ende jeweils ein Leerzeichen angehängt. Mit der trim()-Anweisung ist das Problem behoben und meine Welt ist wieder in Ordnung.

Es funktioniert wieder!!!

Danke,
Theo

DokuLeseHemmung 20.01.2009 12:49:10

AW: Konstanten werden nicht mehr erkannt
 
Glückwunsch!!

Aber eigentlich dachte ich dieses "da bin ich auf den Trichter gekommen, die Variable zu untersuchen," wäre durch dieses "das habe ich ausgiebigst gemacht" ausgiebigst erledigt gewesen...

;-) Wie man sich doch täuschen kann.... ;-)

theo_deluxe 20.01.2009 21:53:03

AW: Konstanten werden nicht mehr erkannt
 
Ja, danke, DokuLeseHemmung, wenn ich an dieses Problem mit dem Leerzeichen schon vorher gedacht hätte, wäre mein Eintrag hier ja auch nicht nötig gewesen! Bin glücklicherweise nicht perfekt.

Vielen Dank nochmal für Deinen Impuls.


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:58:26 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.