PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : string soll name einer Variable sein!



Alexander Hinrichs
21-09-2001, 16:41
Hallo!

Ich habe eine Frage. Ich habe ein 'HTML' Formular und als methode ein PHP Script... Ich baue das Formular dynamisch aus einer Datenbank zusammen und habe dementsprechend Variable INPUT Felder.

Nun ist es doch so, dass die namen der Inputfelder in dem PHP Script an die ich das Formular sende als Variablen auftauchen.

Meine Frage ist nun, wie ich diese Variablen ansprechen kann. Ich kann die Variablennamen schon wieder zusammenbauen, jedoch erhalte ich einen String mit dem Namen der Variable. Wie sage ich dem Code dass es sich nicht um ein Script sondern um eine Variable mit diesem Namen handelt.

Gruß Alex

Pingu
21-09-2001, 17:30
Hi,

meinst du das hier: http://www.php.net/manual/de/language.variables.variable.php ?

Irgendwie versteh ich nur die Hälfte.

Gruß
-= Pingu =-

LKH
21-09-2001, 17:56
Hallo,

irgendwie habe ich das jetzt nicht so ganz verstanden. Vielleicht kriegen wir es aber hin:

Eine Formulareingabe in HTML geschieht so:

<INPUT type="text" name="Feldname">

Der Feldname soll nun in einer Variablen stehen. Mit PHP würde ich das so machen:

echo"<INPUT type=\"text\" name=\"$Variable\">

Wenn du nun ein "Allround"-Skript für alle Tabellen haben möchtest, musst du die Feldname der Tabelle z.B. in ein Array schreiben. Die Felderanzahl bekommst du über die Funktion mysql_num_fields(result) und den Feldnamen über mysql_field_name(result, index).

Hoffe es hilft,

Alexander Hinrichs
21-09-2001, 18:11
ups, sorry... Ich sollte meine Posts nochmal korrekturlesen... (-;

Ich erkläre mein Problem besser nochmal.

Ich habe eine Website (.php) und darin wird ein Formular dynamisch erzeigt. Gefüllt mit Daten aus einer DB. In dem Formular ist ein INPUT Feld, welches einen dynamisch zusammengesetzten Namen besitzt. Jetzt möchte ich diese Felder per POST Methode an ein PHP Script übergeben. Habe jedoch das Problem, dass ich zwar den Variablen Namen wieder zusammensetzen kann aber diesen Namen dann nur als String habe. Deshalb wollte ich wissen, ob es eine Möglichkeit gibt, einen String in einen Variablennamen umzuwandeln.

Ich werde mir mal den Teil aus dem PHP Manual mit den variablen Variablen ansehen. Das sieht richtig aus... Vielen Dank schonmal!

Alexander

LKH
22-09-2001, 17:23
Sorry, aber ich verstehe das immer noch nicht.

Du lässt den Namen des Input-Feldes dynamisch erzeugen, richtig? Nach dem posten an ein PHP-Skript steht dann der Feldinhalt in einer Variablen mit diesem Namen. Nun musst den Variablennamen wieder zusammenbauen - das scheint ja zu klappen, richtig?

Ok, dann geht es wie folgt:

$vari = "name"; // der Name der Variablen
$$vari = "irgendwas";
echo $name; //gibt "irgendwas" aus

Ich denke das ist es, was du suchst.

schnuddel
17-06-2005, 13:23
ich habe da ein ähnliches problem.
ich generiere aus einer mysql-db formularfelder von 1 bis x mit dem namen "feld_1", "feld_2" bis "feld_x".
diese werden dann per POST an eine neue seite übergeben, wo dann die daten gespeichert werden sollen in der DB.
Nun ist aber das problem, dass ich zwar die feldnamen generieren kann, aber die übermittelten werte nicht eingelesen bekomme (zb wäre der name "feld_1" bekomme ich keinen wert für den aus dem formular übermittelten wert für feld_1). wie kann ich also den feldnamen erneut generieren (zb ebenfalls über ne "for"-schleife) und den übermittelten wert annehmen lassen? habe schon einiges dazu gegoogelt, abre leider nichts passendes gefunden.

elrond
17-06-2005, 13:36
die Antwort heisst eval:



$var="\$abc=17";


nach der ausführung von



eval($var);


steht die Variabel $abc mit dem Wert 17 zur Verfügung...


PS @schnuddel: mein Kater trägt den selben namen... :D
http://www.illner-blankensee.de/pix/schuddel.jpg

schnuddel
17-06-2005, 15:16
wie bekomme ich diese werte in dem auswertungsformular aufgerufen. wenn ich das so mache, wie du das beschreibst, wird der wert 17 ausgegeben. es soll aber kein wert manuell eingegeben werden, sondern eben der wert für feld_1 bis feld_x (namen aus dem formular).

also so ähnlich

for ($i=1; $i<$max; $i++)
{
$ergebnis = $feld_$i;
// mit den aus dem formular übergebenen werten feld_1, feld_2 usw.
// das i soll praktisch als variablenname mitlaufen
}

p.s.: :) toller kater.... hatte auch mal einen, der so ähnlich aussah

klewan
17-06-2005, 16:46
if(is_array($_GET)) {
$work_array=$_GET;
} else if(is_array($HTTP_GET_VARS)) {
$work_array=$HTTP_GET_VARS;
} else if(is_array($_POST)) {
$work_array=$_POST;
} else if(is_array($HTTP_POST_VARS)) {
$work_array=$HTTP_POST_VARS;
} else {
printf("Input format not supported");
exit(1);
}

for($x=0; $x<count($work_array); $x++) {
echo $work_array[$x];
}
oder
while(list($key, $value) = each($work_array)) {
echo "$key => $value <br>\n";
// feld_1 => wert
}

oder
for($x=0; $x<$max; $x++) {
echo $work_array["feld_" + x] . "<br>";
}

schnuddel
17-06-2005, 17:21
Super!

Besten Dank! So hats bei mir geklappt...



if(is_array($_GET)) {
$work_array=$_GET;
} else if(is_array($HTTP_GET_VARS)) {
$work_array=$HTTP_GET_VARS;
} else if(is_array($_POST)) {
$work_array=$_POST;
} else if(is_array($HTTP_POST_VARS)) {
$work_array=$HTTP_POST_VARS;
} else {
printf("Input format not supported");
exit(1);
}

for($x=0; $x<$max; $x++) {
echo $work_array["feld_$x"] . "<br>";
}

klewan
17-06-2005, 18:24
na dann ;)

die if, else if , dingens bumsen kannste die sparen wenn de weisst das du z.b: immer $_GET verwendest