XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   global Variable wird nicht angezeigt ... (http://xhtmlforum.de/showthread.php?t=48278)

paracelsus 08.10.2007 22:36

global Variable wird nicht angezeigt ...
 
Grüß euch!
Ich habe in einem script (A) eine Variable:
PHP-Code:

global $prevl

Inhalt dieser Variable ist 0 oder &preview=1
Die Variable kommt aus script(B), dieses includet nun das script(A) um das es geht.
Im script(A) wird diese Variable an alle möglichen Strings angehängt.
Funktioniert auch, bis auf diesen hier:


PHP-Code:

echo $prevl;
$helpsite "<div class=\"skiplink\">
<a href=\"index.php?pageid=100&amp;sel=0&amp;bezug=help"
.$prevl."\"> ...
</div>"


das echo ist bloss Kontrolle, wird auch ausgegeben.
Aber wenn ich nun im script(B) die Variable $helpseite aufrufe ist auf der Website ab "help" der GET zu Ende,
der Inhalt von $prevl wird nicht ausgegeben, obwohl das echo den richtigen Wert anzeigt. Kann ja nicht einfach eine Zeile später keinen Wert mehr haben?

Woran liegt´s denn, dass ich mehrere String variablen damit bestücken kann, aber diese eine nimmt das nicht auf?
Im G**gle find i nix zu.

Danke

Scheppertreiber 08.10.2007 22:59

PHP ist ja an C angelhnt, vielleicht packt er die "\" nicht und man muß sie zu
"\\" mappen ? Oder die Reihenfolge stimmt nicht ?

paracelsus 08.10.2007 23:05

Zitat:

Zitat von Scheppertreiber (Beitrag 352189)
PHP ist ja an C angelhnt, vielleicht packt er die "\" nicht und man muß sie zu
"\\" mappen ? Oder die Reihenfolge stimmt nicht ?

Nö is es leider nicht.
Hab es schon mehrmals getestet, der Link funkt ja, die übergabe dieses Parameters geht auch in 6 anderen Links (sind alle " mit \ maskiert), dieser ist der 7ente, da geht es nun nicht.

:surrende:

Scheppertreiber 08.10.2007 23:09

Ha ! Ich hab's !!! PHP kann nur 6 Variable :) :) :)

paracelsus 08.10.2007 23:21

:?::?::?::?:

Zitat:

Zitat von Scheppertreiber (Beitrag 352192)
Ha ! Ich hab's !!! PHP kann nur 6 Variable :) :) :)

:!: Das kann nicht sein, die Funktion die das Menü aufbaut - ein anderes Script - kreiiert in der Preview Ansicht 13 Links mit diesem Parameter.
Hab auch gerade - weil ich es ernst genommen hab :oops: - mal eine der oberen gelöscht - gleiches Ergebnis - nix....
hier mal auszugsweise das script:
PHP-Code:

#   ab hier nichts ändern   #
$kontakt_link_sel "<li><a href=\"index.php?pageid=400&amp;bezug=kontakt&amp;sel=400".$prevl."\" class=\"sel\">Kontakt</a></li>\n";
$kontakt_link "<li><a href=\"index.php?pageid=400&amp;bezug=kontakt&amp;sel=400".$prevl."\">Kontakt</a></li>\n";
#-------------------------------------------------------------------------------------------------------------
# Sitemap
$sitemap true;
# In welchem Menü soll Sitemap angezeigt werden?
# NICHT möglich im Menü nav1 - NUR die nav0,2,3, oder 4 angeben!
$sitemap_menu "nav0";
# Überschrift
$sitemap_header "Übersicht aller verfügbaren Seiten";
#   ab hier nichts ändern   #
$sitemap_link_sel "<li><a href=\"index.php?pageid=200&amp;bezug=sitemap&amp;sel=200".$prevl."\" class=\"sel\">Sitemap</a></li>\n";
$sitemap_link "<li><a href=\"index.php?pageid=200&amp;bezug=sitemap&amp;sel=200".$prevl."\">Sitemap</a></li>\n";

#-------------------------------------------------------------------------------------------------------------
# Gästebuch
$gbk true;
# In welchem Menü soll Gästebuch angezeigt werden?
# NICHT möglich im Menü nav1 - NUR die nav0,2,3, oder 4 angeben!
$gbk_menu "nav4";
# Überschrift
$gbk_header "Gästebuch";
# Überschrift im Eingabeformular
$gbk_header_edit "Ins Gästebuch schreiben";
$gbk_hinweis "<p>Dieses Gästebuch ist vor Mißbrauch geschützt.<br />
Ihre Eingabe wird mittels eines Filters nach unerlaubten Wörtern überprüft,<br />
nach erfolgreicher Annahme erhalten Sie an Ihre - von Ihnen angegebene - Mail-Adresse eine Nachricht, die Sie - durch Klick auf den Link darin - bestätigen müssen.<br />
Dies ist aus Sicherheitsgründen (Spamschutz) notwendig, wir bitten um Verständnis.</p>"
;
#   ab hier nichts ändern   #
$gbk_link_sel "<li><a href=\"index.php?pageid=600&amp;bezug=gbk&amp;sel=600&amp;offset=0".$prevl."\" class=\"sel\">Gästebuch</a></li>\n";
$gbk_link "<li><a href=\"index.php?pageid=600&amp;bezug=gbk&amp;sel=600&amp;offset=0".$prevl."\">Gästebuch</a></li>\n";
# Link zum eintragen
$gbk_eintrag "<a href=\"index.php?pageid=600&amp;sel=600&amp;eintrag=1\">Eintrag verfassen</a>\n";
#-------------------------------------------------------------------------------------------------------------
# Admin Link
# In welchem Menü soll der Admin Link angezeigt werden?
# NICHT möglich im Menü nav1 - NUR die nav0,2,3, oder 4 angeben!
$admin_menu "nav4";
$admin_link "<li><a href=\"cms/system/index.php\">Login</a></li>\n";
#-------------------------------------------------------------------------------------------------------------
# Hilfeseite - evtl aufgerufene klass ändern!
$helpsite "<div class=\"skiplink\"><a href=\"index.php?pageid=100&amp;sel=0&amp;bezug=help".$prevl."\"><img src=\"templ/img/layout/help.jpg\" alt=\"Hilfe\" title=\"Hilfe zur Seiten Navigation\" width=\"16\" height=\"16\" /></a></div>";
#------------------------------------------------------------------------------------------------------------- 

den vorletzten $prevl hab ich grad mal rausgenommen, aber es geht - wie gesagt trotzdem nich ... :icon_cry:

paracelsus 08.10.2007 23:45

Nachtrag:

Die Variable $helpsite wird in der templ.php so aufgerufen:
PHP-Code:

<? echo $helpsite ?>

Kann es hieran liegen?

Scheppertreiber 08.10.2007 23:52

Das ist die Sorte Fehler wo man stundenlang vor dem Monitor grübelt ...

code_junkie 09.10.2007 01:41

Vermutung
 
Zitat:

Zitat von paracelsus (Beitrag 352188)
Grüß euch!
Ich habe in einem script (A) eine Variable:
PHP-Code:

global $prevl

Inhalt dieser Variable ist 0 oder &amp;preview=1
Die Variable kommt aus script(B), dieses includet nun das script(A) um das es geht.
Im script(A) wird diese Variable an alle möglichen Strings angehängt.
Funktioniert auch, bis auf diesen hier:


PHP-Code:

echo $prevl;
$helpsite "<div class=\"skiplink\">
<a href=\"index.php?pageid=100&amp;sel=0&amp;bezug=help"
.$prevl."\"> ...
</div>"


das echo ist bloss Kontrolle, wird auch ausgegeben.
Aber wenn ich nun im script(B) die Variable $helpseite aufrufe ist auf der Website ab "help" der GET zu Ende,
der Inhalt von $prevl wird nicht ausgegeben, obwohl das echo den richtigen Wert anzeigt. Kann ja nicht einfach eine Zeile später keinen Wert mehr haben?

Ich kann zwar nich hellsehen, aber es hört sich an als wäre dieser Codeausschnitt ein Stück aus einer function() und als riefest du die variable außerhalb dieser Funktion auf. Wenn das so ist, dann ist $helpsite natürlich eine nicht globale Variable.. Ist die also schon vorher außerhalb der Funktion gesetzt worden, wird sie natürlich nicht überschrieben.
Wenn es daran liegt, hilft ein &$var..

MfG

mantiz 09.10.2007 08:49

Für mich liest es sich so, dass Du 2 Scripte hast, a.php und b.php.

Wenn Du jetzt in a.php eine Variable global machst, dann heisst das nicht, dass diese in b.php verfügbar ist, wenn Du erst a.php und anschließend b.php im Browser aufrufst.

global ist nur für Variablen in Funktionen gut, wo man innerhalb der Funktion die Variablen angeben kann, die man aus dem globalen Namespace verwenden will.

Beispiel:
PHP-Code:

$a 'blub';
function 
b() {
   echo 
$a;


Gibt nichts aus, oder aber ein Warning, weil die Variable $a innerhalb der Funktion nicht exisitert.
PHP-Code:

$a 'blub';
function 
b() {
   global 
$a;
   echo 
$a;


Gibt (wie erwartet) 'blub' aus. Du holst also mit global die hier globale Variable $a in den Namespace der Funktion rein.

In C und allen anderen mir bekannten Sprache läuft das genau andersherum, was schon sehr verwirrend sein kann. :)

// Edit: Sorry, hab' falsch gelesen und dementsprechend passt das natürlich nicht, was ich geschrieben habe. :-/

paracelsus 09.10.2007 09:41

Hallo!

Nett das sich so viele Gedanken darüber machen!

Es geht um folgendes:
Das Template kann von 2 Seiten aus angestossen werden, einmal von Index.php aus dem www, und dann auch von index.php aus dem CMS.
Das CMS ist auf 2 DatenBanken aufgebaut, eine öffentliche und eine für Redakteure, das heisst Änderungen die gemacht werden sind erst sichtbar, wenn der Administrator die Änderungen - welche die Redakteure gemacht haben - explizit freigibt. Ist das der Fall wird die Seite in den Wartungsmodus geschickt (deaktiviert mit öffntlichem Hinweis) und die öffentliche DB mit dem Inhalt der Redaktions DB befüllt.

Um die Vorschau für Redakteure zu realisieren, muss ich allen Links aber o.a. Variable mitgeben, damit das Template weiss: ich muss nun auf die andere Datenbank zugreifen.

Obiges Schnippsel ist aus der Config.php, das ist eine Auflistung von Variablen und Array´s, keine Funktionen.
die $prevl wird in der templ.php mit werten befüllt.
Templ.php includiert config.php - in dieser ist die Variable global $prevl; gesetzt.

Somit ist $prevl ind der config.php verfügbar, was ja dadurch belegt wird, dass sich diese Variable an alle in der config anhängen lässt - an alle bis auf diese.


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:07 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023