Variablenname bekannt - als Variable im Programmablauf benutzen
Patrick Schröder
- php
Hallo ihr,
habe grad das Forum nach meinem jetzigen Thema durchsucht, weil ich mir ziemlich sicher bin, dass dies schon einmal jemand gefragt hat, bin allerdings nicht so ganz fündig geworden. Daher poste ich meine Frage jetzt doch...
Also, ich habe folgendes Problemchen:
per Link wird eine Variable mit Inhalt übergeben. Ich weiß zwar anhand der passenden DB-Abfrage name der Variablen und deren Inhalt, kann diesen also einfach mit explode trennen.
Beispiel: index.php?flexibel=inhalt
Wenn ich allerdings die _variable_ Variable (flexibel) als Variable im Programmablauf verwenden will, fang ich an auf dem Schlauch zu stehen... Ich habe mich schon mit variablen Variablen beschäftigt, aber irgendwie blick ich in meinem Fall nicht ganz dran lang.
Hilft mir jemand weiter? Wäre sehr nett...
Gruß Patrick
hi,
Wenn ich allerdings die _variable_ Variable (flexibel) als Variable im Programmablauf verwenden will, fang ich an auf dem Schlauch zu stehen... Ich habe mich schon mit variablen Variablen beschäftigt, aber irgendwie blick ich in meinem Fall nicht ganz dran lang.
also, den namen "flexibel" hast du vorliegen, bsp. in $varname?
wo genau liegt dann das problem?
$$varname oder auch ${$varname} erlauben dir zugriff auf den inhalt von $flexibel, siehe auch http://www.php.net/manual/de/language.variables.variable.php.
gruß,
wahsaga
hi wahsaga,
genau da liegt mein Problem... ich habs schon mehrfach gelesen, aber ich blicke nicht dran lang, warum auch immer. Zumindest weiß ich jetzt, dass rein gedanklich zumindest schonmal am richtigen Ansatz bin und an den richtigen Stellen lese.
Gruß Patrick
Hallo!
genau da liegt mein Problem... ich habs schon mehrfach gelesen, aber ich blicke nicht dran lang, warum auch immer. Zumindest weiß ich jetzt, dass rein gedanklich zumindest schonmal am richtigen Ansatz bin und an den richtigen Stellen lese.
In meinen Augen sind variable Variablen in den seltensten Fällen sinnvoll. Kannst Du Dein Problem nicht mit Arrays lösen? Hast Du bal ein paar Zeilen Beispiel-Code der das konkrete Problem verdeutlicht?
Grüße
Andreas
Hallo Andreas,
also ich arbeite an folgendem:
Es geht um eine Seite, die eine programähnliche Oberfläche hat. Es gibt Menüs (oben, quer) und Untermenüs auf der linken Seite.
Im rechten Bereich sitzt die eigentliche Oberfläche, wo verschiedene Inhalte angezeigt und verarbeitet werden sollen. Diese eigentliche Oberfläche arbeitet mit Fächern, wie man es z.B. aus Windows usw gewohnt ist.
Die Anzahl der Fächer ist flexibel, genauso wie die Benennung und Verlinkung. Dies hat den Hintergrund, dass viele vorhandene Elemente in die Seite integriert werden sollen und nicht alles mit den selben Parametern arbeitet. Um nicht alles umschreiben und entsprechend kontrollieren zu müssen, habe ich die Fächer entsprechend variabel verlinkt, so dass eine Variable für den Fächer entsprechend flexibel nutzbar ist.
Hier der Code:
<?php
// Wird in der entsprechenden Hauptdatei festgelegt
$faecher_anzahl = 3;
$faecher_name[1] = "Wochenübersicht";
$faecher_link[1] = "uebersicht=woche";
$faecher_name[2] = "Tagesübersicht";
$faecher_link[2] = "uebersicht=tag";
$faecher_name[3] = "Monatsübersicht";
$faecher_link[3] = "uebersicht=monat";
?>
<?php
/* Hier die derzeitige Schleife für die Fächer-Anzeige
Hier kommt noch die Abfrage rein, welcher der Fächer denn grad aktiv und somit hervorgehoben ist... dafür auch die genannte Abfrage */
for ($f = 1; $f <= $faecher_anzahl; $f++) {
$fa_inhalt = explode("=", $faecher_link[$f]);
$f_variable = $fa_inhalt[0];
$f_inhalt = $fa_inhalt[1];
?>
<td background="buttons/<? print $col_bg_program ?>/faecher_l.gif" valign="top" style="border-bottom:1px solid #FFFFFF;"><img src="images/spacer.gif" width="7" height="19" border="0" alt=""></td>
<td background="buttons/<? print $col_bg_program ?>/faecher_bg.gif" style="border-bottom:1px solid #FFFFFF;"><a href="index.php?inhalt=<? print $inhalt ?>&inhalt2=<? print $inhalt2 ?>&<? print $sitedata ?>&<? print $faecher_link[$f] ?>" class="faecherlink"><? print $faecher_name[$f] ?></a></td>
<td background="buttons/<? print $col_bg_program ?>/faecher_r.gif" valign="top" style="border-bottom:1px solid #FFFFFF;"><img src="images/spacer.gif" width="11" height="19" border="0" alt=""></td>
<?php
if ($f < $faecher_anzahl) print "<td style="border-bottom:1px solid #FFFFFF;"><img src="pics/spacer.gif" width="5" height="1" border="0"></td>\n";
}
?>
Ich hoffe, dass es weiterhilft und verständlich macht, warum es für mich Sinn macht hier entsprechend zu arbeiten. Wenn jemand nen Verbesserungsvorschlag hat, wie man es einfacher gestalten könnte, stehe ich dem natürlich offen gegenüber.
Gruß Patrick
Hallo nochmal,
also inzwischen funktioniert die Abfrage, wann was aktiv ist auch mit den flexiblen Variablen. Das Einzige, was ich jetzt nochmal direkt nachschauen muss bzw. sollte, ist die von dir genannte Überprüfung, wo denn welche Variable herkommt, wobei ich mich da auch erstmal reinlesen muss!
Trotzdem danke an alle... habt mir sehr geholfen.
Gruß Patrick
Wenn jemand nen Verbesserungsvorschlag hat, wie man es einfacher gestalten könnte, stehe ich dem natürlich offen gegenüber.
Ein bisschen Quelltext vereinfachen kannst du wenn du
$fa_inhalt = explode("=", $faecher_link[$f]);
$f_variable = $fa_inhalt[0];
$f_inhalt = $fa_inhalt[1];
durch
list($f_variable, $f_inhalt) = explode("=", $faecher_link[$f]);
eintauschst. Und da du short_open_tags verwendest kannst du auch noch
<? print $variable ?>
durch
<?= $variable ?>
abkürzen.
Hallo!
Beispiel: index.php?flexibel=inhalt
Wenn ich allerdings die _variable_ Variable (flexibel) als Variable im Programmablauf verwenden will, fang ich an auf dem Schlauch zu stehen... Ich habe mich schon mit variablen Variablen beschäftigt, aber irgendwie blick ich in meinem Fall nicht ganz dran lang.
11.20. Warum funktionieren meine Formulare nicht?
http://www.php-faq.de/q/q-formular-register-globals.html
Lies vor allem auch: http://de3.php.net//security.globals
Grüße
Andreas
Hallo Andreas,
danke soweit für deine Hinweise. Hilft mir zwar im Moment nur bedingt beim genannten Problem weiter, ist dafür aber an anderer Stelle für mich auch nicht unwichtig.. danke dir!
Gruß Patrick