Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP]: Variabel mit Variabelinhalt (https://www.delphipraxis.net/33867-%5Bphp%5D-variabel-mit-variabelinhalt.html)

yankee 13. Nov 2004 22:47


[PHP]: Variabel mit Variabelinhalt
 
schwierig einen selbsterklärenden Titel zu finden... also nochmal, da das wohl kaum einer verstanden hat:
Ich werte mit PHP ein formular aus. Dafür habe ich erstmal diesen array:
$felder =array("Nickname", "Vorname", "Nachname", "email", "Strasse", "PLZ", "Ort", "Telefon", "Handy", "ICQ");
In dem Formular habe ich ganz viele checkboxen. Um genau zu sein, sind dort genausoviele checkboxen, wie der array elemente hat. Und die heißen sogar genau so. Um jetzt aufzulisten, was der User ausgewählt hat, dachte ich, man könnte doch einfach mit einer foreach-schleife alle elemente des arrays durchlaufen lassen, und so, mit nur einem Befehl von allen checkboxen anzeigen lassen können, ob die checkboxen angewählt wurden oder nicht... Bloß wie? Meine erste idee war dies so zu tun:

foreach($felder as $f)
{
$inhalt .="Feld ".$f." ist aktiviert??: ".$_POST[$f]."
"
;
}

Das hat jedoch nicht geklappt. Normalerweise hole ich variabeln dieser Art immer mit auto-globals in den code. Also teste ich ein wenig und ich fand' heraus (zumindest glaube ich das), dass $_POST immer leer ist. --> Ich muss wohl auf etwas anderes zurückgreifen. Meine zweite Idee:
dies so zu tun:

foreach($felder as $f)
{
$inhalt .="Feld ".$f." ist aktiviert??: ".eval("$".$f)."
"
;
}

Dann kommen aber errors:
Parse error: parse error, unexpected $end in [..]stufenliste.inc.php(12) : eval()'d code on line 1
Und zwar kommt der Fehler ganz oft. Für jede Zeile inmal. Was mache ich falsch? Wie muss ich es anstellen, damit es funzt?

alcaeus 14. Nov 2004 00:54

Re: [PHP]: Variabel mit Variabelinhalt
 
Hi yankee,

wen $_POST wie du sagst immer leer ist, dann solltest du mal überprüfen ob das form auch mit action="post" abgesendet wird. Evtl. solltest du mal $_GET probieren. Ansonsten seh ich in dem Code keinen Fehler

Greetz
alcaeus

yankee 14. Nov 2004 08:29

Re: [PHP]: Variabel mit Variabelinhalt
 
Ja, form hatte keine method angegebn. Ich habe mal post reingeschrieben, aber es funzt immernoch nicht. Aber ich weiß jetzt, warum die zweite Variante mit eval nicht funzt:
Die Variable ist nicht global und der code wir in einer function ausgeführt... Ich musste vor die Variable also erst global setzen. Der nun funktionierende code sieht so aus:

foreach($felder as $f)
{
eval("global \$".$f."; \$str =\$".$f.";");
$inhalt .="Feld ".$f." ist aktiviert??: ".$str."
"
;
}

jfheins 14. Nov 2004 08:33

Re: [PHP]: Variabel mit Variabelinhalt
 
Du weist, dass du dir das ganze zeug mit eval auch sparen kannst, oder ?
Variable Variablen

idontwantaname 14. Nov 2004 08:58

Re: [PHP]: Variabel mit Variabelinhalt
 
wieso $inhalt .= .......
doch nur ein einfaches =

yankee 14. Nov 2004 09:00

Re: [PHP]: Variabel mit Variabelinhalt
 
Zitat:

Zitat von jfheins
Du weist, dass du dir das ganze zeug mit eval auch sparen kannst, oder ?
Variable Variablen

Oh je... versteh ich nicht... Oder?
Naja, ich habe das so verstanden:
Ich habe eine Variable, der ich einen String zuweise:
$variable = "tuut";
und wenn ich dieser Variable nochmal einen Wert zuweise, aber dabei ein doppeltes $$ verwende:
$$variable ="abababab";
Dann hat die Variable plötzlich den Name tuut.
Also:
print($tuut);
führt zu: abababab

Aber mal angenommern ich habe das richtig verstanden. Wie soll man das denn einsetzen? Ich kann der Variable zwar dynamisch einen Namen verpassen, aber tzrotzdem nichtmehr drauf zugreifen, weil ich den Variablenname auch wieder mit eval ansprechen müsste
*verwirrt*

yankee 14. Nov 2004 09:06

Re: [PHP]: Variabel mit Variabelinhalt
 
Zitat:

Zitat von idontwantaname
wieso $inhalt .= .......
doch nur ein einfaches =

Wenn ich ein einfaches gleich nehmen würde, dann wäre am Ende (wen die Schleife durchgelaufen ist) nur das drin, was beim letzen durchlauf herausgekommen ist, weil der Inhalt immer wieder überschrieben wird.
Mal manuell veanschaulicht:

$Nickname ="meinNick";
$Vorname ="meinName";

$inhalt .=$Nickname."
"
;
$inhalt .=$Vorname."
"
;
führt dazu, dass in $inhalt dieses hier steht:

meinNick
meinname


wenn ich die Punkte weglassen würde, dann würde dort nur noch
meinName

drinstehen.

alcaeus 14. Nov 2004 09:23

Re: [PHP]: Variabel mit Variabelinhalt
 
Hi yankee,

wenn du vor dem Code $felder als global setzt, dann sollte auch der folgende Code funktionieren:
Zitat:

Zitat von yankee
foreach($felder as $f)
{
$inhalt .="Feld ".$f." ist aktiviert??: ".$_POST[$f]."
"
;
}

Greetz
alcaeus

jfheins 14. Nov 2004 09:30

Re: [PHP]: Variabel mit Variabelinhalt
 
Zitat:

Zitat von yankee
Aber mal angenommen ich habe das richtig verstanden. Wie soll man das denn einsetzen? Ich kann der Variable zwar dynamisch einen Namen verpassen, aber tzrotzdem nichtmehr drauf zugreifen, weil ich den Variablenname auch wieder mit eval ansprechen müsste
*verwirrt*

Naja, du kannst statt
Code:
eval("global \$".$f."; \$str =\$".$f.";");
folgendes schreiben :
Code:
global $$f;
$str = $$f

yankee 14. Nov 2004 09:51

Re: [PHP]: Variabel mit Variabelinhalt
 
Zum verständnis poste ich mal die ganze function:

function printlist()
{
global $felder;
foreach($felder as $f)
{
eval("global \$".$f."; \$str =\$".$f.";");
$inhalt .="Feld ".$f." ist aktiviert??: ".$str."
";
}
send_page($inhalt, "", "css/std.css", true);
}

die function send_page macht eigentlich nichts anderes als die Variable $inhalt der print-function zu übergeben, alleridngs fügt es dabei noch ein paar Sachen wie ein div mit navigationsleiste hinzu...

Naja, du kannst statt
Code:
eval("global \$".$f."; \$str =\$".$f.";");
folgendes schreiben :
Code:
global $$f;
$str = $$f
[/quote]
Wenn ich das richtig sehe, kann ich also sowas schreiben (in der foreach-schleife):

$str =$$f;
$inhalt .="Feld ".$f." ist aktiviert??: ".$str."
";

oder gleich:

$inhalt .="Feld ".$f." ist aktiviert??: ".$$f."
";

titus 15. Nov 2004 14:33

Re: [PHP]: Variabel mit Variabelinhalt
 
Was man auch machen kann, find ich persönlich angenehmer:

Code:
$var_1= 'Bla';
echo ${'var_1'};
// Klar die Ausgabe wäre dann `Bla´
In deinem Fall also global ${$f}.

mfG


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz